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