IDA远程调试Linux文件(QEMU)
在这里总结一下使用过的两种IDA远程调试Linux文件的方式:
前提:Windows下安装了IDA,Ubuntu中安装了qemu-user
我的环境是:IDA7.0 & Ubuntu16.04(32bit)
(1.1)IDA+linux_server
- 进入到IDA的安装目录,找到文件夹/dbgsrv,其中有两个文件linux_server和linux_server64,分别为32位的服务端和64位的服务端,可根据调试目标进行选择。并将其复制到Ubuntu中。
- 查看Ubuntu的IP地址,ifconfig命令。
- Ubuntu下运行服务端,因为我的调试目标是32位的,所以我运行linux_server即可。运行后监听23946端口。
- Windows下打开IDA,并按照下图进行操作,打开远程Linux调试器。
- 输入配置信息:Application为调试目标在Ubuntu下的位置(注意斜线方向),Directory为调试目标在Ubuntu下的路径,Parameters可以不填;
- Hostname为Ubuntu的IP地址,Port为端口(与linux_server的监听端口保持一致),Password为Ubuntu系统的开机密码。
- 点击OK即可显示调试的界面(类似于OllyDbg)
- Ubuntu下linux_server的运行框中会显示提示信息,如下:
(1.2)IDA+linux_server attach
- 首先,还是在Ubuntu下运行服务器,我的系统和调试目标都是32位的,所以运行32位的服务器。
- 在Ubuntu下运行调试目标。
- 在Windows下打开IDA,选择如下的选项,这次用Attach,连接远程Linux调试器。
- 设置一些配置信息,IP,端口,开机密码等。
- 点击Debug options可以进行更加详细的调试设置。
- 点击OK,之后会让你选择你要连接的进程是哪个,找到你之前运行起来的调试目标进程就可以了。
(2)IDA+QEMU -g
假如你要在Ubuntu下使用QEMU仿真一些二进制文件,然后还需要调试这些二进制文件,就可以使用qemu自带的-g选项的调试功能。
- 在Ubuntu下运行起来,-g选项,调试端口12345。
- 返回WIndows,打开IDA,这次使用Remote GDB debugger。
- 输入IP,端口(和-g后的端口一致)。
- 点击Debug options进一步进行设置。
- 点击Set specific options,主要是设置一下最下边的二进制文件的架构信息。
- 架构信息可以使用readelf -h命令查看ELF文件头,需要的信息图中已经划线了。
- 设置完毕,就可以调试了。
(3)设置断点动态调试
动态调试之前一般都会首先对目标二进制文件做一个简单的静态分析,这个时候如果看到感兴趣的位置就可以下一个断点,然后动态起来之后可以查看这个位置的运行情况,这样的话,调试就是下面的步骤。
- 在IDA中查看二进制文件,在感兴趣的位置设置断点(F2或者点击左边小蓝点),比如在_start一开始我设了一个。
- 在Ubuntu那边运行起程序来,我还是用的QEMU -g进行调试。
- 回到IDA这边,Debugger选项,变成了这个样子,选它就完事儿了。
- 弹出这个框,依旧选择熟悉的远程GDB调试器。
- 然后再去看Debugger选项,又变成了这个样子,“Start process”开始进程。
- 然后就开始了,程序运行停在设置断点的位置。
(非常罗里吧嗦的步骤记录,也仅仅是一个步骤记录,刚开始接触,用着不太熟练,所以也来做个小笔记hhh)