首页
社区
课程
招聘
[求助]Vivo Mediatek机型LK(ABOOT)文件Android Verify Boot校验的困惑和一点研究
发表于: 2021-6-21 23:36 22355

[求助]Vivo Mediatek机型LK(ABOOT)文件Android Verify Boot校验的困惑和一点研究

2021-6-21 23:36
22355

最近折腾的Vivo MTK机型IQOO Z1,研究Root时在AVB部分遇到了一些困难,特整理了一些资料来求助看雪大神,详述如下:

该机型的Bootloader上锁方式极为奇葩,且听细细道来。

在旧版本上,酷安的朋友发现该机型采用了Google提供的简单OEM锁,遂尝试解锁并获取Root。

BL解锁是成功的,但令人困惑的是此LK(ABOOT)并没有提供相应的烧写命令,EDL刷写也存在校验。所以无法刷写打入补丁后的boot.img文件进行测试,前期研究遂终止。

令人惊喜的是,过后不久在XDA论坛爆出了Mediatek机型通用的EDL刷写验证绕过的漏洞,遂可以使用SP Flash Tool进行刷写尝试。我和朋友着手开始了对Vivo IQOO Z1机型Magisk打补丁进行Root的研究。

开始研究之初我们便遇到了困难。该机型BL解锁后并不同于往常的机器,当刷写打补丁的boot后,无法正常引导。经测试该机型为secure boot:no状态时(如下图),仍会对vbmeta,boot文件进行校验,遂Root尝试失败。

之后,我们的测试发现关闭secure boot仅能跳过logo与lk分区的校验。

经过一些控制变量的检查,我们确认了校验vbmeta的相关实现在LK分区中,遂转变思路,转向对LK的反编译和修改进行下一步工作。无奈个人并不是很懂相关知识,在期间也请教了一位会IDA的朋友,奈何找不到相应BSP与源代码,进度推进无果。

使用IDA的朋友判断Vivo将lk进行了魔改。他的工作在于,将auth和verified boot启用返回0(原厂镜像 lk直接忽略了从平台读出来的secureboot状态,和bl锁状态),修改后的LK能正常引导开机(使用官方签名vbmeta的情况下)。遂进一步尝试对vbmeta的修改,对原版vbmeta文件hex写入跳过验证的flag,写入后引导失败,结论是仍存在对vbmeta文件的签名校验。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 4
支持
分享
最新回复 (14)
雪    币: 477
活跃值: (1412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2

怎么关闭的secure boot?还有LK的base是什么?倒是多提供点已知的信息啊

最后于 2021-6-22 11:50 被mb_foyotena编辑 ,原因:
2021-6-22 11:47
0
雪    币: 22
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
mb_foyotena 怎么关闭的secure boot?还有LK的base是什么?倒是多提供点已知的信息啊
这个机型在旧版本可以解锁bl,secure boot就关了。LK似乎是是联发科和Vivo魔改的版本,网上找不到相应的BSP和源代码。可能是基于https://github.com/littlekernel/lk改的,我也不是很确定。需要进一步的协助的话,可以站内私信QQ吗,感谢!
2021-6-22 15:50
0
雪    币: 2089
活跃值: (3933)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
iQOO Z1返厂搞个去年最初版本的系统就能root了,这个是因为新一点的系统把这个漏洞干掉了,所以没法直接烧写自己的内核进去。
2021-6-22 18:40
0
雪    币: 22
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
lhxdiao iQOO Z1返厂搞个去年最初版本的系统就能root了,这个是因为新一点的系统把这个漏洞干掉了,所以没法直接烧写自己的内核进去。
我们能找到的就只有1.7.6 大佬可以详细讲讲吗 不过个人觉得问题不在这,现在主要是去vbmeta的校验有点棘手
2021-6-23 01:01
0
雪    币: 4752
活跃值: (2923)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
6
提供一个不一定靠谱的方案:

fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img

刷的时候加这两个参数会修改 vbmeta 里的两个 flag,不知道有没有用。
2021-6-23 22:35
0
雪    币: 22
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
LeadroyaL 提供一个不一定靠谱的方案: fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img 刷的时候加这两 ...

没有用,现在存在的是vbmeta文件本身的验证,这个命令的本质是对文件的读写,会导致签名改变。

我们的目的也差不多是这个命令的效果,但是存在对vbmeta的校验导致我们后续的修改都做不来。

最后于 2021-6-24 13:20 被mb_iolubvlg编辑 ,原因:
2021-6-24 13:18
0
雪    币: 190
活跃值: (236)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
私信我,我可以试试
2021-6-29 10:34
0
雪    币: 22
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
amazingosp 私信我,我可以试试
抱歉没有转正不能私信 q号:
bash64: MTQ5NzMzNzE3Mg==
@amazingosp @hackbs
麻烦了
2021-7-4 19:53
0
雪    币: 110
活跃值: (156)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
你找的资料也不少了,不少路我也走过
2021-7-9 12:08
0
雪    币: 5
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
提取lk用起来
2021-7-14 14:49
0
雪    币: 5
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
12
lhxdiao iQOO Z1返厂搞个去年最初版本的系统就能root了,这个是因为新一点的系统把这个漏洞干掉了,所以没法直接烧写自己的内核进去。
提取这个版本的lk总在最新系统里
2021-7-14 14:50
0
雪    币: 9745
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
提供一个想法,可能在设备树中没有修改分区挂载时的校验标志位,即使关闭了avb,挂载分区时依然会去校验,但是因为avb关了,因此找不到资源就失败了
2022-2-11 18:12
1
雪    币: 9745
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
还有个问题想请教下,怎么用ida去修改aboot(lk内核)对分区的(比如boot)的验证呢
2022-2-13 14:34
0
雪    币: 0
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
你这lk是mtk版本,aboot是高通的版本。高通的安卓9的系统好像并没校验,可以直接定制system文件
2022-5-6 11:57
0
游客
登录 | 注册 方可回帖
返回
//