本書的主要內(nèi)容為:數(shù)據(jù)的存儲(chǔ)及表示形式、匯編語言入門、熟悉調(diào)試工具OllyDbg、PE工具詳解、PE文件格式實(shí)例(包括加殼與脫殼工具的使用)、十六進(jìn)制編輯器與反編譯工具、IDA與逆向、逆向工具原理實(shí)現(xiàn)等。
本書可以作為程序員、安全技術(shù)的研究人員、安全技術(shù)愛好者閱讀。
冀云,對(duì)安全技術(shù)和逆向的技術(shù)有很好的研究,熟悉Windows、Linux等平臺(tái)上的安全技術(shù),熱愛分享技術(shù)。寫作了《C++ 黑客編程揭秘與防范》,得到讀者的好評(píng)。
第 1章 數(shù)據(jù)的存儲(chǔ)及表示形式 1
1.1 進(jìn)制及進(jìn)制的轉(zhuǎn)換 1
1.1.1 現(xiàn)實(shí)生活中的進(jìn)制與計(jì)算機(jī)的二進(jìn)制 1
1.1.2 進(jìn)制的定義 2
1.1.3 進(jìn)制的轉(zhuǎn)換 2
1.2 數(shù)據(jù)寬度、字節(jié)序和ASCII碼 4
1.2.1 數(shù)據(jù)的寬度 4
1.2.2 數(shù)值的表示范圍 4
1.2.3 字節(jié)序 5
1.2.4 ASCII碼 6
1.3 在OD中查看數(shù)據(jù) 6
1.4 編程判斷主機(jī)字符序 11
1.4.1 字節(jié)序相關(guān)函數(shù) 11
1.4.2 編程判斷主機(jī)字節(jié)序 11
1.5 總結(jié) 13
第 2章 匯編語言入門 14
2.1 x86匯編語言介紹 14
2.1.1 寄存器 15
2.1.2 在OD中認(rèn)識(shí)寄存器 19
2.2 常用匯編指令集 20
2.2.1 指令介紹 20
2.2.2 常用指令介紹 21
2.3 尋址方式 36
2.4 總結(jié) 37
第3章 熟悉調(diào)試工具OllyDbg 39
3.1 認(rèn)識(shí)OD調(diào)試環(huán)境 39
3.1.1 啟動(dòng)調(diào)試 39
3.1.2 熟悉OD窗口 42
3.2 OD中的斷點(diǎn)及跟蹤功能 46
3.2.1 OD中設(shè)置斷點(diǎn)的方法 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插件的開發(fā) 59
3.5 總結(jié) 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文件結(jié)構(gòu)全貌介紹 68
4.2.2 詳解PE文件結(jié)構(gòu) 70
4.2.3 PE結(jié)構(gòu)的三種地址 84
4.3 數(shù)據(jù)目錄相關(guān)結(jié)構(gòu)詳解 90
4.3.1 導(dǎo)入表 91
4.3.2 導(dǎo)出表 104
4.3.3 重定位表 110
4.4 總結(jié) 118
第5章 PE文件格式實(shí)例 119
5.1 手寫PE文件 119
5.1.1 手寫PE文件的準(zhǔn)備工作 119
5.1.2 用十六進(jìn)制字節(jié)完成PE文件 120
5.2 手工對(duì)PE文件進(jìn)行減肥 132
5.2.1 修改壓縮節(jié)區(qū) 132
5.2.2 節(jié)表合并 135
5.2.3 結(jié)構(gòu)重疊 140
5.2.4 小結(jié) 148
5.3 PE結(jié)構(gòu)相關(guān)工具 148
5.3.1 增加節(jié)區(qū) 148
5.3.2 資源編輯 149
5.4 加殼與脫殼工具的使用 154
5.4.1 什么是殼 154
5.4.2 簡(jiǎn)單殼的原理 155
5.4.3 加殼工具與脫殼工具的使用 166
5.5 PE32+簡(jiǎn)介 180
5.5.1 文件頭 180
5.5.2 可選頭 181
5.6 總結(jié) 182
第6章 十六進(jìn)制編輯器與反編譯工具 183
6.1 C32Asm 183
6.1.1 文件的打開方式 183
6.1.2 反匯編模式 185
6.1.3 十六進(jìn)制模式 189
6.2 WinHex 193
6.2.1 內(nèi)存搜索功能 194
6.2.2 使用模板解析數(shù)據(jù) 196
6.2.3 完成一個(gè)簡(jiǎn)單的模板 198
6.3 其他十六進(jìn)制編輯器 200
6.3.1 UltraEdit簡(jiǎn)介 200
6.3.2 010Editor簡(jiǎn)介 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 總結(jié) 211
第7章 IDA與逆向 213
7.1 IDA工具介紹 213
7.1.1 IDA的啟動(dòng)與關(guān)閉 213
7.1.2 IDA常用界面介紹 216
7.1.3 IDA的腳本功能 228
7.2 C語言代碼逆向基礎(chǔ) 231
7.2.1 函數(shù)的識(shí)別 232
7.2.2 if…else…結(jié)構(gòu)分析 242
7.2.3 switch結(jié)構(gòu)分析 244
7.2.4 循環(huán)結(jié)構(gòu)分析 247
7.3 總結(jié) 252
第8章 逆向工具原理實(shí)現(xiàn) 253
8.1 PE工具的開發(fā) 253
8.1.1 GetProcAddress函數(shù)的使用 253
8.1.2 GetProcAddress函數(shù)的實(shí)現(xiàn) 254
8.2 調(diào)試工具的開發(fā) 238
8.2.1 常見的三種斷點(diǎn) 259
8.2.2 調(diào)試API函數(shù)及相關(guān)結(jié)構(gòu)體介紹 262
8.2.3 打造一個(gè)密碼顯示器 273
8.3 總結(jié) 277
參考文獻(xiàn) 278