隨想錄(OllyDbg和IDA Pro的配合使用)

【 聲明:版權所有,歡迎轉載,請勿用於商業用途。  聯繫信箱:feixiaoxing @163.com】

 

    在軟件處理中,OllyDbg和IDA Pro一般是配合使用的。前者主要用於動態的程序調試,後者主要用於靜態的代碼分析。那麼,如果遇到實際程序,該怎麼處理呢?邏輯一般是這樣的,

 

1、首先用OllyDbg驗證此程序是否能夠運行

    分析程序的前提一般是判斷程序是否可以運行起來。如果程序本身就是錯的,那麼就沒有分析的必要了。當然爲了防止木馬、病毒,運行一般是在虛擬機裏面進行的,這樣不會對OS代碼什麼風險。

 

2、利用IDA Pro尋找可能的關鍵路徑

    對於比較簡單的程序,關鍵路徑是比較好找的,往往是從頭執行到尾。就算是複雜的程序,關鍵路徑往往就那麼幾個,依次處理就可以了。這個時候通過字符串變量查找就是不錯的一個方法。

 

3、利用OllyDbg + F12暫停鍵獲取關鍵路徑

    代碼執行路徑很多,但是往往關鍵的就1條,這個時候用OD暫停來分析,是最好的一個方法。

 

4、查看堆棧,獲取函數調用路徑和變量信息

    回溯整個堆棧內容,根據ip地址依次查看函數的調用關係,並且將堆棧內容和軟件功能參數進行聯繫。

 

5、獲取關鍵函數反彙編代碼

    此時,如果已經獲取關鍵函數,那麼就可以利用IDA Pro的F5反彙編功能,獲取對應的C函數。

 

6、將C函數和具體的物理意義聯繫起來

    IDA Pro逆向生成的函數只是邏輯層面的東西,具體的物理意義還需要查看前後的調用邏輯。

 

7、驗證優化、修改後的C函數是否正確

    很多時候IDA優化後的函數冗餘代碼太多,需要刪除、合併。爲了驗證代碼的正確性,使用OllyDbg不停地進行數據驗證。

 

8、直接修改OllyDbg代碼,查看修改效果

    OllyDbg的一個優勢就是可以立即修改內存、保存到文件、重新加載,這對於提升逆向者的信心是很重要的。

 

9、繼續使用IDA分析,對函數、變量添加註釋、說明

    等到所有關鍵路徑上面的代碼都已經被理解和註釋了,並且用OllyDbg證明是正確的,這個時候才說明逆向成功。OllyDbg實時修改的能力很強,但是IDA Pro抽象邏輯分析能力很厲害,所以一般兩者是相互補充的,不存在一個完全代替另外一個的情況。現實場景中兩者也是交叉使用的。

 

PS:

對於具體的算法而言,逆向出算法和變量並不難,但是如果想知道每個函數的物理意義,還需要對應專業同學的幫忙。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章