1. 程式人生 > >使用IDA 進行遠端除錯

使用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服務就可以停止偵錯程式!