話說昨天參加歡樂的聖誕窩聚拿到一支 ZenFone Live,想當然回到家第一件事情就是.. 刷 root!

其實官方在今年四月就提供了解鎖 app,但目前沒有 twrp,我也懶得製作只想趕快 root 整理一下再想想可以怎麼玩弄這台,於是花了點時間『猜』到最容易刷入 Magisk 的方法。

第一步先研究原廠 ROM,經過實驗發現 emmc_appboots.mbn 裡面沒有解鎖指令,而不少分區在未解鎖時也無法刷入,所以果斷安裝官方解鎖 app 先解鎖再說。 XD

第二步是檢查 boot.img 裡面的 adbd 是否還有『特異功能』,重新打包 boot.imgcmdline 加入 UNLOCKED=Y 後刷入開機,便可以透過 adb root 取得 root shell。

第三步就是刷入 Magisk 啦,把 magisk.zip 解開得到 update-binary,接著把檔案丟入手機並執行:

adb push magisk.zip /data/local/tmp
adb push update-binary /data/local/tmp
adb shell sh /data/local/tmp/update-binary 3 1 /data/local/tmp/magisk.zip

最後 adb reboot 重開機就可以快樂享用 Magisk 囉。

由於過程實在太順暢,以至於手癢多翻了些文件與檔案,意外得到有趣的資訊:

- 手機沒有 frp 與 config 分區
- fastboot oem device-info 有個 dongle unlock
- unlock 加密的應該是 cpuid
- bootloader 支援 CRC 驗證

根據經驗,應該藏在 aboot 分區的最後 512 bytes,果不其然,做了幾次修改我把對應的欄位直接標註在圖裡面:

Tempered 欄位原則上應該用不到,通常是檢查到在未解鎖狀態下刷入非官方的 image 時會觸發,在某些機型上開機出現 Invalid boot image 就是這個欄位搞鬼。有興趣的可以試試看.. :>

App unlock 的欄位很直覺,使用過官方解鎖 app 這邊就會被填入 1,使用者便可刷入第三方 ROM。反過來如果想要把手機鎖回去,這邊改回 0 即可。

Dongle unlock 則是第一次看到 (雖然不是第一次聽到),目前只知道如果這邊設定為 1,開機時 cmdline 會自動插入 UNLOCKED=Y,也就是說使用原廠 boot.img 無需修改也可以直接使用 adb root 拿到 root shell。

於是開始大膽的嘗試:

1. 把手機改回未解鎖狀態 .. ☑
2. 製作包含解鎖資訊的 aboot.img 與 CRC 檔案 .. ☑
3. 刷入修改過的內容解鎖手機 .. ☑
4. 刷入 magisk 取得 root .. ☑

最後寫個 script 包起來,成果在此:https://mega.nz/#F!wgc2GAhT!OdizlOWYJOayVUTdAC5Qyw

不管成功或者失敗,都歡迎留言回報。

Happy Hacking ! :)

Comments

comments powered by Disqus