本帖最后由 Command 于 2024-2-25 16:16 编辑
2024解题领红包 安卓中级的另类解法
概括
不同的地方在于对dex的处理, 目前的文章都是让dex自修复后获取修复好的dex. 我选择使用IDA + 010 Editor对dex手动进行修复.
优点是不需要手机, 也不需要改smali代码和checksum, 比较简单.
灵感来源
步骤
IDA
IDA载入dex看一遍以后可以发现, 有的地方在Method End之后会尾随没有被反编译的字节, 于是怀疑是被隐藏了, 强制将字节反编译后证明确实如此 (IDA中按C, 在弹出的窗口中选Force)
反编译前:
反编译后:
反编译前:
反编译后:
粗略的看一下smali以后就可以知道, 第一二张图对应A.d, 第三四张图对应B.d, 接下来就是用010 Editor进行修复了!
010 Editor
修复A.d:
在dex_class_defs -> class_def中找到com.zj.wuaipojie_2024.A
然后在它内部的class_data -> direct_methods中找到A.d, 再找到里面的code_off
修改code_off为0x1EE4(字节: E4 3D) (地址来源于IDA)
修复B.d
与修复A.d同理, 找到对应的method后将code_off修改为0x1FAC(字节: AC 3F) (地址来源于IDA)
提醒
不要只把代码部分算上, 前面这些字节也要有
IDA如果没有显示红框中内容 (IDA没识别出来), code_off就取"#---------------"下方的地址 (0x1FAC)
成果
|