使用IDA 进行远程调试

从4.8 版开始,IDA PRO 支持通过TCP/IP 网络对x86/AMD64 Windows PE 应用程序和Linux
ELF 应用程序进行远程调试。所谓“远程调试”是指通过网络调试在另一个网络上的计算
机运行的代码的过程:
l 运行IDA PRO界面的计算机被称为“调试器客户端”。
l 运行被调试的应用程序的计算机被成为“调试器服务器  ”。
远程调试主要用于下面一些特殊应用:
l 用于调试病毒/木马/恶意软件:通过这种方法,调试器客户端可以与可能受到这些
软件攻击的计算机隔离。
l 调试那些在一台计算机上运行遇到问题,而且没有被拷贝安装在其他计算机上的应
用程序。
l 调式分布式应用程序
l 始终在你的主工作站上运行,因此你无需将IDA配置、文件和不同的调试相关资源
拷贝到其它机器上。
l 以后,将可以在更多的操作系统和结构下调试应用程序。
这个小教程将会讲述如何在实际应用中配置和使用远程调试。

远程IDA 调试器服务端
为了让IDA客户端和调试器服务端可以通过网络进行通信,我们必须首先启动一个小的服务
端,它会处理所有低级操作和调试器操作。IDA的软件包中包括一个Windows调试器服务端
(win32_remote.exe文件)和一个Linux调试器服务端(linux_server.exe文件),通过这
两个文件,我们可以:
l 在IDA窗口中本地调试x86/AMD64的Windows应用程序和DLL文件。
l 在IDA窗口中远程调试x86/AMD64的Windows应用程序和DLL文件。
l 在IDA窗口中本地调试x86的Linux应用程序和共享库文件。
l 在IDA窗口中远程调试x86的Linux应用程序和共享库文件。
 
我们先拷贝这个小的windows调试器服务端文件到我们的调试器服务器上。
服务端可以接收下面几种命令行参数:
C:\> win32_remote -?
IDA Windows32 remote debugger server. Version 1.0. Copyright Datarescue 2004
Error: usage: ida_remote [switches]
-p... port number
-P... password
-v     verbose
 
我们可以设定一个密码,以阻止那些未授权的链接:
C:\>win32_remote -Pmypassword

IDA Windows32 remote debugger server. Version 1.0. Copyright Datarescue 2004
Listening to port #23946...
注意远程调试器服务器同时只能处理一个调试会话。如果你需要在一个相同的主机上同时调
试几个应用程序,则需要使用–p开关在不同的端口启动多个服务端。

设置调试器客户端
首先,把我们想要在调试器服务端(Windows或Linux)调试的可执行文件拷贝到调试器客
户端(Windows或Linux)。我们可以像通常那样把这个文件装入IDA。通过点击在Debugger
菜单中的“Process options…”菜单条,来设置远程调试

在上面的窗口中我们设定Application,Directory,和Input file路径。注意这些文件路径应该
在远程调试器服务端上有效,同时不要忘记输入调试器服务端的主机名字和IP地址:远程调
试只有当这些设置完成后才有效!最后,输入我们在IDA的调试器服务端设定的密码。

 

启动远程调试
现在,调试器服务端和调试器客户端均已设置完成,可以开始远程调试了。事实上,你现在
可以使用本地调试可以用到的所有调试命令。例如,我们可以跳到程序入口点,然后使用
F4快捷键,运行进程到程序的入口点。

如果我们现在直接终止进程(通过CTRL-F2)并查看win32_remote’s的输出(在调试器服务
端),我们看到它确实接受了这个命令并关闭了我们的网络链接:
C:\> win32_remote -Pmypassword
IDA Windows32 remote debugger server. Version 1.0. Copyright Datarescue 2004
Listening to port #23946...
Accepting incoming connection...
Closing incoming connection...

 

附加到一个正在运行的进程 
另一有趣的功能的是,可以附加调试器到一个在远程计算机上已经存在并运行着的进程上。
如果你在Debugger菜单中点击“Attach to process…”命令,IDA将会显示所有与你的反汇
编数据库中的文件对应的远程运行进程的列表:

在列表中双击一个进程,将会自动挂起并附加调试器到这个进程上,这可以让你无需手动启
动这个进程就可以调试它。附加进程的功能可以工作在Windows到Linux,Windows到
Windows,  Linux到Linux和从Linux到Windows多种情况下。

 

从调试进程中解除附加
最后,如果如果调试器服务端运行在Windows XP,Windows Server 2003或Linux,你也可
以从你当前调试的进程中解除附加,只需要使用Debugger菜单中的“Detach from process”
命令即可。
IDA支持调试Windows下的DLLs和Linux下的共享库文件。在Windows下,  IDA也可以附加
到Windows服务上,无论该服务是运行在本地或远端。尤其是当你附加到Windows服务上
后,“Detach from process”命令非常有用:这可以使你无需终止调试器服务端的关键
Windows服务就可以停止调试器!

 

 

展开阅读全文

没有更多推荐了,返回首页