多亲 F22 利用 mtkclient 获取超级用户(root)权限
为了激活第三方软件安装器(参考:《多亲 F22 使用三方安装器绕过软件安装限制》,最终决定通过 root 的方式。
一开始想使用 mtk 漏洞获取临时 root 权限的方式,但是多亲 F22 的 CPU 是 MT6739 安卓版本是 11,已经不支持此方案了,所以只能查找其他方案。
参考资料
操作步骤
在网上搜索到 多亲 f22root 这个视频作者有提到使用 mtkclient 成功 root。于是按照 mtkclient 的文档中的操作步骤进行处理,但是一直失败,后来又参考了《其他 MTK 手机 root 教程》了解到是有 AB 分区的区别。以下讲一下我这边具体的操作步骤,以 macOS 操作为例。
手机设置
到手机设置中点击“关于手机”找到“版本号”,连续点击 7 次,开启开发者模式。
在设置中点击“系统”找到“开发者选项”,开启“USB 调试”(注意,如果中途切换电脑,可能需要重新关闭和打开调试开关才能识别)。
然后在“开发者选项”将“OEM 解锁”也打开。
解 BL 锁
手机连接电脑,打开终端,输入以下命令进入 fastboot 模式:
bash
adb reboot bootloader
手机重启后会显示 FASTBOOT MODE,然后输入以下命令解锁 BL:
bash
fastboot oem unlock
手机会显示是否解锁 BL,按音量上键选择“是”,但是多亲 F22 没有音量键,尝试按了拨号键和上键,之后解锁完成。输入以下内容重启手机:
bash
fastboot reboot
再次开机后,手机会出现英文提示设备已解锁。注意:解锁 BL 会清除手机数据,所以提前备份。
安装 mtkclient
直接按照 mtkclient 的文档操作即可,这里不再赘述。不过在 macOS 下遇到了一些问题:
- 部分依赖安装包错,后来直接运行,按照报错提示单独安装了缺失的依赖包。
- 提示 QT 版本过低,后来将 shiboken6 和 pyside6 降级到 6.2.4 版本。
获取 root
mtkclient 装好之后就可以连接手机进行 root 了。
- 提取 boot_a 和 vbmeta 分区,原版的 mtkclient 写的是 boot 和 vbmeta,但是多亲 F22 是 boot_a 和 vbmeta,所以需要修改一下。执行后会提示关机,然后同时按音量加减键重启到 brom 模式,这里多亲 F22 是拨号键和挂断(开机)键。
bash
python mtk.py r boot_a,vbmeta boot_a.img,vbmeta.img
- 提取完成后,拔掉数据线,长按电源 10 秒重启手机再连接点击,将 boot_a.img 使用 adb 命令传输到手机上。
shell
adb push boot_a.img /sdcard/Download
- 使用手机系统浏览器在这里打开链接下载安装最新的 mtk 版 magisk(若国内访问失败可以从文章底部的资源下载)。
- 打开 magisk,点击安装(install),从本地 /sdcard/Download 选择 boot_a.img 文件进行修补。
- 将修补后的文件使用 adb 传输到电脑上,重命名为 boot_a.patched。
shell
adb pull /sdcard/Download/这里写magisk修补后的文件名字
mv 这里写magisk修补后的文件名字 boot_a.patched
- 仍然是将手机重启重启到 brom 模式,然后将 vbmeta 和 boot_a 写回手机,执行如下命令:
shell
python mtk.py da vbmeta 3
python mtk.py w boot_a boot_a.patched
- 写完之后,拔掉线长按重启手机。进入 magisk 确认一下 magisk 的安装状态,此时可能提示重启,重启后再次进入,提示安装完成,也就是 root 成功了。