Re: [心得] Zenfone 6 Magisk root & EdXposed教學

作者: reachhard (今天還是沒睡飽)   2021-01-20 18:35:03
◎前言
這篇文算是舊文重寫,那為什麼要來騙P幣呢?
當然就是因為現在有人拿刀架在我脖子上逼我寫啊(誤
認真,主要原因如下:
1.舊文勘誤
2.前陣子有陸續收到來信問我問題
3.Google調整了SafetyNet的機制(03/2020)
4.XDA論壇大幅度改版,有些舊連結已經失效
5.關於一些模組的問題
基於以上原因,我決定重新寫一篇文修正原文錯誤的地方,
同時整理一下我知道的新資訊給各位參考,
所有我使用的東西連結都會一併整理在文末。
另外還是要提醒,解鎖手機bootloader會失去保固。
◎正文
先簡單說明一下root以及安裝EdXposed的流程。
手機root:
1.解鎖bootloader。
2.安裝Magisk Manager
3.將原廠的boot.img替換成magisk_patched_XXXXX.img。
4.沒錯,其實就這麼簡單。
安裝EdXposed:
1.安裝Riru(Riru - Core)。
2.安裝EdXposed Manager。
3.安裝Riru - Edxposed。
手機root
一、前置作業
0.下載必要軟體與檔案
【注意事項】
在下載Firmware時請務必確定下載的版本與手機上已安裝的Android版本號相符。
Device Unlock App:
https://www.asus.com/tw/Phone/ZenFone-6-ZS630KL/HelpDesk_Download/
ZenFone 6 Firmware:
https://www.asus.com/tw/Phone/ZenFone-6-ZS630KL/HelpDesk_BIOS/
Python 3:
https://www.python.org/downloads/
payload dumper:
見下方說明。
Magisk Manager:
https://github.com/topjohnwu/Magisk/releases
Android SDK Platform Tools (Optional):
https://developer.android.com/studio/releases/platform-tools
ADB Installer (Optional):
https://tinyurl.com/yxq7a9fy
1.解鎖bootloader
【注意事項】
解鎖過程中會還原原廠設定,操作前請備份資料。
另外請在網路良好的環境下操作。
安裝下載的Device Unlock App到手機上並按照指示操作。
確認解鎖後手機會重新開機。
2.設定payload dumper
在電腦上安裝Python 3並加到使用者環境變數。
https://i.imgur.com/icOTa3L.jpg
安裝完成之後開啟:
本機 → 內容 → 進階系統設定 → 環境變數
檢查使用者環境變數中的path是否已經加入python 3。
https://i.imgur.com/6LLSFQJ.jpg
接下來設定要用來提取原廠boot.img的payload dumper。
關於這部分,我之前有收到私信表示操作過程中有出問題的,
但這個老實說我能幫忙的有限,
因為網路上教學百百種,每個設計這些方法的作者用的方式可能也不太一樣,
而且我自己也不懂python所以......
文末會再附上一些連結,如果以下的做法你行不通的話可以再試試別的方法。
這邊就列出我下載的檔案跟操作的方法:
payload_dumper.zip:
https://forum.xda-developers.com/attachments/payload_dumper-zip.4760222/
下載後解壓縮到你要的資料夾,之後在資料夾的路徑上開啟終端機。
不知道終端機怎麼開的同學,點進去payload_dumper的資料夾,找:
檔案總管右上方選單 → 檔案 → 開啟Windows Powershell
https://i.imgur.com/m8BhuPi.jpg
接下來依序輸入以下指令(藍色部分):
pip install virtualenv
virtualenv .py
pip install -r requirements.txt
https://i.imgur.com/PZOw5XN.jpg
完成後沒有發生錯誤的話看起來應該會像上圖那樣,如此一來就設定好環境了。
3.解開payload.bin提取boot.img
接下來解壓縮下載的Firmware,找到"payload.bin"這個檔案,
把檔案丟到payload_dumper的資料夾底下,然後再次開啟終端機。
https://i.imgur.com/gPP9amZ.jpg
輸入指令(藍色部分):
python payload_dumper.py payload.bin
接下來電腦就會開始把payload.bin解開,
並且把檔案寫入到"output"這個資料夾(路徑:payload_dumper\output)。
然後就可以取得要給Magisk 修補的boot.img。
https://i.imgur.com/CBjwK3l.jpg
二、製作並刷入magisk_patched_XXXXX.img
1.利用magisk修補boot.img
把剛剛解開得到的boot.img檔案放到手機內部儲存空間,
接著Magisk Manager安裝到手機上,然後打開Magisk Manager選擇安裝Magisk。
https://i.imgur.com/8ebhMru.png
Magisk提供4種安裝模式,關於這4種的差異可以參考github上的documentation。
這裡使用"選擇並修補檔案"的方法:
選擇boot.img,然後按"開始執行"讓Magisk開始進行修補。
https://i.imgur.com/jAH4ICb.png
https://i.imgur.com/8a2YdcN.png
修補完成後,Magisk Manager會提示修補後的檔案(magisk_patched_XXXXX.img)
已經寫入到手機裡的下載資料夾:
https://i.imgur.com/OIrSrWr.png
2.手機開啟USB Debugging:
設定 → 系統 → 關於手機 → 軟體資訊 → 版本號碼點7次開啟開發人員選項
https://i.imgur.com/LUtTWjI.png
設定 → 系統 → 開發人員選項 → 開啟 USB Debugging
https://i.imgur.com/HbyoGBZ.png
3.使用ADB指令刷入magisk_patched_XXXXX.img
在原本的文章有提到要下載ADB Installer來安裝ADB並加到環境變數,
但是後來累積了一點知識以後發現其實這不是必要的,
只要將Google的Android SDK Platform Tools跟Powershell搭配使用就能執行ADB指令。
優點是方便,不用再特別安裝或是修改任何東西,甚至可以直接放在隨身碟裡面執行;
缺點則是任何操作都必須在Platform-Tools的路徑底下(因為沒有加到環境變數)。
這裡我直接使用Platform-Tools進行操作:
把下載下來的Android SDK Platform Tools解壓縮得到Platform-Tools這個資料夾。
這邊有一個小技巧,
除了用ADB指令把手機裡面的magisk_patched_XXXXX.img提取出來以外,
也可以把magisk_patched_XXXXX.img複製一份到Platform-Tools的資料夾底下,
讓Powershell直接存取這個目錄底下的magisk_patched_XXXXX.img,
另外可以把原廠boot.img也複製一份,這樣刷機時如果遇到bootloop或其他錯誤等等,
就能立刻再刷回原廠boot.img還原。
手機開啟USB Debugging後用傳輸線連接到電腦,
手機畫面會出現像是"是否允許在此電腦上使用USB Debugging"的對話框,
選擇允許。
接著在Platform-Tools這個目錄底下開啟Powershell,
https://i.imgur.com/D9D8Bfg.jpg
輸入指令(藍色部分):
(如果沒有安裝ADB並加入環境變數的話在指令前加上".\")
adb devices
這個指令可以確認手機連接至電腦
adb pull /sdcard/Download/magisk_patched_XXXXX.img
提取magisk_patched_XXXXX.img
adb reboot bootloader
fastboot flash boot magisk_patched_XXXXX.img
https://i.imgur.com/xCYl23E.jpg
手機重開機 root完畢~
https://i.imgur.com/ddefJbz.jpg
如果要使用Platform-Tools目錄底下的magisk_patched_XXXXX.img可以使用以下指令:
ls *.img
或者
dir *.img
這兩個指令可以列出所有現在的目錄底下的光碟映像檔(.img),
這樣可以檢查boot.img或magisk_patched_XXXXX.img有沒有放錯資料夾。
ii .
這個指令可以用檔案總管打開現在終端機所在的目錄,如果你真的找不到資料夾的話。
https://i.imgur.com/21szm7u.jpg
安裝Edxposed
【注意事項】
以下操作相對來說複雜且風險大,請操作時多加注意。
一、前置作業
0.下載必要檔案及軟體:
EdXposed Manager:
https://github.com/ElderDrivers/EdXposedManager/releases
或者可以使用Preview版EdXposed Manager,見下方說明。
EdXposed:
見下方說明。
1.安裝Riru(Riru - Core)
Riru,原名Riru - Core,是執行Riru模組必要的Magisk模組,
而EdXposed就是Riru的模組之一,也是在Android O以後,
Xposed Framework的替代方案/後繼者。
原本Xposed的作者rovo89已無再更新,Android O/P/Q/R若要使用Xposed模組,
就要改用EdXposed,這也是為什麼需要安裝Riru(Riru - Core)。
已經搞不清楚狀況的同學,簡單來說就是:
Magisk(root權限) → Riru(Magisk的模組) → EdXposed(Riru的模組) → Xposed模組
安裝Riru時需要注意以下幾點:
如果是Android 11(R)的話可以用v23以上版本;
Android 10(Q)、9(P)可以用v21.3或v23以上版本,
不同的Riru版本對應的EdXposed版本也不同(見下方說明)。
但是我發現,不管在Magisk Repo、Riru的GitHub Release page,或者網路上,
基本上已經找不太到v21.3所以......
(雖然GitHub上有source code可以自己build啦......)
安裝步驟如下:
在Magisk的Module Repo裡面搜尋Riru,點下載按紐並選擇"安裝",
https://i.imgur.com/Eddy2mL.png
https://i.imgur.com/gcxhSNW.png
https://i.imgur.com/SFnW4FI.png
安裝完畢後重新開機。
二、安裝並啟用EdXposed
1.安裝下載的Edxposed Manager。
2.下載符合自己使用的Riru版本的EdXposed
Edxposed可以到以下三個來源下載:
Magisk Repo:stable build
在Magisk的Module Repo裡面搜尋EdXposed並下載
GitHub Release Page:alpha & stable build
https://github.com/ElderDrivers/EdXposed/releases
Edxposed Manager:canary & alpha build
在EdXposed Manager的首頁內的canary與alpha分頁內下載
https://i.imgur.com/OaorP65.png
https://i.imgur.com/xQ8BsW2.png
Riru與EdXposed對應的版本號如下:
Riru(Riru - Core) v21.3:EdXposed v0.4.6.4 (stable)
Riru v23+:EdXposed v0.5.1.3+ (alpha & canary),建議使用v0.5.1.4 (alpha)
【注意事項】
若要使用canary版EdXposed,請改用新版EdXposed Manager(v4.6.0, Preview ver.):
https://github.com/ElderDrivers/EdXposedManager/issues/170
至於要選SandHook還是YAHFA?
在Github的Release Page上開發者有給出說明:
"YAHFA may cause random soft reboot. If there is any problem, please use
SandHook variant first."
3.安裝EdXposed
若是從Magisk Repo搜尋就直接在Magisk Manager內進行安裝;
若是從其他來源下載,請在Magisk Manager的模組分頁內選取"從本機安裝",
並選擇下載好的zip檔案。
https://i.imgur.com/knsrgIt.png
https://i.imgur.com/Qfi9Pdy.png
安裝完成後重新開機 大功告成~
OTA更新
上次發文我說更新前要先把原廠的boot.img還原再進行更新,
後來這其實是錯的,在這邊更正:
直接下載Firmware放到手機儲存空間進行更新即可,
更新過程中會自動刷入原廠的boot.img。
那更新其實非常簡單:
0.停用所有模組、開啟USB Debugging
停用模組其實不是非做不可,只是想要保險一點的話可以這樣做。
1.下載更新的Firmware
下載完之後重開機,手機就會偵測到有更新檔案,就可以直接進行更新了。
2.安裝更新
就是正常的OTA更新。
3.把下載的Firmware解壓縮,解開payload.bin取得boot.img
見上方"手機root"部分的說明。
4.刷入magisk_patched_XXXXX.img
見上方"手機root"部分的說明。
這樣就更新完畢了~
◎後記
最後來講一下關於SafetyNet的部分,在原本的文章有提到使用EdXposed還有一個好處,
就是可以通過SafetyNet,但在2020年3月,Google改變了SafetyNet的運作方式,
詳細機制我就不多說明了,畢竟我只是個外行人,
有興趣的可以看Magisk作者topjohnwu的推文,這裡就列在下方給好奇寶寶:
https://twitter.com/topjohnwu/status/1245956080779198464
https://twitter.com/topjohnwu/status/1237830555523149824
不過我爬XDA發現好像有些人又可以通過了,我也不確定是為什麼,
疑似是Riru更新的緣故?有興趣的人自己爬文吧~
另版友steven7851有提到一些SafetyNet沒過的解法,這邊也一併列在下方:
https://github.com/kdrag0n/safetynet-fix
https://github.com/Magisk-Modules-Repo/MagiskHidePropsConf
◎Source & References
ZenFone 6 (ASUS):
https://www.asus.com/tw/Phone/ZenFone-6-ZS630KL
Android Studio (Google):
https://developer.android.com/studio
ADB Installer (XDA):
https://tinyurl.com/yxq7a9fy (XDA Download Link)
https://tinyurl.com/y3gvbewp (XDA Thread)
Python:
https://www.python.org
payload dumping methods:
https://github.com/vm03/payload_dumper (GitHub)
https://github.com/vm03/update_payload_extractor (GitHub)
https://tinyurl.com/y2pz7mag (XDA Thread)
https://tinyurl.com/y34k3s64 (XDA Thread)
Magisk (GitHub):
https://github.com/topjohnwu/Magisk (Main Page)
https://topjohnwu.github.io/Magisk/install.html (Installation Instruction)
https://topjohnwu.github.io/Magisk/ (Full Documentaion)
Riru (GitHub):
https://github.com/RikkaApps/Riru
EdXposed:
https://github.com/ElderDrivers/EdXposed (GitHub)
https://github.com/ElderDrivers/EdXposedManager (GitHub)
https://tinyurl.com/y428ozeu (XDA Thread)
John Wu (Twitter):
https://twitter.com/topjohnwu
作者: ArayaHellCat (喵喵)   2021-01-21 10:19:00
推詳細教學

Links booklink

Contact Us: admin [ a t ] ucptt.com