當前位置:編程學習大全網 - 編程語言 - IDA Pro權威指南的目錄

IDA Pro權威指南的目錄

第壹部分 IDA簡介

第1章 反匯編簡介 2

1.1 反匯編理論 2

1.2 何為反匯編 3

1.3 為何反匯編 3

1.3.1 分析惡意軟件 4

1.3.2 漏洞分析 4

1.3.3 軟件互操作性 4

1.3.4 編譯器驗證 4

1.3.5 顯示調試信息 5

1.4 如何反匯編 5

1.4.1 基本的反匯編算法 5

1.4.2 線性掃描反匯編 6

1.4.3 遞歸下降反匯編 7

1.5 小結 10

第2章 逆向與反匯編工具 11

2.1 分類工具 11

2.1.1 file 11

2.1.2 PE Tools 13

2.1.3 PEiD 14

2.2 摘要工具 14

2.2.1 nm 15

2.2.2 ldd 16

2.2.3 objdump 17

2.2.4 otool 18

2.2.5 dumpbin 18

2.2.6 c++filt 19

2.3 深度檢測工具 20

2.3.1 strings 20

2.3.2 反匯編器 21

2.4 小結 22

第3章 IDA Pro背景知識 23

3.1 Hex-Rays公司的反盜版策略 23

3.2 獲取IDA Pro 24

3.2.1 IDA版本 24

3.2.2 IDA許可證 24

3.2.3 購買IDA 25

3.2.4 升級IDA 25

3.3 IDA支持資源 25

3.4 安裝IDA 26

3.4.1 Windows安裝 26

3.4.2 OS X和Linux安裝 27

3.4.3 IDA目錄的結構 28

3.5 IDA用戶界面 29

3.6 小結 29

第二部分 IDA基本用法

第4章 IDA入門 32

4.1 啟動IDA 32

4.1.1 IDA文件加載 34

4.1.2 使用二進制文件加載器 35

4.2 IDA數據庫文件 37

4.2.1 創建IDA數據庫 38

4.2.2 關閉IDA數據庫 38

4.2.3 重新打開數據庫 39

4.3 IDA桌面簡介 40

4.4 初始分析時的桌面行為 42

4.5 IDA桌面提示和技巧 43

4.6 報告bug 44

4.7 小結 44

第5章 IDA數據顯示窗口 45

5.1 IDA主要的數據顯示窗口 45

5.1.1 反匯編窗口 45

5.1.2 Names窗口 50

5.1.3 消息窗口 51

5.1.4 Strings窗口 52

5.2 次要的IDA顯示窗口 53

5.2.1 十六進制窗口 53

5.2.2 導出窗口 54

5.2.3 導入窗口 54

5.2.4 函數窗口 55

5.2.5 結構體窗口 55

5.2.6 枚舉窗口 56

5.3 其他IDA顯示窗口 56

5.3.1 段窗口 56

5.3.2 簽名窗口 57

5.3.3 類型庫窗口 58

5.3.4 函數調用窗口 58

5.3.5 問題窗口 59

5.4 小結 59

第6章 反匯編導航 60

6.1 基本IDA導航 60

6.1.1 雙擊導航 60

6.1.2 跳轉到地址 62

6.1.3 導航歷史記錄 62

6.2 棧幀 63

6.2.1 調用約定 64

6.2.2 局部變量布局 67

6.2.3 棧幀示例 67

6.2.4 IDA棧視圖 70

6.3 搜索數據庫 74

6.3.1 文本搜索 75

6.3.2 二進制搜索 75

6.4 小結 76

第7章 反匯編操作 77

7.1 名稱與命名 77

7.1.1 參數和局部變量 77

7.1.2 已命名的位置 79

7.1.3 寄存器名稱 80

7.2 IDA中的註釋 80

7.2.1 常規註釋 82

7.2.2 可重復註釋 82

7.2.3 在前註釋和在後註釋 82

7.2.4 函數註釋 82

7.3 基本代碼轉換 83

7.3.1 代碼顯示選項 83

7.3.2 格式化指令操作數 85

7.3.3 操縱函數 86

7.3.4 數據與代碼互相轉換 91

7.4 基本數據轉換 91

7.4.1 指定數據大小 92

7.4.2 處理字符串 93

7.4.3 指定數組 94

7.5 小結 96

第8章 數據類型與數據結構 97

8.1 識別數據結構的使用 98

8.1.1 數組成員訪問 98

8.1.2 結構體成員訪問 102

8.2 創建IDA結構體 107

8.3 使用結構體模板 111

8.4 導入新的結構體 114

8.4.1 解析C結構體聲明 114

