1、以调试模式启动程序
adb shell
am start -D -n 包名/入口activity
2、启动ida勾选3项下断点对libdvm.so的dexfileparse函数下断点,ida先不要运行
运行当程序断下的时候,r0寄存器的值就是dex文件的首地址,r1的值就是dex文件的大小,然后运行脚本就能dump出dex文件。
3、运行jdb命令
jdb -connect 包名:hostname=127.0.0.1,port=8601(这里不是8700,DDMS里面前面的那个值)
上面的命令相当于不开DDMS时动态调试执行的
adb forward tcp:8700 jdwp:pid命令
4、运行ida断下运行脚本文件dump处dex文件
下面打开运行脚本界面
dexfileparse
ida脚本
static main(void)
{
auto fp,dexAddress,end,size;
dexAddress=0x77607640;
size=0x19e118;
end=dexAddress+size;
fp=fopen(“d:\1.dex”,“wb”);
for(;dexAddress<end;dexAddress++)
fputc(Byte(dexAddress),fp);
}
来源:CSDN
作者:haodawei123
链接:https://blog.csdn.net/haodawei123/article/details/104123222