碰到幾個外國人寫信詢問如何捐款贊助,有點感動,不過一直沒有空去弄 paypal 帳號,這幾天剛好老婆工作上需要設定了一組,就順便弄了贊助連結囉。 :)

如果您覺得我的文章或者程式有幫助到你,歡迎捐款贊助,金額不限,心意最重要。

If you find my applications useful or like my blog, you are welcome to support future development via donation:
==> Donate to shakalaca for his work <==

前幾個星期趁著 1111 特價買了一台 Surface Pro 4 (最低階的) 一部分原因是想要在 Windows 平台上測試一些刷機工具,果然就讓我碰到惡名昭彰的 adb sideload 時出現 cannot read 的問題,稍微花了點時間研究一下,最後追到死在 malloc 那邊。

Continue Reading →

年初買的 Remix Mini 在 root 完沒幾天後就被我搞掛了,而且很不幸的是寫信問原廠有沒有 Stock ROM 或者 factory image 可以讓我還原,結果跟我說不提供這種東西,當下只覺得 WTF ..

不過就在最近! 官方終於釋出相關檔案與步驟: How to flash Remix OS img file onto Remix Mini 馬上拿出塵封已久的機器,並且下載相關的檔案準備回魂我的 Remix Mini。其實步驟很簡單:

1. 安裝 [PhoenixSuit](https://www.dropbox.com/s/x7mnzui95c4459z/PhoenixSuit_EN_V1.0.8.msi?dl=0) 與下載 Factory Image [factory_image_rm1g_B2016110301-secure.img](https://osdn.net/projects/remixos/downloads/66607/factory_image_rm1g_B2016110301-secure.img/)
2. 開啟 PhoenixSuit 選擇 factory image
3. 把 Remix mini 開到刷機模式,我是按著 reset 後插入電源開機,程式會自動偵測到裝置並且開始刷入檔案

呃,不過我一直卡在刷到 54% 左右就跟我說錯誤的狀況.. 心想該不會我的 Remix Mini 已經嚴重到連刷機模式都無法救回了嗎?不死搜尋一下網路,最後在 http://linux-sunxi.org 找到 LiveSuit 的 Mac 版本,同樣的步驟居然可以成功刷入 ! 看來應該是驅動有問題,不過既然機器救回來了有空再找找看吧。過幾天有空再來試試看 root & xposed 有沒有辦法刷入.. :)

距離上次發佈跳了很多版號,相關討論可以上 ZenTalk 爬文,總之歷經不同型號手機的『洗禮』還有 SafetyNet 改版,以及易用與除錯的需求,最後來到了這一版。

不過對於 Android 6.0 使用 systemless root 的朋友來說,目前已經不能單純靠安裝 app 避開偵測,得重新刷 root 並且配合我的修補 (主要是環境變數 PATH 不能包含 /su/ 的路徑,因此得還原 SuperSU 所做的修改)。而修補又為了相容 supolicy 的使用,因此需要在 SuperSU 的設定檔案 (.supersu) 加入 BINDSYSTEMXBIN=true

主檔案在此:https://mega.nz/#!ghsGkLCA!ucsM7pglynyNHjaSj7g5_iUW7tohpYTwTcsprqm6olU
SuperSU 的修補檔案在這:https://mega.nz/#F!NwUAxKjA!lodsOX94Wd4I5HfBFR3jJg

重新刷入 SuperSU.zip 之前請先執行下面幾步:

  1. 把 custom_ramdisk_patch.sh 推到 /data
  2. 刪除 /data/su.img
  3. 以 adb shell 進入執行 echo BINDSYSTEMXBIN=true >> /data/.supersu

完成後刷入 SuperSU.zip 重開機,安裝 RootSwitch 並快樂切換,當然測試過的手機不多,所以請斟酌使用並小力回報。

Continue Reading →

Systemless root 是個蠻有趣的概念,在 Android 4.x 以前的時代 root 手機不外乎就是在 /system 下塞 su 與管理 app,到了 5.x 之後引入了 daemon 並且繞接 app_process 取得權限,之後加入的檔案越來越多 (比如 supolicy)。不過在 Android 6.0 強制 Block-Based OTA 之後,在 /system 植入 root 似乎不是一個很好的 idea,於是有了 systemless root 的出現,藉由修改 boot.img 的方式搭配 mount 指令與調整 SELinux 的 policy 達到 root 手機的目的,而收到 OTA 升級通知後,也只要刷回 boot.img 與 recovery.img (optional) 即可無痛升級,之後再進入 twrp 把 root 刷回來即可。

Continue Reading →

基本上算是 ZenFone 專屬的工具,當初會想做這工具不外乎有些程式會偵測手機是否有 root (比如某支付啊,某可夢啊) 試過目前可以找到的隱藏 root 程式都有各自的優缺點 (純粹個人喜好就不列出來比較了) 而且在我自己做的『預先 root system.img』與『精簡版』都有些小狀況,所以決定自己跳下來看看這水有多深 XD

檔案下載

1.0.3 https://mega.nz/#!owUGFJKS!YfaEL3zXrZVPlGol62HFGp9gzPyNiwCc6f0g4lJAZxc

主要支援機種

ZenFone 2 Laser (ZE500KL / ZE550KL / ZE601KL)
ZenFone Selfie (ZD551KL)
ZenFone ZOOM (ZX551ML)
ZenFone 2 (ZE551ML / ZE550ML)
ZenFone 5 (A500CG)
ZenFone 6 (A600CG)

使用前的注意事項

1. 請熟悉 fastboot / adb 的使用,知道如何回復原廠 ROM,萬一服用後無法開機,請自行刷回原廠 ROM 還原。
2. 目前只針對 SuperSU 設計,其他的沒測試過。
3. 支援 Android 5.0,關閉 root 後重新開機會自動還原 root。如果你的手機不在列表裡面,原則上還是可以使用,但切記 重開機前一定要打開 root,不然就永久 unroot 了。
4. 理論上支援 Android 6.0,不過如果是 systemless root 可能還有些小問題需要長時間測試。

原理解說

  • 以 Android 5.0 來說,主要針對 su 與 daemonsu 這兩個檔案更名,但因為 root 時將 /system/bin/app_process 連結到 /system/xbin/daemonsu,更名會讓系統無法正常運行 (小狀況,比如無法安裝新 app..),所以保險的作法是連結回原本的 app_process{32,64},可是這麼做重開機後 root 便會消失,得花額外的精力重新 root。幸好之前研究 ZenFone 系列 root 實作過 OTA survival 功能,於是借用相關檔案重建連結 (還原 root),這也就是為什麼只有 ZenFone 系列手機不需要在重開機前打開 root。以 x86 系列來說是 /system/bin/ct_monitor,而 arm64 系列來說就是 /system/bin/qrngd,只要先設定好 SELinux policy 即可掛載 /system 還原相關檔案。

  • Android 6.0 除了前面的步驟外,還多了 /system/bin/.ext/.su,而且 SELinux 必須為 Enforcing (某些 root app 會自動設定 SELinux 為 Permissive)

  • 最後要處理 systemless root,相關檔案都放在 /su,實際上是 /data/su.img 的掛載。更名不是太大的問題,問題在於如果要在重新開機時還原,一定得修改 boot.img,但身為奶爸哪來這麼多美國時間處理一海票的 case 呢?所以最簡單的處理方式就是:將 /data/su.img 複製一份,並且將現在使用的 su.img 改名,如此一來重開機時就會自動掛載沒有修改過的 su.img,照常使用 root 權限,唯一的缺點就是要花 96MB 的空間儲存額外的 su.img (還好空間還算便宜啦)。不過這種修改方式可能會產生一些小問題,日後會持續改善。

源碼呢?

因為主體是 script 所以我就把相關檔案丟到 gist 上啦,有興趣的可以參考參考,至於 android app 基本上.. 就只是個載體,不重要啦。:P

我有其他問題!

歡迎來 ZenTalk 討論,也許其他 Zen 粉有與你相同的問題或想法 :)
https://www.asus.com/zentalk/tw/thread-173542-1-1.html

