windows程式逆向工具彙總
對於軟體逆向,有稱手的工具往往事半功倍,這裡簡單羅列出一些常用工具,不做詳細介紹,供新手一個入門指引。
靜態分析工具首推IDA,有了它其他的反彙編工具基本用不著。
動態除錯工具有OD和windbg。 除錯應用層程式兩個偵錯程式都可以,OD因為主要面向逆向,窗口布局更為合理直觀且外掛眾多,所以一般情況下都首選OD,windbg沒那麼方便,大部分操作通過命令來進行,但它也有它的優勢,各種命令(內建命令、元命令和擴充套件命令)提供了強大的控制和分析能力,所以windbg有時也會用到。如果要除錯核心程式或模組那OD就無能為力了,windbg可以說是唯一的選擇,以前還有個softice,但softice已經停止更新和支援,現在已經沒什麼了用了。
偵殼工具一般用PEid,其他的工具也有,這裡就不列出了。PEid功能強大,但很多時候也分析不準,不能過於相信它的結果。主要還是通過自己的分析來判斷。
對於脫殼,網上也有很多對某種殼的自動脫殼工具或者指令碼,這裡工具本人都不怎麼用,不好推薦,對於想深入學習逆向這門手藝的新手我還是建議要多嘗試自己手工脫殼,不要淪為被人鄙視的script kids。至於dump程式,我們可以用LordPE或者ollydump,dump好了之後可能還需要匯入表修復工具importREC等。這只是比較理想的情況,有些時候還得自己手工去做些分析和修復。
對於逆向工程師來說,二進位制編輯工具和比較工具是少不了的,編輯工具主要選UltraEdit、Hex Workshop以及WinHex,他們各有優缺點,可以根據自己愛好選擇。比較工具個人感覺比較好的是Beyond Compare,其他工具沒怎麼用過,不做推薦。
提到逆向,很多人都覺得一定得對程式進行白盒分析,其實如果黑盒分析能更快搞定的話就不用那麼費勁的去分析程式的彙編程式碼了。就算是不得不分析程式碼,在分析之前或者分析之中觀察它的輸入輸出也是很有幫助的,常用的輔助分析工具有以下幾個:
網路包抓包分析工具,這方面用的比較多有Wireshark和Iris,wireshark是微軟出的免費工具而Iris是收費軟體,功能都很強大。
檔案和登錄檔監視工具一般用process monitor,以前是用Filemon監視檔案,Regmon監視登錄檔,現在process monitor可以監視兩種操作。其實這些工具都是同一個人寫的,現在兩個工具合併成一個了。說句題外話,這個作者就是寫《深入解析windows作業系統》的作者,這本書的權威性對搞windows核心開發的可以說無人不曉,做逆向的話也很有必要好好讀讀這本書。
另外就是虛擬機器vmware和virtual pc了,裝虛擬機器有很多好處,對核心除錯來說就可以實現在單個物理PC上除錯核心,虛擬機器崩潰也可以快速回復重啟。
對於核心程式碼逆向,DDK/WDK裡面的工具也可以結合起來用,如檢視物件winobj,檢視裝置棧的dev tree。觀察IRP的有IRPtrace。工具比較多,這裡不一一列舉,畢竟大部分逆向都是應用層逆向。
羅列到此結束,希望能對閱讀這篇文章的人有些幫助。本人認為,工具的使用只是技,軟體保護和逆向裡面蘊藏的演算法理論才是道,只有掌握了道才能走的更遠,逆向如此,其他事亦如此。