IDA 对 so 的动态调试


将IDAPro根目录下dbgsrv 目录下的android_server(模拟器用android_x86_server,这里还是用真机好点)文件push 到安卓设备(比如/data/local/tmp/目录)下,权限改为777,并运行

端口转发adb forward tcp:23946 tcp:23946

安卓设备安装并运行程序

IDA打开对应设备的so文件(arm, armv7, x86什么的)的Debugger -> Selecte Debugger -> Remote ARM Linux/Android Debugger -> OK, Debugger -> Process options -> HostName改成127.0.0.1,端口改成上面对应的 -> OK,Debugger -> Attach to process,从列表中选出对应的进程(没有root权限的机器好像显示不出来)

在对应代码行下断点,F9运行即可进行动态调试,右边的寄存器面板可以直接修改寄存器的值

其他一些需要注意的:

  • init_array先于JNI_OnLoad会在so加载的时候就开始执行
  • 导出表没有的函数有可能是在通过JNI_OnLoad动态注册的, 查找动态注册的方法是打开segment视图, .data.rel.ro.local段中放置的即为动态注册的函数(从上往下分别是函数名, 函数签名, 函数地址)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM