Android逆向经验总结

来源:互联网 发布:淘宝店主实拍 编辑:程序博客网 时间:2024/06/06 05:52
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

0 0
原创粉丝点击