使用IDA从内存中dump指定的dex
虽然自己编译了一套能够简单够脱壳的坏境,不过使用上总感觉比较重量级。
今天只想把APK中某个动态解密,加载的dex搞出来,用IDA轻快很多。
步骤1:
首先通过cat /proc/pid/maps查看目标dex文件所在的内存地址:
可以看到我们的起始地址是:5faa2000
结束地址是:5fb36000
后面的deleted表示dex文件加入内存中,就被删除了。
步骤2:
IDA调试上目标进程上,然后运行如下脚本,把这个内存区间的内容全部dump出来(没加固时,dex的内存默认是连续的):
auto fp, begin, end, dexbyte;
fp = fopen("D:\\dump.dex", "wb");
begin = 0x5faa2000;
end = 0x5fb36000;
for ( dexbyte = begin; dexbyte < end; dexbyte ++ )
fputc(Byte(dexbyte), fp);
dump出来得到是一个odex文件,通过下面的命令可以转成对应的smali文件:
java -jar baksmali.jar -x dump.odex -d .