逆向安全基礎之IDA使用簡介


轉載:http://m.blog.csdn.net/ilnature2008/article/details/54912854

IDA簡介

IDA是業界一個功能十分強大的反匯編工具,是安全滲透人員進行逆向安全測試的必備工具,其強大的靜態反匯編和逆向調試功能能夠幫助安全測試人員發現代碼級別的高危致命安全漏洞,當然其價格也不便宜,國內一個license從幾千到一萬多不等。現在結合windows試用版的IDA,簡單介紹一下其基本使用。

IDA基本界面

現使用C語言編寫一個簡單的主程序,代碼如下:

 

可以被IDA解析的文件包括.exe、.so、.o等格式,在IDA中直接打開上述格式的文件即可,以.o文件為例(使用gcc編譯器編譯:gcc -o test test.c),打開過程選擇如下:

紅色窗口為函數列表,一個文件被反編譯后所有的函數列表都可以在此窗格中顯示;

藍色窗口為匯編代碼區,雙擊每個函數,可以看到對應函數對應的匯編代碼段;

黑色窗口為輸出窗口,文件反匯編過程中的信息都可以在此窗口中看到。

在匯編代碼區輸入空格鍵,可以切換匯編代碼為流程圖瀏覽模式:

 

在流程圖模式下,綠線代表判定條件成立,紅線代表判定條件不成立:

幾個有用的窗口:

(1)常量字符串窗口:

通過此窗口可以看到程序中所有的常量字符串列表,逆向分析一個程序從字符串入手是一個方向:

(2)字符串查找窗口:

 

也可以通過ALT+T快捷鍵打開,可以通過此窗口查找某個指定的字符串:

 

(3)地址跳轉:

 

也可以通過輸入G打開窗口:

 

使用該窗口可以跳轉到指定地址的匯編代碼段。

(4)Debugger options:

 

在該窗口中設置調試程序的一些選項,包括調試時進行的一些操作設置、日志記錄設置等等:

 

(5)Switch debugger

 

通過此窗口可以設置調用的調試器:

 

設置好調用的調試器后需要設置遠程調試器的信息:

 

 

把我們想要在調試器服務端(Windows或Linux)調試的可執行文件拷貝到調試器客戶端,使用IDA打開,上述設置的參數文件路徑應該在遠程調試服務端上有效,同時不要忘記輸入調試器服務端的主機名字和IP地址,遠程調試只有當這些設置完成后才有效。

(6)腳本執行窗口:

 

打開該窗口后,可以選擇執行腳本(.idc或者.py格式),在靜態分析匯報代碼時需要編寫一些自動化的腳本,都是通過此窗口進行執行,執行的結果會顯示在前面提到的輸出窗口中:

(7)匯編代碼注釋編寫:

鼠標點擊某一行匯編代碼,然后輸入分號“;”,就可以打開輸入編輯注釋的窗口,在閱讀匯編代碼的過程中編寫注釋是一個很好的習慣。

 

(8)Xrefs graph to和Xrefs graph from

在函數名上點擊右鍵:

 

通過Xrefs graph to可以看到該函數被其他函數調用的信息:

通過Xrefs graph from可以看到該函數調用的其他函數:

通過此功能可以了解函數調用流程圖。

IDA匯編代碼介紹

還是以下這個簡單的C語言程序為例說明IDA反匯編代碼:

該程序的基本功能就是申請一塊動態內存空間,並存儲一塊字符串信息,然后打印,最后釋放動態內存。

使用gcc編譯器對該c程序進行編譯,程序輸入出結果如下:

以下是對.o文件進行反匯編的匯編代碼段,圖中介紹了核心代碼的含義:

 個人經驗,開始閱讀匯編代碼時結合源代碼會更好理解些,畢竟C語言代碼的可讀性更強,理解一些簡單的匯編代碼段后,閱讀更大量的匯編代碼就會得心應手些。

另外很多人都有疑問,如果有源代碼的話,直接走讀源代碼不是更好嗎,為什么還需要走讀匯編代碼?試想一下,一個千萬行代碼級別的產品,走讀代碼,該從哪開始?何況源代碼中有很多宏定義,也有可能很多代碼都不會被編譯,從源代碼看到的問題點可能實際根本不會存在安全風險,而反匯編則可以避免這種問題,我們可以根據進程信息去提取出有效的文件進行反編譯,反編譯的結果都是優化以后的代碼,可以簡單清晰的看出程序的數據流圖,只不過反匯編要求安全測試人員對匯編代碼要非常熟悉,萬事熟能生巧,匯編代碼多讀多寫,自然慢慢就會熟悉了。

后續會結合具體的應用信息介紹一下安全逆向分析與尋找安全漏洞的基本思路和方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM