1.有选择性选择设备
adb devices -l
List of devices attached
emulator-5554 device product:sdk model:sdk device:generic
adb -s emulator-5554 shell
root@android:/ #
2.调试模式启动程序
am start -D -n com.yaotong.crackme/com.yaotong.crackme.MainActivity
此时应用程序会等待被调试。此时可以做IDA附加等动作。
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8604
流程
执行android_server
端口转发 adb forward tcp:23946 tcp:23946
调试模式启动程序 adb shell am start -D -n 包名/类名
IDA附加,Debugger->Debugger Options 可以设置调试选项。
静态找到目标函数对应所在模块的偏移地址
Ctrl+S找到对应模块的基地址,两个地址相加得到最终地址
G跳转至地址,然后下断
F9运行
执行jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700
断下,进行调试
3.kill用法
#define SIGCONT 18
#define SIGSTOP 19
3.1 kill -19 <pid> 暂停进程
3.2 IDA 附加,下断点
3.3 kill -18 <pid> 运行进程
kill的思想是暂停反调试,使得可以附加,后续想继续调试,只有一个思想,就是阻止程序结束,即暂停进程->调试器附加->阻止自杀->尽情调试.
4.脱壳
if(dvmDexFileOpenPartial(addr,len,&pDvmDex) != 0)
{
ALOGE("Unable to create DexFile");
goto bail;
}
libvm.so 载入IDA,搜索字符串:Unable to create DexFile