Yuu

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


设备信息

项目参数
SoCMT6580
RAM1GB LPDDR2
Flash8GB eSD
显示540p 5寸 IPS LCD
电池2000mAh
Android版本6.0
内核版本3.18.19(arm)

感谢
GitHub - TeamWin/Team-Win-Recovery-Project

更新日志
首次发布

截图
TWRP_P7

下载
数据丢失

Bug

Bug代号Bug详情发现时间
TWRP-P7-BUG-00使用exFAT挂载外置SD卡时文件名中文字符乱码2019/11/29

设备信息

项目参数
SoCMSM8996
RAM3GB LPDDR4
Flash32GB eMMC5.1
显示1080p 5.3寸 IGZO
主相机22.60MP
副相机5MP
电池3000mAh
Android版本6.0.1->7.0->8.0.0
内核版本3.18.20->3.18.31->3.18.71(arm64)
运营商au, SoftBank, 公开版

感谢
Qualcomm CodeAurora:Code Aurora
Team Win Recovery Project:GitHub - TeamWin/Team-Win-Recovery-Project
SHARP OSS:SHV34|オープンソースソフトウェア|開発者向け情報|AQUOS:シャープ

开源
saga0324/android_device_sharp_xx3

更新日志
首次发布

截图
TWRP_SHV34

下载
(不公表,如果需要请私聊)

BUG跟踪

Bug代号Bug详情发现时间
TWRP-XX3-BUG-00仅通过USB充电时才更新电池百分比2018/11/09
TWRP-XX3-BUG-01USB连接易崩溃2018/11/09


最近闲着没事,花20元入了部日本老人机,型号是富士通F-12D,2013年的产品,是富士通触摸屏老人机らくらくスマートフォン系的一代目机,先列一下详细配置

详细配置
CPU:Qualcomm MSM7630_Surf 单核心1.4Ghz
RAM:1GB
ROM:4GB(用户分区:2.2GB)
屏幕:4.0寸 480x800
主摄像头:810万像素 AF
副摄像头:32万像素 FF
电池容量:1800mAh
安卓版本:4.0.4
Linux版本:3.0.8

Toolkit下载
下载

请注意软件版本号
F12D_About

提权到SYSTEM权限
1.打开USB调试,安装Toolkit里的system.apk(PS.记得在adb install后面加个-r,否则无法安装!)
2.桌面会出现以下图标
F12D_ApkInstalled
3.打开这个程序,你会发现我们成功的在终端模拟器里把权限提到了SYSTEM
F12D_SystemReady

植入临时root
1.发送Tookit内的mkdevsh和onload.sh到/data/local/tmp
2.chmod 777 mkdevsh和onload.sh
3.接着,在System权限的终端模拟器里执行onload.sh
F12D_Onload
4.如果上一步没有任何报错,在adb shell内执行/dev/sh
F12D_AdbRoot
成功的把权限提升到了root

永久root
现在已经临时root了,于是可以往system里写入su来永久root

# 挂载System为读写
mount -o rw,remount /system
# 复制SU到System分区
dd if=/data/local/tmp/su of=/system/xbin/su
# 修改组
chown root.root /system/xbin/su
# 修改权限
chmod 6755 /system/xbin/su
# 挂载System为只读
mount -o ro,remount /system
# 立即写入
sync;sync;sync
# 重启
reboot

收尾
1.安装SuperSU,选择一般方式更新su,稍等即可获取完整root权限
2.卸载提权程序
adb uninstall com.android.vpndialogs

完成

感谢
DoCoMo Arrows Me F-11Dで永久 rootを取る方法
HOWTO-ROOTING-AndroidのAPK署名の脆弱性を使ったroot化