IDA Pro權威指南

IDA Pro權威指南

《IDA Pro權威指南》是2010年3月1日人民郵電出版社出版的圖書,作者是伊格爾(Chris Eagle)。

內容簡介

《IDA Pro權威指南》內容簡介:IDA Pro(互動式反彙編器專業版)是套用最廣泛的靜態反彙編工具,在IT領域有著舉足輕重的地位,但其文檔資料一直都不夠完善。在IDA Pr0創建者Ilfak的協助下問世的這《IDA Pro權威指南》,完美地彌補了這一缺憾。C卜¨1s的理論被業界公認為是權威且令人信服的。而他的模擬器也是公開發布的IDA外掛程式中最棒的一款。

《IDA Pro權威指南》首先描述反彙編理論、逆向工程的基本信息}111DA Pro的背景知識,然後系統地介紹IDA的基本布局和功能、複雜數據結構的處理、交叉引用與繪圖功能,以及如何在非Wiridows平台上運行IDA。書中由淺入深地介紹了IDA的配置、F LlRT技術、IDA類型庫的擴展以及一些IDA限制。難得的是。《IDA Pro權威指南》還探討了IDA的可擴展性。涉及IDA腳本、SDK、外掛程式、載入器模組和處理器模組。最後闡述了IDA在逆向工程中的實際用法,討論了各種編譯器的區別、模糊代碼分析和漏洞分析、IDA外掛程式以及IDA調試器。

編輯推薦

《IDA Pro權威指南》:IDA Pro發行者親自作序推薦,Amazon全五星暢銷圖書,引領你步入IDA Pro和逆向工程的殿堂 。

媒體推薦

“它是迄今為止最全面、最準確、最棒的IDA Pro圖書。”

——Pierre Vandevenne,DataRescue公司的所有人和CEO

“我家裡有好幾本IDA Pro方面的圖書,但當我遇到Chris Eagle的這本佳作時,如獲至寶,其他所有書都可以拋棄了。”

——Amazon讀者評論

作者簡介

Chris EagIe,美國海軍研究生院計算機系副主任、高級講師,著有Gray,4at Hacking,在多種全球性安全會議中發表過演講。

目錄

第一部分 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

相關詞條

相關搜尋

熱門詞條

聯絡我們