摘要:
本文主要讲解如何打造安卓测试机,并刷机google原生系统、部署Magisk对测试机进行root的常用方式;并对一些常见问题进行思路解答。本文适合新手学习,大佬请绕过
本次实验使用的设备及环境如下:
Nexus 5x 测试机一部(闲鱼100-150即可购买一部)
镜像下载的网站: https://developers.google.cn/android/images?hl=zh-cn#angler
TWRP Recoery刷机镜像站: https://twrp.me/
Magisk 下载: https://github.com/topjohnwu/Magisk/releases
Lsposed 下载: https://github.com/LSPosed/LSPosed/releases
platform-tools 工具下载: https://dl.google.com/android/repository/platform-tools_r34.0.4-windows.zip
驱动 :https://developer.android.com/studio/run/win-usb?hl=zh-cn
首先说一下,为什么使用Nexus的设备,一个是成本低,一个是更适合做测试机,解BL锁不需要太麻烦,同时支持的各种原生镜像的种类也比较多,刷机的方法也比较成熟
现在适合做测试机的设备其实很多,除了最优选的Nexus、Pixel外,现在的一加、小米等骁龙处理器的设备都可以做测试机,只不过渠道限制的比较多
而由于安卓7.0以上和以下,信任证书的问题,所以会有一些其他的操作,包括Xposed框架和Lsposed框架的选择、信任证书的安装方式、甚至是安装不同版本的Magisk
这里面提到了Magisk 和 Lsposed;Lsposed框架是现在比较新的框架了,但是他似乎只支持安卓7.0以上的版本;而Magisk 并没有这个限制,但是低于26.0的Magisk 版本会有很多好的插件用不了,比如说Shamiko 插件,更适合躲避root检测,但是低于26.0的Magisk 是用不了的,同时26.0的Magisk 并不适合Recoery 强刷,虽然刷完了不对镜像进行修复也可以使用部分root功能,但是确实是存在一定的缺陷,所以大家在测试的时候都需要进行避坑
Bootloader 模式
首先第一步是如何进入Bootloader模式:
此处以Nexus5x为例,大致有两种方式
方式一:
手机能开机,打开开发者模式,信任计算机后,利用ADB功能进入bootloader;adb工具大家请根据platform-tools 工具下载即可,此处不演示添加环境变量的步骤,大家可以选择添加,也可以选择不添加
adb devices
出现这种情况不要慌,只需要信任计算机即可
执行该命令是看看有没有adb可连接的设备,如果后面显示的事device那么就可以了,如果是offline,那么请执行adb kill-server或重启计算机、手机;或使用方法二进入bootloader
adb reboot bootloader
想要刷机,首先第一步是需要确认手机的BL锁是解锁的状态,由于不同的手机厂商对手机解锁的方式不一样,所以这里仅仅是展示Nexus 5x解锁的样子,如果不是这个样子,那么请执行
fastboot oem unlock
方式二:
按住手机电源键 + 音量下键,直至出现bootloader页面松手即可进入bootloader模式
接下来是第一个坑,进入到bootloader模式后,fastboot devices识别不到设备,这个时候需要大家手动更新计算机的驱动
https://developer.android.com/studio/run/win-usb?hl=zh-cn
电脑按win+x选择设备管理器,右键选则更新程序软件,在弹出的对话框中选择浏览计算机以查找驱动程序的软件,选择浏览,然后选中下载的驱动的文件夹(不用选的很具体,电脑会自动搜索安装,建议选arm、x86的上一个文件夹)
刷机镜像选择
这里推荐大家下载安卓8.1的OPM1.171019.011镜像包
大家可以看到,笔者将第二个压缩文件里的东西也给解压出来了,一会这是第二个坑
常规来讲,这个时候,大家执行
fastboot devices
这个时候,只需要在解压目录下,执行flash-all.bat ,而后等待刷机结束就可以了
这里的第二个坑,就是有的环境会报错,bat脚本会无法执行里面的fastboot -w update image-bullhead-opm1.171019.011.zip
命令,以至于系统找不到boot.img、system.img等包,所以需要我们手工的更改一下脚本
如果大家遇到了特殊情况,只需要把注释的内容覆盖就可以了,记得将image-bullhead-opm1.171019.011.zip文件解压到当前目录
fastboot flash android-info android-info.txt
fastboot flash boot boot.img
fastboot flash system system.img
fastboot flash recovery recovery.img
fastboot flash vendor vendor.img
Magisk的部署
此时手机是可以正常开机的,大家记得打开开发者模式,而后重新信任计算机后即可使用adb进行操作,大家需要自行下载magisk的apk安装包进行手工安装
adb install magisk.apk
安装成功后,会提示success,这个时候手机里会有magisk的图标,大家打开magisk软件,因为笔者没有留图,所以大家凑合看一下
上图是root成功的图,正常的话zygisk是否的,大家需要点击安装按钮,取消所有的选项,然后选择并修补一个文件
修补的文件,其实就是镜像包里的boot.img文件,大家需要将这个文件push到安卓手机能访问到的目录,然后选中,点击修复,待magisk修复成功后会在日志内提示文件的位置,大家记住文件在什么地方,导出修复好的img包
adb pull /sdcard/Download/magisk_patched-24000_GXe4N.img
adb reboot bootloader
fastboot flash boot magisk_patched-24000_GXe4N.img
fastboot reboot
这个时候工作并没有完成,当手机重启后,大家发现,超级用户功能可以使用,并且出现了卸载magisk功能的时候,这个时候说明magisk的root成功了
此时点击首页右上角设置按钮
下滑至Magisk模块,划开Zygisk功能并重启手机,才算是真正的结束配置
这个时候第三个坑来了,很多手机都在这个时候起不来了,手机变砖头了,卡在google开机页面怎么也进不去系统,这个时候怎么办?
按住手机电源键+音量下键,直至重新进入到bootloader页面,这个时候大家不需要重新点击flash-all.bat 进行系统重装,仅仅需要执行以下命令即可修复
fastboot flash boot boot.img
需要注意的是,boot.img就是你放进手机里修复镜像用的东西!这个时候不出意外都可以开机了,但是尴尬的就是root失效了
TWRP进行Recovery强刷root
TWRP大家最上面的地址,而后选择nexus 5x机型,下载最新的twrp-3.7.0_9-0-bullhead.img 即可
这个时候不要重启手机,让手机保持在bootloader页面,输入以下命令
fastboot flash recovery twrp-3.7.0_9-0-bullhead.img
等所有的都显示ok之后,按手机音量下键,选择Recover mode,然后按电源键即可进入recovery修复模式
等待手机重新启动后,即可进入twrp功能,这个时候计算机会自动连接手机文件夹,大家可以将magisk apk安装包复制到手机能访问到的文件夹,然后利用twrp的 install功能安装app,他会自动刷root,这样成功后重启的手机即可正常开机,不会卡在开机页面进不去了
系统根目录证书的导入
上面提到,安卓7.0以上的系统默认只进行手机根目录的证书,所以大家需要将burp的证书导到系统根目录,但是这个时候的根目录是只读模式,需要我们重新挂载system目录才行
附上burp证书修改的方式
openssl x509 -inform DER -in burp.der -out burp.pem
openssl x509 -inform PEM -subject_hash_old -in burp.pem
openssl x509 -inform DER -in burp.der -out 9a5ba575.0
常规操作是直接将证书导入到手机里
adb push 9a5ba575.0 /system/etc/security/cacerts/9a5ba575.0
但是竟然说有坑,这里是第四个坑
网上几乎所有的解决方式都是:
adb root
adb remount
adb disable-verity
adb root
adb remount
adb push 9a5ba575.0 /system/etc/security/cacerts/9a5ba575.0
很不好意思,adb root其实在这个系统里是成不了的,这里就是第5个坑
而几乎网上所有的解决方式都是,下载超级adbd工具,给上root权限,下载最新版的adb工具,但是很不幸的是,实际上在安卓7以上这个方法就不灵了,这就是第6个坑
不要慌,这个时候依然可以解决,而这里依然有两个解决方案,不推荐直接adb shell ; su ; chmod 777的方式解决问题,这么玩会把手机再次变砖头,也不要chown 更改所属
执行
adb push 9a5ba575.0 /sdcard/
adb shell "su -c 'mount -o remount,rw /system'"
或者
adb push 9a5ba575.0 /sdcard/
adb shell
su
mount -o rw,remount -t auto /system
cp /sdcard/9a5ba575.0 /system/etc/security/cacerts
这个时候就解决了证书的问题,大家也可以选择安装MT管理器APK,然后给这个工具root权限,就可以直接在工具里把证书导入到system目录