1、上传并启动android_server(IDA的dbgsrv目录)
2、设置端口转发:adb forward tcp:23946 tcp:23946
3、调试模式启动应用:adb shell am start -D -n 包名/类名
类名可以在AndroidManifest.xml中查看,搜索LAUNCHER对应的android:name
4、IDA attach到目标进程,转换端口到指定调试程序:adb forward tcp:9999 jdwp:进程id(id在attach时记下或通过ps |grep查看)
5、jdb附加到调试程序:jdb -connect com.sun.jdi.SocketAttach:port=9999,hostname=localhost
6、在目标so的目标函数下断点,F9执行到断点,开始调试之
_Z21dvmDexFileOpenPartialPKviPP6DvmDex下断dump出dex文件的脚本:
auto fp, dex_addr, end_addr;
fp = fopen("e:\dump.dex", "wb");
end_addr = r0 + r1;
for(dex_addr = r0; dex_addr < end_addr; dex_addr++)
fputc(Byte(dex_addr), fp)