C++反匯編與逆向分析技術(shù)揭秘游客,如果您要查看本帖隱藏內(nèi)容請(qǐng) 回復(fù)
內(nèi)容簡(jiǎn)介
本書既是一本全面而系統(tǒng)地講解反匯編與逆向分析技術(shù)的安全類專著,又是一部深刻揭示C++內(nèi)部工作機(jī)制的程序設(shè)計(jì)類著作。理論與實(shí)踐并重,理論部分系統(tǒng)地講解了C++的各種語法特性和元素的逆向分析方法和流程,重在授人以漁;實(shí)踐部分通過幾個(gè)經(jīng)典的案例演示了逆向分析技術(shù)的具體實(shí)施步驟和方法。
全書共分為三大部分:第一部分主要介紹了VC++6.0、OllyDBG和反匯編靜態(tài)分析工具的使用,以及反匯編引擎的工作原理;第二部分以C/C++語法為導(dǎo)向,以VC++6.0為例,深入解析了每個(gè)C/C++知識(shí)點(diǎn)的匯編表現(xiàn)形式,包括基本數(shù)據(jù)類型、表達(dá)式、流程控制語句、函數(shù)、變量、數(shù)組、指針、結(jié)構(gòu)體、類、構(gòu)造函數(shù)、析構(gòu)函數(shù)、虛函數(shù)、繼承和多重繼承、異常處理等,這部分內(nèi)容重在修煉“內(nèi)功”,不僅講解了調(diào)試和識(shí)別各種C/C++語句的方法,而且還深入剖析了各知識(shí)點(diǎn)的底層機(jī)制;第三部分是逆向分析技術(shù)的實(shí)際應(yīng)用,通過對(duì)PEiD、“熊貓燒香”病毒、OllyDBG調(diào)試器等的逆向分析將理論和實(shí)踐很好地融合在了一起。
本書適合所有軟件安全領(lǐng)域的工作者、想了解C++內(nèi)部機(jī)制的中高級(jí)程序員,以及對(duì)Windows底層原理感興趣的技術(shù)人員閱讀。
作者簡(jiǎn)介
錢林松,資深安全技術(shù)專家、軟件開發(fā)工程師和架構(gòu)師,從事計(jì)算機(jī)安全和軟件開發(fā)工作12年,實(shí)踐經(jīng)驗(yàn)極其豐富。尤其精通軟件逆向分析技術(shù),對(duì)C/C++技術(shù)和Windows的底層機(jī)制也有非常深入的研究。武漢科銳軟件技術(shù)有限公司創(chuàng)始人,教學(xué)經(jīng)驗(yàn)豐富,多年來,為國(guó)內(nèi)計(jì)算機(jī)安全領(lǐng)域培養(yǎng)和輸送了大量的人才;钴S于看雪論壇,有較高的知名度和影響力。
目錄
前言
第一部分 準(zhǔn)備工作
第1章 熟悉工作環(huán)境和相關(guān)工具 / 2
1.1 調(diào)試工具M(jìn)icrosoft Visual C++ 6.0和OllyDBG / 2
1.2 反匯編靜態(tài)分析工具IDA / 5
1.3 反匯編引擎的工作原理 / 11
1.4 本章小結(jié) / 16
第二部分 C++反匯編揭秘
第2章 基本數(shù)據(jù)類型的表現(xiàn)形式 / 18
2.1 整數(shù)類型 / 18
2.1.1 無符號(hào)整數(shù) / 18
2.1.2 有符號(hào)整數(shù) / 18
2.2 浮點(diǎn)數(shù)類型 / 20
2.2.1 浮點(diǎn)數(shù)的編碼方式 / 21
2.2.2 基本的浮點(diǎn)數(shù)指令 / 23
2.3 字符和字符串 / 26
2.3.1 字符的編碼 / 27
2.3.2 字符串的存儲(chǔ)方式 / 28
2.4 布爾類型 / 29
2.5 地址、指針和引用 / 29
2.5.1 指針和地址的區(qū)別 / 30
2.5.2 各類型指針的工作方式 / 31
2.5.3 引用 / 34
2.6 常量 / 35
2.6.1 常量的定義 / 36
2.6.2 #define和const的區(qū)別 / 37
2.7 本章小結(jié) / 38
第3章 認(rèn)識(shí)啟動(dòng)函數(shù),找到用戶入口 / 40
3.1 程序的真正入口 / 40
3.2 了解VC++ 6.0的啟動(dòng)函數(shù) / 40
3.3 main函數(shù)的識(shí)別 / 44
3.4 本章小結(jié) / 46
第4章 觀察各種表達(dá)式的求值過程 / 47
4.1 算術(shù)運(yùn)算和賦值 / 47
4.1.1 各種算術(shù)運(yùn)算的工作形式 / 47
4.1.2 算術(shù)結(jié)果溢出 / 82
4.1.3 自增和自減 / 83
4.2 關(guān)系運(yùn)算和邏輯運(yùn)算 / 85
4.2.1 關(guān)系運(yùn)算和條件跳轉(zhuǎn)的對(duì)應(yīng) / 85
4.2.2 表達(dá)式短路 / 86
4.2.3 條件表達(dá)式 / 88
4.3 位運(yùn)算 / 92
4.4 編譯器使用的優(yōu)化技巧 / 94
4.4.1 流水線優(yōu)化規(guī)則 / 97
4.4.2 分支優(yōu)化規(guī)則 / 101
4.4.3 高速緩存(cache)優(yōu)化規(guī)則 / 101
4.5 一次算法逆向之旅 / 102
4.6 本章小結(jié) / 109
第5章 流程控制語句的識(shí)別 / 110
5.1 if語句 / 110
5.2 if…else…語句 / 112
5.3 用if構(gòu)成的多分支流程 / 115
5.4 switch的真相 / 119
5.5 難以構(gòu)成跳轉(zhuǎn)表的switch / 128
5.6 降低判定樹的高度 / 133
5.7 do/while/for的比較 / 137
5.8 編譯器對(duì)循環(huán)結(jié)構(gòu)的優(yōu)化 / 143
5.9 本章小結(jié) / 148
第6章 函數(shù)的工作原理 / 149
6.1 棧幀的形成和關(guān)閉 / 149
6.2 各種調(diào)用方式的考察 / 152
6.3 使用ebp或esp尋址 / 155
6.4 函數(shù)的參數(shù) / 158
6.5 函數(shù)的返回值 / 160
6.6 回顧 / 163
6.7 本章小結(jié) / 165
第7章 變量在內(nèi)存中的位置和訪問方式 / 166
7.1 全局變量和局部變量的區(qū)別 / 166
7.2 局部靜態(tài)變量的工作方式 / 169
7.3 堆變量 / 173
7.4 本章小結(jié) / 177
第8章 數(shù)組和指針的尋址 / 178
8.1 數(shù)組在函數(shù)內(nèi) / 178
8.2 數(shù)組作為參數(shù) / 181
8.3 數(shù)組作為返回值 / 185
8.4 下標(biāo)尋址和指針尋址 / 189
8.5 多維數(shù)組 / 193
8.6 存放指針類型數(shù)據(jù)的數(shù)組 / 199
8.7 指向數(shù)組的指針變量 / 201
8.8 函數(shù)指針 / 204
8.9 本章小結(jié) / 206
第9章 結(jié)構(gòu)體和類 / 207
9.1 對(duì)象的內(nèi)存布局 / 207
9.2 this指針 / 212
9.3 靜態(tài)數(shù)據(jù)成員 / 217
9.4 對(duì)象作為函數(shù)參數(shù) / 219
9.5 對(duì)象作為返回值 / 226
9.6 本章小結(jié) / 231
第10章 關(guān)于構(gòu)造函數(shù)和析構(gòu)函數(shù) / 233
10.1 構(gòu)造函數(shù)的出現(xiàn)時(shí)機(jī) / 233
10.2 每個(gè)對(duì)象都有默認(rèn)的構(gòu)造函數(shù)嗎 / 243
10.3 析構(gòu)函數(shù)的出現(xiàn)時(shí)機(jī) / 245
10.4 本章小結(jié) / 254
第11章 關(guān)于虛函數(shù) / 256
11.1 虛函數(shù)的機(jī)制 / 256
11.2 虛函數(shù)的識(shí)別 / 261
11.3 本章小結(jié) / 268
第12章 從內(nèi)存角度看繼承和多重繼承 / 269
12.1 識(shí)別類和類之間的關(guān)系 / 270
12.2 多重繼承 / 292
12.3 虛基類 / 298
12.4 菱形繼承 / 299
12.5 本章小結(jié) / 307
第13章 異常處理 / 308
13.1 異常處理的相關(guān)知識(shí) / 308
13.2 異常類型為基本數(shù)據(jù)類型的處理流程 / 314
13.3 異常類型為對(duì)象的處理流程 / 323
13.4 識(shí)別異常處理 / 329
13.5 本章小結(jié) / 341
第三部分 逆向分析技術(shù)應(yīng)用
第14章 PEiD的工作原理分析 / 344
14.1 開發(fā)環(huán)境的識(shí)別 / 344
14.2 開發(fā)環(huán)境的偽造 / 353
14.3 本章小結(jié) / 356
第15章 “熊貓燒香”病毒逆向分析 / 357
15.1 調(diào)試環(huán)境配置 / 357
15.2 病毒程序初步分析 / 358
15.3 “熊貓燒香”的啟動(dòng)過程分析 / 360
15.4 “熊貓燒香”的自我保護(hù)分析 / 366
15.5 “熊貓燒香”的感染過程分析 / 369
15.6 本章小結(jié) / 379
第16章 調(diào)試器OllyDBG的工作原理分析 / 380
16.1 INT3斷點(diǎn) / 380
16.2 內(nèi)存斷點(diǎn) / 385
16.3 硬件斷點(diǎn) / 390
16.4 異常處理機(jī)制 / 396
16.5 加載調(diào)試程序 / 402
16.6 本章小結(jié) / 406
第17章 反匯編代碼的重建與編譯 / 407
17.1 重建反匯編代碼 / 407
17.2 編譯重建后的反匯編代碼 / 410
17.3 本章小結(jié) / 411
參考文獻(xiàn) / 412
|