逆向工具之IDA的使用
IDA的使用
- IDA打開文件
- IDA關閉文件
- IDA窗口介紹
- 切換圖形界面和文本結構界面
- 顯示硬編碼——>ACDU指令
- A指令
- C指令
- D指令
- U指令
- 跳轉指令:G(go)
- 搜索指令 ALT+T
- N指令
- 創建結構體 ,修改全局變量,修改局部變量
- 注釋
- 交叉引用
交互式反匯編器專業版(Interactive Disassembler Professional),人們常稱其為IDA Pro,或簡稱為IDA。是目前最棒的一個靜態反編譯軟件,為眾多0day世界的成員和ShellCode安全分析人士不可缺少的利器!IDA Pro是一款交互式的,可編程的,可擴展的,多處理器的,交叉Windows或Linux WinCE MacOS平臺主機來分析程序, 被公認為最好的花錢可以買到的逆向工程利器。IDA Pro已經成為事實上的分析敵意代碼的標準并讓其自身迅速成為攻擊研究領域的重要工具。它支持數十種CPU指令集其中包括Intel x86,x64,MIPS,PowerPC,ARM,Z80,68000,c8051等等。
IDA Pro 7.0破解版:http://www.32r.com/soft/42075.html(內含安裝步驟)
IDA打開文件
打開IDA后,把我們要分析的文件拖到IDA就行。
IDA關閉文件
當我們用IDA打開要分析的文件時,在這個文件下方會同時生成4個數據庫文件,這些文件都是當前的IDA程序。
關閉IDA的時候要注意:
IDA窗口介紹
切換圖形界面和文本結構界面
這是一個圖形化的界面(CTRL+滾輪可以控制大小)
,有時還有流程圖,如果不喜歡這個圖形結構,
可以按住空格,就能看到一個文本結構的界面
按空格后:看到一個文本結構的界面(圖形結構——》文本結構),再按一次空格又可以回到圖形結構界面
這樣的界面看上去就全是代碼了,很多做逆向分析的人更喜歡這個界面
導航條:???????一個PE文件包括數據區,代碼區,常量區等,這些不同的塊,不同的顏色就代表不同的塊
IDA View-A:反匯編窗口,打開程序的時候,一般都是停留在反匯編窗口
Hex View-1:想看當前程序的十六進制文件,可以點擊這個窗口HEX
Structures: ?結構體
Enums:???????枚舉類型
Imports:???????如果想看當前程序用了哪些模塊,用了哪些模塊的哪些函數,可以點擊imports
Exports:???????想看當前程序導出了哪些函數,可以點擊exports
結構體是由一批數據組合而成的一種新的數據類型。組成結構型數據的每個數據稱為結構型數據的“成員”。
shift+F12可以轉到字符串窗口
ctrl+e可以到達程序開始的點(start函數)
剛用IDA打開文件,匯編前面沒有地址,怎么打開地址呢?Options——》general——》Disassenbly——》右半邊的Line prefixes(graph)【行前綴(圖形)】
F5或者點tab鍵——》都可以把匯編代碼反編譯成類C代碼(類似于C語言的代碼,也叫做偽代碼)
雙擊后進入某一個界面,按ESC可以退回
快捷鍵X或者ctrl+X:交叉引用(看看誰用了這個字符串/地址)
選擇某函數,按N:重命名(重要!),要養成重命名的習慣。
怎么知道一個文件是用什么語言寫的,有沒有加殼?用工具DetectItEasy或者exeinfo PE或者PEiD
靜態分析用IDA,動態調試用x64dbg(調試32或64位的)或者是Ollydbg(調試32位的)
顯示硬編碼——>ACDU指令
任何的一個可執行文件,最終都是由硬編碼組成(準確來說是由二進制組成),二進制里面包含了很多CPU能識別的指令,這些指令稱為硬編碼
把當前文件的硬編碼指令顯示出來:
選擇options——》點擊general
exe程序在指令部分都是由這些硬編碼組成,每一行硬編碼都對應一個具體的匯編代碼,所以IDA替我們把這些硬編碼轉換為匯編代碼。
A指令
把當前的數據用字符串的形式來顯示
C指令
把當前的數據安照代碼(code)的形式來顯示
D指令
把當前的數據用數據(data)的形式來顯示
U指令
把當前的數據用普通的原始字節的形式來顯示(undefined未定義)
ACDU指令:某個數據它顯示的不合理,可以告訴IDA你以什么形式來對這個數據進行顯示
現在我想以字符串的形式來顯示它:用A指令
現在我想以數據的形式來顯示它:用D指令
按一次d會以db的形式顯示,再按一次會以dw形式顯示,再按一次d會以dd的形式顯示
現在我想以代碼的形式來顯示它:用C指令
如果不想對它進行定義,按U
跳轉指令:G(go)
在實際逆向過程中,經常需要進行跳轉
搜索指令 ALT+T
N指令
改名字,這個指令可以說是最重要的指令
真正的逆向分析就是要弄清函數做了什么事,真正起名字的過程就是逆向分析的過程
真正的逆向人員是不會用F5直接把匯編變成C語言的
F5是不準確的,它識別不了的地方他會省略掉,F5生成的代碼沒有任何可讀性,遠遠沒有直接看匯編代碼更加清晰。
一個真正的逆向分析就是一個起名字的過程
創建結構體 ,修改全局變量,修改局部變量
在我們分析函數的過程中,可能看到了某處用到了一個結構體(我們自己分析出來的結構體,IDA本身也能自己替我們識別出來一些系統層面的結構體)
假如我們自己分析出來一個結構體,但是IDA里面還沒有這個結構體,我們就可以點開structures這個窗口,在這個窗口新增一個結構體
步驟:打開structures這個窗口——》Edit——》Add struct type
那么想在結構體里面添加成員,選擇按D,就會給我們新增一個成員:
這個成員的名字和類型都是可以改的(改名字用N,改類型用D)
萬一這個成員是一個結構體怎么辦,不是一個普通的dword,或者是dw?
選中這個類型ALT+Q——》就會列出當前ID識別出所有的結構體:
第三個結構體是一個DWORD數組,怎么辦:
改為dd,選中后單擊右鍵,選擇數組array,定義數組長度
局部變量選擇結構體的快捷鍵是P
全局變量選擇結構體是ALT+Q
注釋
三種常用的注釋:
1、直接按分號; 會彈出一個窗口,在窗口中就可以直接寫注釋的內容了(它引用 的地方會出現副本)
2、按冒號:它引用 的地方不會出現副本
3、希望每次分析完一個函數以后,能在上面寫一個注釋
針對函數的注釋:選中當前函數的函數名,選中它,按分號,就可以直接寫注釋了(用來描述當前函數的基本特征)
交叉引用
想看引用某個函數的所有地方,點中函數名——》View——》Open subviews——》Cross reference
點開后出現一個界面,這個界面會出現所有引用這個函數的其他的地方
某一個數據,全局變量也可以安裝這個方法進行查看
總結
以上是生活随笔為你收集整理的逆向工具之IDA的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android辅助功能实现群发,Andr
- 下一篇: XCTF-Reverse:re1