逆向分析實戰 內容簡介
本書的主要內容為:數據的存儲及表示形式、匯編語言入門、熟悉調試工具OllyDbg、PE工具詳解、PE文件格式實例(包括加殼與脫殼工具的使用)、十六進制編輯器與反編譯工具、IDA與逆向、逆向工具原理實現等。
本書可以作為程序員、安全技術的研究人員、安全技術愛好者閱讀。
逆向分析實戰 目錄
第 1章 數據的存儲及表示形式 1
1.1 進制及進制的轉換 1
1.1.1 現實生活中的進制與計算機的二進制 1
1.1.2 進制的定義 2
1.1.3 進制的轉換 2
1.2 數據寬度、字節序和ASCII碼 4
1.2.1 數據的寬度 4
1.2.2 數值的表示范圍 4
1.2.3 字節序 5
1.2.4 ASCII碼 6
1.3 在OD中查看數據 6
1.4 編程判斷主機字符序 11
1.4.1 字節序相關函數 11
1.4.2 編程判斷主機字節序 11
1.5 總結 13
第 2章 匯編語言入門 14
2.1 x86匯編語言介紹 14
2.1.1 寄存器 15
2.1.2 在OD中認識寄存器 19
2.2 常用匯編指令集 20
2.2.1 指令介紹 20
2.2.2 常用指令介紹 21
2.3 尋址方式 36
2.4 總結 37
第3章 熟悉調試工具OllyDbg 39
3.1 認識OD調試環境 39
3.1.1 啟動調試 39
3.1.2 熟悉OD窗口 42
3.2 OD中的斷點及跟蹤功能 46
3.2.1 OD中設置斷點的方法 47
3.2.2 OD中跟蹤代碼的介紹 52
3.3 OD中的查找功能和編輯功能 53
3.3.1 OD的搜索功能 53
3.3.2 OD修改的編輯功能 55
3.4 OD中的插件功能 56
3.4.1 OD常用插件介紹 56
3.4.2 OD插件腳本編寫 58
3.4.3 OD插件的開發 59
3.5 總結 63
第4章 PE工具詳解 64
4.1 常用PE工具介紹 64
4.1.1 PE工具 64
4.1.2 Stud_PE介紹 65
4.1.3 PEiD介紹 66
4.1.4 LordPE介紹 66
4.2 PE文件格式詳解 67
4.2.1 PE文件結構全貌介紹 68
4.2.2 詳解PE文件結構 70
4.2.3 PE結構的三種地址 84
4.3 數據目錄相關結構詳解 90
4.3.1 導入表 91
4.3.2 導出表 104
4.3.3 重定位表 110
4.4 總結 118
第5章 PE文件格式實例 119
5.1 手寫PE文件 119
5.1.1 手寫PE文件的準備工作 119
5.1.2 用十六進制字節完成PE文件 120
5.2 手工對PE文件進行減肥 132
5.2.1 修改壓縮節區 132
5.2.2 節表合并 135
5.2.3 結構重疊 140
5.2.4 小結 148
5.3 PE結構相關工具 148
5.3.1 增加節區 148
5.3.2 資源編輯 149
5.4 加殼與脫殼工具的使用 154
5.4.1 什么是殼 154
5.4.2 簡單殼的原理 155
5.4.3 加殼工具與脫殼工具的使用 166
5.5 PE32+簡介 180
5.5.1 文件頭 180
5.5.2 可選頭 181
5.6 總結 182
第6章 十六進制編輯器與反編譯工具 183
6.1 C32Asm 183
6.1.1 文件的打開方式 183
6.1.2 反匯編模式 185
6.1.3 十六進制模式 189
6.2 WinHex 193
6.2.1 內存搜索功能 194
6.2.2 使用模板解析數據 196
6.2.3 完成一個簡單的模板 198
6.3 其他十六進制編輯器 200
6.3.1 UltraEdit簡介 200
6.3.2 010Editor簡介 201
6.4 反編譯工具介紹 202
6.4.1 DeDe反編譯工具 202
6.4.2 VB反編譯工具 206
6.4.3 .NET反編譯工具 208
6.4.4 Java反編譯工具 211
6.5 總結 211
第7章 IDA與逆向 213
7.1 IDA工具介紹 213
7.1.1 IDA的啟動與關閉 213
7.1.2 IDA常用界面介紹 216
7.1.3 IDA的腳本功能 228
7.2 C語言代碼逆向基礎 231
7.2.1 函數的識別 232
7.2.2 if…else…結構分析 242
7.2.3 switch結構分析 244
7.2.4 循環結構分析 247
7.3 總結 252
第8章 逆向工具原理實現 253
8.1 PE工具的開發 253
8.1.1 GetProcAddress函數的使用 253
8.1.2 GetProcAddress函數的實現 254
8.2 調試工具的開發 238
8.2.1 常見的三種斷點 259
8.2.2 調試API函數及相關結構體介紹 262
8.2.3 打造一個密碼顯示器 273
8.3 總結 277
參考文獻 278
逆向分析實戰 精彩文摘
了解進制的概念及進制的轉換是學習逆向的基礎,因為計算機使用的進制是二進制,它又不同于我們現實生活中使用的十進制,因此我們必須學習不同的進制及進制之間的轉換。
1.1.1 現實生活中的進制與計算機的二進制
我們在現實生活中會接觸到多種多樣的進制,通常見到的有十進制、十二進制和二十四進制等。下面分別對這幾種進制進行舉例說明。
十進制是每個人從上學就開始接觸和學習的進制表示方法。所謂的十進制,就是逢十進一,最簡單的例子就是 9+1=10。這個無需過多解釋。
十二進制也是我們日常生活中常見的表示方法。所謂的十二進制,就是逢十二進一,例如 12 個月為 1 年,13 個月就是 1 年 1 個月。
二十四進制也是我們日常生活中常見的表示方法。所謂的二十四進制,就是逢二十四進一,例如 24 小時為 1 天,25 小時就是 1 天 1 小時。
介紹了以上現實生活中的例子后,我們再來說說計算機中的二進制。根據前面各種進制的解釋,我們可以想到,二進制就是逢二進一。這里舉個不太恰當的例子,例如 2 斤就是 1 公斤。
- 我的微信
- 掃一掃加好友
-
- 微信公眾號
- 掃一掃關注
-
評論