环境 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 2 adb pull /sdcard/boot.img . ./magiskboot unpack boot.img
法2 手机 1 ./magiskboot unpack /sdcard/boot.img
反编译 使用IDA64
打开kernel
,选择ARM processer
、64-Bit
。 执行Python脚本:
1 2 3 import idcfor i in range (0 , 0x100000 ): idc.create_insn(i)
然后等待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 2 3 ROM:00000000000FB8A8 loc_FB8A8 ; CODE XREF: sub_FB804+14↑j ROM:00000000000FB8A8 35 00 80 52 MOV W21, #1 ROM:00000000000FB8AC 0A 00 00 14 B loc_FB8D4
1 2 3 4 5 6 7 8 9 ROM:00000000000FB8D4 loc_FB8D4 ; CODE XREF: sub_FB804+74↑j ROM:00000000000FB8D4 ; sub_FB804+90↑j ROM:00000000000FB8D4 ; sub_FB804+A8↑j ROM:00000000000FB8D4 E0 03 15 2A MOV W0, W21 ROM:00000000000FB8D8 F4 4F 43 A9 LDP X20, X19, [SP,#0x20+var_s10] ROM:00000000000FB8DC F6 57 42 A9 LDP X22, X21, [SP,#0x20+var_s0] ROM:00000000000FB8E0 F7 0B 40 F9 LDR X23, [SP,#0x20+var_10] ROM:00000000000FB8E4 FD 7B C4 A8 LDP X29, X30, [SP+0x20+var_20],#0x40 ROM:00000000000FB8E8 C0 03 5F D6 RET
参考 绕过Android内核模块加载验证