世界上最優秀的靜態逆向工具沒有之一,IDA PRO簡稱IDA(Interactive Disassembler) ,是一個世界頂級的交互式反匯編工具。在破解領域它是威名震天的強大工具,主要用在反匯編和動態調試等方面,另外它的分析技術是最為稱贊的一點。
OD(OllyDbg)和IDA Pro這兩款工具分別是調試逆向的倚天劍和屠龍刀。
雖然兩者都兼容動態和靜態的調試方式,但就動態調試而言,OD更為靈活和強大,而靜態調試工具的王者理所應當是功能極為強大的IDA Pro。
一個高效的反匯編工具:
當你運行IDA Pro時,你所最先注意到的是它的界面比w32dasm更加專業,這里比w32dasm有更多的選項或更先進的地方。它的優點是可以更好的反匯編和更有深層分析。而缺點是使用IDA更困難。
實際上IDA同w32dasm有很多相同的功能:可以快速到達指定的代碼位置;可以看到跳到指定的位置的jmp的命令位置;可以看參考字符串;可以保存靜態匯編等。
現在讓我們運行和反匯編一個小程序(我使用starclean.exe)一個窗口彈出來,那里有很多選項,不要動它,僅僅點擊OK。讓IDA來分析,當它結束后在name的選項中同w32dasm中參考字符串一樣,查找"a"字符。在name窗口中搜索欄中按a,然后開始查找,一旦找到,按enter或雙擊它,它就將到達正確的位置。按ctrl+enter將到達下一個位置。參考字符串就在光標附近。IDA就可以到達相應的位置了。
另一個大的優點是IDA可以轉換變量。你可以雙擊變量以找到它們保存的地址處: lea edi, [esp+1B8h+var_104]。
功能中最有用的之一是使用近似查找。很容易解釋:IDA盡力記住寄存器所關聯的庫函數。
IDA另一個優點(快速相加):
1. 能夠對w32dasm無法反匯編的最難的軟件進行反匯編(如加殼程序)
2. 能夠以.asm .sym 和甚至是 .exe及其它文件形式保存
3. 壓縮的靜態匯編,可以節省大量的磁盤空間。
4. 可以重命名函數
5. 能夠分析巨大的程序
IDA Pro怎么用?
IDA Pro的靜態反匯編功能非常強大,包括標注、分割匯編指令、交叉引用等功能與簡潔的可視化控制流圖(CFG)。在這些強大功能的支持下,大大加速了逆向分析人員分析二進制代碼的進程。為了簡要地展示IDA Pro的功能,我們用它反匯編一個示例的PE格式可執行二進制文件。
首先,載入名為reverse的二進制文件,IDA Pro支持多種處理器對應的機器碼,可以自動識別二進制執行文件運行的平臺。
然后,IDA Pro開始反匯編這個二進制文件,分析介紹之后,窗口默認停留在程序的入口處,如圖2-3所示。
左邊窗口顯示的是IDA Pro所識別的所有函數,目前所在的是start函數。居中的是匯編指令,已經自動分割成各個基本代碼塊(BBL)。最右邊的是各個代碼塊組成的這個函數的控制流程圖(CFG)。按空格鍵可以從這個圖形反匯編視圖切換到反匯編代碼視圖,如圖2-4所示。
IDA Pro就像提供了一張二進制的地圖,標注了系統函數以及分析人員注解的函數調用,同時展現出各級函數和代碼塊之間的調用關系。此外,IDA Pro的擴展性能很好,可以利用IDA Pro提供的API接口和IDC腳本來擴展應用,而且相關擴展的插件和腳本產生的數據庫文件可以直接導入OllyDbg、Binary Diffing等工具中使用。如圖2-5所示,大名鼎鼎的Hex-Rays插件可以直接反編譯生成C代碼,只要按F5即可。
在逆向工程,IDA pro已經日漸成為分析人員必備的工具之一。在本書中,我們將利用它來定位安全漏洞的匯編代碼位置,結合其呈現的代碼調用關系來理解漏洞的機理。