1. Odex 转 转 dex
参考 Android 源代码,完成逆转换
2. Demo 演示(阿里壳)
安装、开启调试端口、端口转发、反编译、挂接
运行脚本,识别出了 4 个 dex 数据,前两个为自行输入的,第三个是壳的入口点,最后一个是内存中解码获取的数据
将最后的一组数据 dump 出来,然后将 dump 出来的数据进行反编译
反编译因为阿里壳生成的一个类而出现异常,需要进行手动修复
这个错误是由于解析位于该地址的内存数据时出现异常,这部分数据不正确
发现了阿里填充的非法数据,将其改为 0
然后重新进行反编译,反编译成功,打开之前报错的类,里面的函数能够正常识别
将反编译后的 smali 代码替换原代码,删掉 android:name 后重新编译
编译出错,根据错误提示定位到出错代码,发现错误是由于优化后的代码不能够正常编译导致的。
需要对优化后的 Odex 进行修复
Odex 修复脚本
修复后的代码比较
对修复后的 smali 代码进行编译,编译成功,查看 smali 代码发现已经完成了修复