1.背景
真机:win7 x64 ida pro 6.8 虚拟机:ubuntu 16.04 x64
现在在win7下远程调试ubuntu内自己编译的程序。
2.ubuntu内编译程序
1].桌面建立test文件夹,并建立hello.c文件
写入代码:
#include <stdio.h>
int main(void)
{
printf("hello linux!");
return 0;
}
在test目录打开终端,输入gcc ./hello.c -o hello
不出意外将会产生一个hello的文件。
3.调试
1].将hello文件拷贝一份到win7桌面,ubuntu内拷贝到tmp/test/hello 处
2].找到win7中IDA的安装目录,在安装目录下会有linux_server,linux_serverx64程序,将linux_serverx64拷贝到ubuntu机器上,放在tmp/test目录下。
3].在ubuntu机器上,chmod a+x ./linux_serverx64 改变文件属性,然后通过命令 ./linux_serverx64运行该程序。
4].在windows中用IDA找开桌面上的hello文件,直接在下拉列表框选择“Remote Linux debugger”。如图所示:
5].在IDA菜单中,选择“Debugger->Process options”,打开要调试的程序设置选项,在Application和Input file两项中输入ubuntu中要调试的程序,在Directory中输入要调试的程序所在的目录,在Hostname中输入linux机器的IP地址,端口保持默认即可,其它的输入项不用管,确定。如下图所示:
如果ubuntu有密码,这里的Password中也可以填上密码。
6].下断点,找到main函数,在第一行按F2下断点:
7].按F9或者点击绿色的三角启动程序。
8].如果弹出下图的提示,直接点Yes:
9].接着可能会出现下图的弹框:
该提示是找不到库文件,直接点OK。
出来这个:
点Apply。
10].继续运行,又出来弹框:
这个提示在win7下找不到文件,这步不能忽略,在Destination中要选在我们的被调试的文件hello所在的目录,按照如图中所示设置。
11].再运行,还可能会弹框:
Please confirm
---------------------------
The DWARF plugin couldn't find DWARF information associated to the file:
C:\Users\Administrator\Desktop\r100.
Do you want to load an external DWARF file manually?
---------------------------
&Yes &No
点yes就再选择一次win7的文件,也可以点no.
然后就可以按F8但不调试了。
如果程序中有输出,或者输入是在ubuntu的远程调试窗口中输出或者输入(第三部的那个窗口中)。