8.4.2 解析C頭文件 115

8.5 使用標準結構體 115

8.6 IDA TIL文件 118

8.6.1 加載新的TIL文件 118

8.6.2 ***享TIL文件 118

8.7 C++逆向工程基礎 119

8.7.1 this指針 119

8.7.2 虛函數和虛表 120

8.7.3 對象生命周期 122

8.7.4 名稱改編 124

8.7.5 運行時類型識別 125

8.7.6 繼承關系 126

8.7.7 C++逆向工程參考文獻 127

8.8 小結 127

第9章 交叉引用與繪圖功能 128

9.1 交叉引用 128

9.1.1 代碼交叉引用 129

9.1.2 數據交叉引用 131

9.1.3 交叉引用列表 133

9.1.4 函數調用 134

9.2 IDA繪圖 135

9.2.1 IDA的遺留繪圖功能 135

9.2.2 IDA的集成圖形視圖 141

9.3 小結 143

第10章 IDA的多種面孔 144

10.1 控制臺模式IDA 144

10.1.1 控制臺模式的***同特性 144

10.1.2 Windows控制臺 145

10.1.3 Linux控制臺 146

10.1.4 OS X控制臺 148

10.2 使用IDA的批量模式 150

10.3 非Windows平臺上的GUI IDA 151

10.4 小結 152

第三部分 IDA高級應用

第11章 定制IDA 154

11.1 配置文件 154

11.1.1 主配置文件:ida.cfg 154

11.1.2 GUI配置文件:idagui.cfg 155

11.1.3 控制臺配置文件:idatui.cfg 157

11.2 其他IDA配置選項 158

11.2.1 IDA顏色 159

11.2.2 定制IDA工具欄 159

11.3 小結 161

第12章 使用FLIRT簽名來識別庫 162

12.1 快速庫識別和鑒定技術 162

12.2 應用FLIRT簽名 163

12.3 創建FLIRT簽名文件 166

12.3.1 創建簽名概述 166

12.3.2 識別和獲取靜態庫 167

12.3.3 創建模式文件 168

12.3.4 創建簽名文件 169

12.3.5 啟動簽名 171

12.4 小結 172

第13章 擴展IDA的知識 173

13.1 擴充函數信息 173

13.1.1 IDS文件 175

13.1.2 創建IDS文件 176

13.2 使用loadint擴充預定義註釋 178

13.3 小結 179

第14章 修補二進制文件及其他IDA 限制 180

14.1 隱藏的補丁程序菜單 180

14.1.1 更改數據庫字節 181

14.1.2 更改數據庫中的字 181

14.1.3 使用“匯編”對話框 182

14.2 IDA輸出文件與補丁生成 183

14.2.1 IDA生成的MAP文件 183

14.2.2 IDA生成的ASM文件 184

14.2.3 IDA生成的INC文件 184

14.2.4 IDA生成的LST文件 185

14.2.5 IDA生成的EXE文件 185

14.2.6 IDA生成的DIF文件 185

14.2.7 IDA生成的HTML文件 186

14.3 小結 186

第四部分 擴展IDA的功能

第15章 編寫IDC腳本 188

15.1 執行腳本的基礎知識 188

15.2 IDC語言 189

15.2.1 IDC變量 190

15.2.2 IDC表達式 190

15.2.3 IDC語句 190

15.2.4 IDC函數 191

15.2.5 IDC程序 192

15.2.6 IDC錯誤處理 192

15.2.7 IDC永久數據存儲 193

15.3 關聯IDC腳本與熱鍵 194

15.4 有用的IDC函數 195

15.4.1 讀取和修改數據的函數 196

15.4.2 用戶交互函數 196

15.4.3 字符串操縱函數 197

15.4.4 文件輸入/輸出函數 197

15.4.5 操縱數據庫名稱 198

15.4.6 處理函數的函數 199

15.4.7 代碼交叉引用函數 199

15.4.8 數據交叉引用函數 200

15.4.9 數據庫操縱函數 200

15.4.10 數據庫搜索函數 201

15.4.11 反匯編行組件 201

15.5 IDC腳本示例 202

15.5.1 枚舉函數 202

15.5.2 枚舉指令 202

15.5.3 枚舉交叉引用 203

15.5.4 枚舉導出的函數 205

15.5.5 查找和標記函數參數 206

15.5.6 模擬匯編語言行為 208

15.6 小結 209

第16章 IDA軟件開發工具包 211

16.1 SDK簡介 212

16.1.1 安裝SDK 212

16.1.2 SDK的布局 212

16.1.3 配置構建環境 213

