分类 午诺F3分析 下的文章

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

我抓了这货的一些FOTA包
然后发现这货的系统签名居然是test.x509.pem
以下附上我抓到的FOTA包,及真-更新日志
软件版本以内核编译时间计
以下均为原包原签名,无任何修改

次数时间更新日志下载
02017/11/08原始版本
12017/11/15更新内置的QQ_Moleitecupdate.zip
22018/05/26删除内置的雷霆战机
删除内置的QQ_Moleitec
删除内置的WeChat_Moleitec
升级了基带
update.zip
32018/07/26更新归属地数据库update.zip

等待后续更新

最近入了个支持FDD-LTE/WCDMA的功能机做备用机

详细配置

SoC:Qualcomm Technologies Inc MSM8905 (骁龙205) 双核心1.1Ghz
GPU:Qualcomm Technologies Inc Adreno 304阉割版
RAM:512MB LPDDR2-S4B (Hynix H9TP32A4GDBCPR)
FLASH:4GB eNAND (Hynix H9TP32A4GDBCPR)
以上两者为eMCP
屏幕:240x320 2.4英寸 奕力科技(ilitek) 9488 SPI显示屏控制器
摄像头:2.0MP 定焦
电池:1500mAh 贵州航天电源代工
安卓版本:4.4.4
Linux版本:3.10.49