咕咕咕了一年,历经准备雅思,考雅思,申请学校等一系列事件之后,终于有空来整理F3的Recovery逆向了
午诺F3这个机器尚且还行,但是没有第三方Recovery还是十分令人不适。
一开始我先尝试给它适配TWRP,却因为ilitek的屏走的是SPI,并且没有开源,使用预编译无法驱动显示而作罢
所以想到修改官方Recovery的做法
以下是记录
首先使用QFIL和8909的firehose进行回读Recovery分区的操作,此设备未熔断SecureBoot,所以任意设备之firehose均可启动
1.获得到recovery.img后,使用任意工具执行解压镜像
F3Rec_UnpackImage
2.获取RAMDISK/sbin/recovery可执行文件,放入IDA(32位)版
3.IDA将会自动处理好之前的一切
F3Rec_Ida
4.由于Android是开源项目,此时我们直接阅读源码
寻找到platform/bootable/recovery/verifier.cpp于KitKat分支
找着找着,在此处寻找到了RSA相关!
F3Rec_Source
5.在此使用字符串特征"whole-file"于IDA使用Alt+T使用Text方式搜索该字符串
F3Rec_FoundFunction
在红线处可以见到很明显的一个返回值分支(即MOVS R0,#1)
6.继续阅读源码,一路追踪发现此处隶属于verify_file这个函数
F3Rec_Source2
如图可知,如果#0则代表宏VERIFY_SUCCESS,反之则代表VERIFY_FAILURE
7.此时则思路完全清晰,使用KeyPatch等Patch工具对MOVS R0,#1此处汇编Patch为MOVS R0,#0
直接实现了暴力破解签名(因为任何情况下签名验证结果都为真)
F3Rec_Patched
8.替换修改后的可执行文件至RAMDISK/sbin/recovery,再重新执行打包
9(可选).对背景PNG添加提示,避免混淆Patch后版本和原版
F3Rec_AddWatermark
10.使用fastboot flash写入设备的Recovery分区

知识共享许可协议
本文及其附件均采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

2 条评论

  1. aabb来了 aabb来了

    大佬有这个文件吗,也入手了一款这个,用来怀旧玩游戏还挺不错

    1. Yuu Yuu

      哪个文件?修改过的Recovery还是firehose?

添加新评论