环境
Redmi K40 Gaming、MIUI 12.5.8
提取boot.img
查看文件名:
1 | ls -al /dev/block/by-name | grep boot |
提取boot.img:
1 | dd if=$(readlink /dev/block/by-name/boot_a) of=/sdcard/boot.img |
提取内核
法1 PC
自己编译或者使用affggh/magiskbootkitchen
1 | adb pull /sdcard/boot.img . |
法2 手机
1 | ./magiskboot unpack /sdcard/boot.img |
反编译
使用IDA64打开kernel,选择ARM processer、64-Bit。
执行Python脚本:
1 | import idc |
然后等待IDA分析结束。
定位check_version
使用010Editor搜索字符串disagrees about version of symbol,复制地址。
在IDA64中查看交叉引用,定位到的函数即为check_version
Patch
将函数体的第一个跳转Patch为B指令。然后F5,查看返回值是否为1。
例如:CBZ X2, loc_FB8A8
Patch为:B loc_FB8A8
相关代码:
1 | ROM:00000000000FB8A8 loc_FB8A8 ; CODE XREF: sub_FB804+14↑j |
1 | ROM:00000000000FB8D4 loc_FB8D4 ; CODE XREF: sub_FB804+74↑j |