IDA动态调试so

时间:2024-04-02 07:49:39


IDA是一个可以用来反编译so、dll、exe、sys等文件的反编译工具,不过IDA无法直接修改汇编代码,这个相对于Ollydbg来说是一个不足的地方,不过它可以通过修改hex代码来修改指令。下面是关于IDA调试android so的介绍


 IDA调试so步骤(前提是手机必须root,因为要attach一个进程,修改文件权限等必须有root权限):

1. 复制IDA 6.8\dbgsrv\android_server到/data/local/tmp目录下

2. 进入/data/local/tmp目录,执行chmod 777 android_server

 IDA动态调试so

3. 另起一个窗口,执行adb forward tcp:23946 tcp:23946,这步很重要,没执行的话就会报错说找不到连接,目的是将PC上所有23946端口通信数据将被重定向到手机端23946端口server,这边就用到了上面开启的android_server了

 IDA动态调试so

 

4. 手机客户端打开待调试app

5. Ida设置远程调试

 IDA动态调试so

6. 配置Debugger->Process options ,设置hostname为localhost就行了,其他不用管

 IDA动态调试so

7. 开始attach process

 IDA动态调试so

8. 选择目标进程,可以用search搜索

 IDA动态调试so

 

9. 接下来会弹出一系列下面弹窗,一律选择cancel,然后apply

 IDA动态调试so

 IDA动态调试so

 

10. IDA View按ctrl+s,弹出so选择框

 IDA动态调试so

 

 

11. 点击下面的Search,搜索指定的so,注意搜索之前先把进度条拉到顶端,因为你要找到这个so得入口地址,所以必须是so出现第一个地址,而且Class那边得是Code的

 IDA动态调试so

 

12. 双击上面搜索结果,进入so入口地址(判断是不是入口可以看它上面是不是别的so就知道了)

 IDA动态调试so

 

13. 找到之前加载进so时打的断点地址,然后与上面找到的so入口地址相加就是当前进程中的所调试代码位置了,点击菜单栏的Jump选项跳转到指定地址,可以看到之前打的断点显示为红色,因此可以先打好断点再进行调试

 IDA动态调试so

 

 

14. 先执行F9让程序继续下去,然后运行手机端app,让它调用指定函数以便执行到断点处,如果到达断点,那一行会显示为紫色,接下来可以用F8(单步调试)、F7(进入函数)等快捷键开始调试,调试时可以看到变量的值,也可以动态修改下面的hex值来改变执行命令

 IDA动态调试so