分享一下個人打包給 Genymotion 使用的工具軟體,方便開發者或玩家從 Play Store 下載 apps or games,包括:

  • ARM Translation (5.x & 6.x)
  • Google Apps (5.0, 5.1, 6.0) 裡面的檔案主要是設定 Google Account 與 Play Store,打包自 Open GApps Project pico 版。
  • SuperSU 2.65 版

直接丟入模擬器的視窗,依照指示按 OK 鈕,重開即可使用。

檔案在這:https://mega.nz/#F!JhcFwKpC!yfhfeUzvIZoSdBgfdZ9Ygg

目前 Genymotion (2.6.0) 上面老早可以使用 Android 6.0 的 image,而根據網友的回報現在要跑 ARM Translation 比以前簡單多了,無需修補 ramdisk,把需要的檔案丟入虛擬機器後重新開機,內建的 /system/etc/init.androVM.sh 腳本檔便會自動啟用 ARM Translation 環境。

檔案在這:https://mega.nz/#!p4lFlCZR!TFsb8dMqNdAJjKoCDPDDvNtcQdEB0-KkVlTgQVwG20s
主要檔案來自 http://dl.android-x86.org/houdini.php?v=6_x

使用步驟:

  • 在 Genymotion 裡面建立 Android 6.0 的模擬器。
  • 開機後把 ARM_Translation_Marshmallow.zip 拖到模擬器視窗中,讓他自動安裝。
  • 完成後重開模擬器即可。

最近使用 Genymotion 時,透過拖放的方式刷 zip 進去都會出現這樣的錯誤訊息,明明很久沒更新版本 (2.6.0) 怎麼突然就出問題了?後來想到 Android SDK tools 有更新,於是去 Genymotion Player 的 Settings 裡面,在 ADB 分頁中使用 “Use Genymotion Android tools (default)”,重新啟動 player 後就可以順利丟入 zip 檔案囉。

[Xposed] Patched 2.7–experimental1 Installer 主要是最近 ASUS 更新了 ZenFone 一代 4.4.2 的 ROM,加入了類似這樣的 patch,導致升級後安裝 XposedFramework 手機無法正常開機 (軟磚)。

解法不難,拉出 v58 的 Xposed 再針對 AndroidRuntime::start 的呼叫做些修改,即可編譯出相容新舊版 Android (4.4 以下) 的 Xposed,翻了下 google 似乎沒人處理 x86 這塊,所以花了點時間編譯新版讓有需要的朋友使用。

請由此下載:https://mega.nz/#!09VTmSJT!BtLBJl5t14yxIx6cMSOP_bc6ygV7qQTV3tLfcpMglZk

感謝 rovo89 與其他貢獻者無私的付出,才有這麼棒的 framework 可用。 :)