從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服務就可以停止調試器!