一个月前 oppo reno3 终于开放深度测试了,今天终于申请下来,火速 root,顺带还学习了一波安卓启动保护的知识。关键词:oppo reno3 5g,PDCM00,root,twrp,recovery。
一、手机参数和准备
型号:oppo reno3(等于 oppo reno3 5g)PDCM00
操作时间:2020年08月23日
ColorOS 版本:V7
安卓版本:10
刷机包版本:正式版-A.18
root 方式:twrp。
下载深度测试 apk,申请,等待 30 天后申请通过。
建议准备:到官网下载最新的 ozip 回来,刷入手机,保证ozip 和手机里的操作系统是一致的,防止刷 image 不匹配。
二、解锁 bootloader(会丢失所有数据)
申请通过后,点击“开始深度测试”会进入bootloader,也可以 adb reboot bootloader 进入。
他家的 bootloader 长的巨丑无比,屏幕上就两行非常非常小的字,本来想拍照展示的,但字实在太小了无法拍摄,这两行小字是:
1 2 |
Oppo Verify pass fastboot_unlock_verify OK |
输入 fastboot flashing unlock
1 2 3 4 5 |
➜ fastboot flashing unlock (bootloader) Start unlock flow OKAY [ 24.942s] Finished. Total time: 24.942s |
之后根据屏幕提示,进行按键操作,然后会重启并且丢失所有数据,证明 bootloader 已解开。
三、刷入 twrp 错误的实践过程(请全文先看完,不然会变砖,还要救回来)
使用wzsx150大神提供的 recovery-TWRP-3.4.1B-0313-OPPO_RENO3-CN-wzsx150.img,下载刷入。
1 |
fastboot flash recovery recovery-TWRP-3.4.1B-0313-OPPO_RENO3-CN-wzsx150.img |
错误示范: fastboot reboot recovery ,直接“高级——安装 root”。会导致无法再次进入 recovery,导致无法进入 system,只能进入 bootloader。
然后就变成砖了,可以使用下面的【选择二】救回来。
四、刷入 twrp 正确的实践过程
1 |
fastboot flash recovery recovery-TWRP-3.4.1B-0313-OPPO_RENO3-CN-wzsx150.img |
以下两步二选一:
选择一:
fastboot reboot recovery 后,一定一定一定要在高级里,关闭 AVB,否则无法再次进入操作系统,无法再次进入 recovey,只能用【选择二】去修复。
选择二:
假设你忘了关闭 AVB 了,下面是唯一的救砖办法,关掉 check 就可以开机或进入 recovery 了。
先到官网 https://www.coloros.com/rom/firmware?id=1769171177539911788 下载完整的、对应版本的 ozip 回来,再用工具转化为 zip(网上很多工具),从里面把 vbmeta.img 提取出来,之后执行:
1 |
fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img |
执行时一定要带上 –disable-verity –disable-verification 。
之后,就可以用 twrp 里“高级——安装 root” 的功能进行安装了(它会刷入 SuperSU 和 Magisk,是比较新的版本),据作者说 3.4.1b 的 twrp 不要刷其他 Magisk,可能会抽风,所以就用它自带的了。
wzsx150 也《救假砖》里提到过该方法:
fastboot模式下,使用adb-fastboot工具,刷入vbmeta.img(可以是官方的原版文件,也可以是修改版的)注:要求adb-fastboot工具必须支持这些参数,使用我发布的一键刷入工具里的fastboot工具即可。
五、效果
1 2 3 4 |
adb shell OP4ADD:/ $ su OP4ADD:/ # id uid=0(root) gid=0(root) groups=0(root) context=u:r:magisk:s0 |
六、关于变砖的原因猜测
我自己实践的路线是,先进行了错误示范,然后用 【选择二】把砖救回来了,关于这个现象,网上有人提到过,例如:https://www.juyifx.cn/article/354879296.html
PS:首次刷入recovery,进入twrp-recovery后,需先关闭AVB校验,再签名boot或者刷入ROOT,不会可能导致手机系统破坏,不能开机了。
重要说明必须执行关闭avb2.0校验否则刷完root或者rec开机会变假砖提示系统损坏[汗]
毕竟自己是做安卓的,这个知识点还是可以稍微学习一下的。
首先,我们没有主动修改 vbmeta.img,但问题解决了,说明是参数起了作用,于是去追 fastboot 的源码
1 2 3 4 |
fastboot --help ........ --disable-verity Sets disable-verity when flashing vbmeta. --disable-verification Sets disable-verification when flashing vbmeta. |
https://android.googlesource.com/platform/system/core/+/master/fastboot/fastboot.cpp#976
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// There's a 32-bit big endian |flags| field at offset 120 where // bit 0 corresponds to disable-verity and bit 1 corresponds to // disable-verification. // // See external/avb/libavb/avb_vbmeta_image.h for the layout of // the VBMeta struct. uint64_t flags_offset = 123 + vbmeta_offset; if (g_disable_verity) { data[flags_offset] |= 0x01; } if (g_disable_verification) { data[flags_offset] |= 0x02; } |
可以看到刷入过程中会写一个 flag 到手机里,各自影响 1bit。
这两个 bit 的作用在下方代码:
https://android.googlesource.com/platform/external/avb/+/refs/heads/master/libavb/avb_vbmeta_image.h
1 2 3 4 5 6 7 8 9 10 11 12 |
/* Flags for the vbmeta image. * * AVB_VBMETA_IMAGE_FLAGS_HASHTREE_DISABLED: If this flag is set, * hashtree image verification will be disabled. * * AVB_VBMETA_IMAGE_FLAGS_VERIFICATION_DISABLED: If this flag is set, * verification will be disabled and descriptors will not be parsed. */ typedef enum { AVB_VBMETA_IMAGE_FLAGS_HASHTREE_DISABLED = (1 << 0), AVB_VBMETA_IMAGE_FLAGS_VERIFICATION_DISABLED = (1 << 1) } AvbVBMetaImageFlags; |
说实话,这段注释我读的云里雾里,反正就是跳过两种校验,它们之间的关系我不敢妄言,有点像包含关系,贴三个链接自行理解吧:
https://android.googlesource.com/platform/external/avb/+/refs/heads/master/README.md
https://source.android.com/security/verifiedboot/dm-verity
https://source.android.com/security/verifiedboot/avb
反正就是,vbmeta 会验证其他分区的可信程度;我们修改了 recovery,校验失败,就无法进入 recovery;我们用 twrp 安装了 magisk 和 supersu,就无法进入 system。后来我们关掉了校验,一切就正常了。
关掉校验有两种方式,对应上面的【选择 1】和【选择 2】,一个是用 twrp patch 掉 boot,一个是修改 vbmeta。
wzsx150 大神提供的
recovery-TWRP-3.4.1B-0313-OPPO_RENO3-CN-wzsx150.img
在哪里能下载到啊?焦急… 找了一晚上了,多谢好心人
在他的微博里有更新内容,下文是目前的引用,不保证时效性:
twrp下载地址列表保存到Excel表格文件中,集合文件的下载地址:
天翼云盘 https://cloud.189.cn/t/2InaAvb2eUz2(访问码:vv8a)
恒创互联云盘 https://pan.hchl.top/#/s/oe4T4 密码:wzsx150
请问reno3pro可以用reno3的twrp嘛
这个问题我曾经也困惑过,后来发现reno3 就是 reno3pro,二者是同一款手机。