咕咕咕了一年,历经准备雅思,考雅思,申请学校等一系列事件之后,终于有空来整理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 国际许可协议 进行许可。

12 条评论

  1. 你好 你好

    大佬求出手😭

  2. 你好 你好

    大佬您好,可以帮忙修改一下坚果投影仪的固件吗,我自己精简后刷入无效,据说是签名的问题,可以帮忙解决一下签名问题吗,此链接是官方固件https://cloud.189.cn/t/u63qEnRzqaUn

    1. Yuu Yuu

      这个是amlogic的CPU,可以参考小米电视4A的办法刷TWRP,然后刷个Magisk就自由了。

  3. missxi missxi

    大佬,看了您的教程,我给我的一个安卓13平板rec改了一下,是vab分区的设备,它rec是在vendor_boot分区,我解包后在bin找到recovery可执行文件,参考您的改法以及其他教程,找到检查点把CBZ什么的改成CBNZ,但是改完刷入刷自己的卡刷包还是提示签名校验失败,您可以帮我看一下是哪里的问题吗,这是这个文件https://shaihei.lanzouq.com/iRuus245m69e

    1. Yuu Yuu

      如果是Android13,不建议用这种改法了,建议直接拿预编译内核构建TWRP更好一些

  4. lsq726 lsq726

    大佬 看了您的 教程本想照葫芦画瓢.把乐视848的rec的签名搞掉..无奈 无奈是搜索关键字后,,是真 看不懂..能否请大佬出手帮忙 修改一下子?

    https://pan.baidu.com/s/1t-nEY4LVScLaVCYsQ1-tGA?pwd=u56e

    1. Yuu Yuu

      已经尝试修改了,这个乐视改动的太多了,不能用一般的修改AOSP Recovery的办法来改。建议直接用官方预编译内核移植第三方Recovery

      1. lsq726 lsq726

        感谢大佬帮忙尝试修改,
        乐视挺不厚道,
        这个官方预编译内核移植第三方rec ,我这菜鸟是搞不定,能介绍具体流程吗?

        1. Yuu Yuu

          能不能移植还要取决于SOC型号
          这个我搜了下,是Amlogic晶晨的U?

          1. lsq726 lsq726

            是mstar 6a848

  5. aabb来了 aabb来了

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

    1. Yuu Yuu

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

添加新评论