在这里总结一下使用过的两种IDA远程调试Linux文件的方式: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调试器。


- 点击Debug options能够进行更加详细的调试设置。

- 点击OK,以后会让你选择你要链接的进程是哪一个,找到你以前运行起来的调试目标进程就能够了。

(2)IDA+QEMU -g
假如你要在Ubuntu下使用QEMU仿真一些二进制文件,而后还须要调试这些二进制文件,就可使用qemu自带的-g选项的调试功能。spa
- 在Ubuntu下运行起来,-g选项,调试端口12345。

- 返回WIndows,打开IDA,此次使用Remote GDB debugger。



- 点击Set specific options,主要是设置一下最下边的二进制文件的架构信息。

- 架构信息可使用readelf -h命令查看ELF文件头,须要的信息图中已经划线了。


(3)设置断点动态调试
动态调试以前通常都会首先对目标二进制文件作一个简单的静态分析,这个时候若是看到感兴趣的位置就能够下一个断点,而后动态起来以后能够查看这个位置的运行状况,这样的话,调试就是下面的步骤。debug
- 在IDA中查看二进制文件,在感兴趣的位置设置断点(F2或者点击左边小蓝点),好比在_start一开始我设了一个。

- 在Ubuntu那边运行起程序来,我仍是用的QEMU -g进行调试。

- 回到IDA这边,Debugger选项,变成了这个样子,选它就完事儿了。


- 而后再去看Debugger选项,又变成了这个样子,“Start process”开始进程。


(很是罗里吧嗦的步骤记录,也仅仅是一个步骤记录,刚开始接触,用着不太熟练,因此也来作个小笔记hhh)3d