咕咕咕了一年,历经准备雅思,考雅思,申请学校等一系列事件之后,终于有空来整理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分区

11 条评论

  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?

  5. aabb来了 aabb来了

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

    1. Yuu Yuu

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

评论