16.2 IDA應用編程接口 214

16.2.1 頭文件概述 214

16.2.2 網絡節點 217

16.2.3 有用的SDK數據類型 223

16.2.4 常用的SDK函數 224

16.2.5 IDA API叠代技巧 229

16.3 小結 232

第17章 IDA插件體系結構 233

17.1 編寫插件 233

17.1.1 插件生命周期 235

17.1.2 插件初始化 236

17.1.3 事件通知 237

17.1.4 插件執行 238

17.2 構建插件 239

17.3 插件安裝 243

17.4 插件配置 244

17.5 擴展IDC 244

17.6 插件用戶界面選項 247

17.7 小結 254

第18章 二進制文件與IDA加載器模塊 255

18.1 未知文件分析 256

18.2 手動加載壹個Windows PE文件 256

18.3 IDA加載器模塊 263

18.4 編寫IDA加載器 263

18.4.1 “傻瓜式”加載器 265

18.4.2 構建IDA加載器模塊 269

18.4.3 IDA pcap加載器 269

18.5 其他加載器策略 274

18.6 小結 275

第19章 IDA處理器模塊 276

19.1 Python字節碼 277

19.2 Python解釋器 277

19.3 編寫處理器模塊 277

19.3.1 processor_t結構體 278

19.3.2 LPH結構體的基本初始化 278

19.3.3 分析器 282

19.3.4 模擬器 286

19.3.5 輸出器 288

19.3.6 處理器通知 293

19.3.7 其他processor_t成員 294

19.4 構建處理器模塊 296

19.5 定制現有的處理器 299

19.6 處理器模塊體系結構 301

19.7 小結 302

第五部分 實際應用

第20章 編譯器變體 304

20.1 跳轉表與分支語句 304

20.2 RTTI實現 308

20.3 定位main函數 308

20.4 調試版與發行版二進制文件 315

20.5 其他調用約定 317

20.6 小結 317

第21章 模糊代碼分析 319

21.1 反靜態分析技巧 319

21.1.1 反匯編去同步 319

21.1.2 動態計算目標地址 322

21.1.3 導入的函數模糊 327

21.1.4 有針對性地攻擊分析工具 331

21.2 反動態分析技巧 331

21.2.1 檢測虛擬化 331

21.2.2 檢測“檢測工具” 333

21.2.3 檢測調試器 333

21.2.4 防止調試 334

21.3 使用IDA對二進制文件進行“靜態去模糊” 335

21.3.1 面向腳本的去模糊 335

21.3.2 面向模擬的去模糊 339

21.4 小結 349

第22章 漏洞分析 350

22.1 使用IDA發現新的漏洞 351

22.2 使用IDA在事後發現漏洞 356

22.3 IDA與破解程序開發過程 359

22.3.1 棧幀細目 360

22.3.2 定位指令序列 362

22.3.3 查找有用的虛擬地址 363

22.4 分析shellcode 364

22.5 小結 366

第23章 實用IDA插件 367

23.1 Hex-Rays 367

23.2 IDAPython 368

23.3 IDARub 371

23.4 IDA Sync 371

23.5 collabREate 374

23.6 ida-x86emu 377

23.7 mIDA 377

23.8 小結 379

第六部分 IDA調試器

第24章 IDA調試器 382

24.1 啟動調試器 382

24.2 調試器的基本顯示 384

24.3 進程控制 387

24.3.1 斷點 388

24.3.2 跟蹤 390

24.3.3 棧跟蹤 393

24.3.4 監視 393

24.4 調試器任務自動化 393

24.4.1 使用IDC為調試器操作編寫 腳本 394

24.4.2 使用IDA插件實現調試器操 作自動化 398

24.5 小結 400

第25章 反匯編器/調試器集成 401

25.1 背景知識 401

25.2 IDA數據庫與IDA調試器 402

25.3 調試模糊代碼 404

25.3.1 簡單的解密和解壓循環 404

25.3.2 導入表重建 407

25.3.3 隱藏調試器 410

25.3.4 處理異常 414

25.4 小結 418

第26章 Linux、OS X平臺的IDA和 遠程調試 419

26.1 控制臺模式的調試 419

26.2 使用IDA進行遠程調試 420

26.2.1 遠程調試中的異常處理 422

26.2.2 在遠程調試中使用腳本和 插件 423

26.3 小結 423

附錄A 使用IDA 4.9免費版 424

附錄B IDC/SDK交叉引用 426

附錄C IDA 5.3的新功能 444

  • 上一篇:高級問題,關於固態硬盤
  • 下一篇:軟件設計模式的相近術語
  • copyright 2024編程學習大全網