C++反彙編與逆向分析技術揭秘

C++反彙編與逆向分析技術揭秘

《C++反彙編與逆向分析技術揭秘》本書既是一本全面而系統地講解反彙編與逆向分析技術的安全類專著,又是一部深刻揭示C++內部工作機制的程式設計類著作。理論與實踐並重,理論部分系統地講解了C++的各種語法特性和元素的逆向分析方法和流程,重在授人以漁;實踐部分通過幾個經典的案例演示了逆向分析技術的具體實施步驟和方法。

基本介紹

  • 書名:C++反彙編與逆向分析技術揭秘
  • 作者:錢林松,趙海旭
  • ISBN:9787111356332
  • 出版社機械工業出版社
  • 出版時間:2011-10-1
  • 裝幀:平裝
內容簡介,作者簡介,目錄,

內容簡介

全書共分為三大部分:第一部分主要介紹了VC++6.0、OllyDBG和反彙編靜態分析工具的使用,以及反彙編引擎的工作原理;第二部分以C/C++語法為導向,以VC++6.0為例,深入解析了每個C/C++知識點的彙編表現形式,包括基本數據類型、表達式、流程控制語句、函式、變數、數組、指針、結構體、類、構造函式、析構函式、虛函式、繼承和多重繼承、異常處理等,這部分內容重在修煉“內功”,不僅講解了調試和識別各種C/C++語句的方法,而且還深入剖析了各知識點的底層機制;第三部分是逆向分析技術的實際套用,通過對PEiD、“熊貓燒香”病毒、OllyDBG調試器等的逆向分析將理論和實踐很好地融合在了一起。
本書適合幾乎所有軟體安全領域的工作者、想了解C++內部機制的中高級程式設計師,以及對Windows底層原理感興趣的技術人員閱讀。

作者簡介

錢林松,資深安全技術專家、軟體開發工程師和架構師,從事計算機安全和軟體開發工作12年,實踐經驗極其豐富。尤其精通軟體逆向分析技術,對C/C++技術和Windows的底層機制也有非常深入的研究。武漢科銳軟體技術有限公司創始人,教學經驗豐富,多年來,為國內計算機安全領域培養和輸送了大量的人才。活躍於看雪論壇,有較高的知名度和影響力。

目錄

前言
第一部分 準備工作
第1章 熟悉工作環境和相關工具 / 2
1.1 調試工具Microsoft Visual C++ 6.0和OllyDBG / 2
1.2 反彙編靜態分析工具IDA / 5
1.3 反彙編引擎的工作原理 / 11
1.4 本章小結 / 16
第二部分 C++反彙編揭秘
第2章 基本數據類型的表現形式 / 18
2.1 整數類型 / 18
2.1.1 無符號整數 / 18
2.1.2 有符號整數 / 18
2.2 浮點數類型 / 20
2.2.1 浮點數的編碼方式 / 21
2.2.2 基本的浮點數指令 / 23
2.3 字元和字元串 / 26
2.3.1 字元的編碼 / 27
2.3.2 字元串的存儲方式 / 28
2.4 布爾類型 / 29
2.5 地址、指針和引用 / 29
2.5.1 指針和地址的區別 / 30
2.5.2 各類型指針的工作方式 / 31
2.5.3 引用 / 34
2.6 常量 / 35
2.6.1 常量的定義 / 36
2.6.2 #define和const的區別 / 37
2.7 本章小結 / 38
第3章 認識啟動函式,找到用戶入口 / 40
3.1 程式的真正入口 / 40
3.2 了解VC++ 6.0的啟動函式 / 40
3.3 main函式的識別 / 44
3.4 本章小結 / 46
第4章 觀察各種表達式的求值過程 / 47
4.1 算術運算和賦值 / 47
4.1.1 各種算術運算的工作形式 / 47
4.1.2 算術結果溢出 / 82
4.1.3 自增和自減 / 83
4.2 關係運算和邏輯運算 / 85
4.2.1 關係運算和條件跳轉的對應 / 85
4.2.2 表達式短路 / 86
4.2.3 條件表達式 / 88
4.3 位運算 / 92
4.4 編譯器使用的最佳化技巧 / 94
4.4.1 流水線最佳化規則 / 97
4.4.2 分支最佳化規則 / 101
4.4.3 高速快取(cache)最佳化規則 / 101
4.5 一次算法逆向之旅 / 102
4.6 本章小結 / 109
第5章 流程控制語句的識別 / 110
5.1 if語句 / 110
5.2 if…else…語句 / 112
5.3 用if構成的多分支流程 / 115
5.4 switch的真相 / 119
5.5 難以構成跳轉表的switch / 128
5.6 降低判定樹的高度 / 133
5.7 do/while/for的比較 / 137
5.8 編譯器對循環結構的最佳化 / 143
5.9 本章小結 / 148
第6章 函式的工作原理 / 149
6.1 棧幀的形成和關閉 / 149
6.2 各種調用方式的考察 / 152
6.3 使用ebp或esp定址 / 155
6.4 函式的參數 / 158
6.5 函式的返回值 / 160
6.6 回顧 / 163
6.7 本章小結 / 165
第7章 變數在記憶體中的位置和訪問方式 / 166
7.1 全局變數和局部變數的區別 / 166
7.2 局部靜態變數的工作方式 / 169
7.3 堆變數 / 173
7.4 本章小結 / 177
第8章 數組和指針的定址 / 178
8.1 數組在函式內 / 178
8.2 數組作為參數 / 181
8.3 數組作為返回值 / 185
8.4 下標定址和指針定址 / 189
8.5 多維數組 / 193
8.6 存放指針類型數據的數組 / 199
8.7 指向數組的指針變數 / 201
8.8 函式指針 / 204
8.9 本章小結 / 206
第9章 結構體和類 / 207
9.1 對象的記憶體布局 / 207
9.2 this指針 / 212
9.3 靜態數據成員 / 217
9.4 對象作為函式參數 / 219
9.5 對象作為返回值 / 226
9.6 本章小結 / 231
第10章 關於構造函式和析構函式 / 233
10.1 構造函式的出現時機 / 233
10.2 每個對象都有默認的構造函式嗎 / 243
10.3 析構函式的出現時機 / 245
10.4 本章小結 / 254
第11章 關於虛函式 / 256
11.1 虛函式的機制 / 256
11.2 虛函式的識別 / 261
11.3 本章小結 / 268
第12章 從記憶體角度看繼承和多重繼承 / 269
12.1 識別類和類之間的關係 / 270
12.2 多重繼承 / 292
12.3 虛基類 / 298
12.4 菱形繼承 / 299
12.5 本章小結 / 307
第13章 異常處理 / 308
13.1 異常處理的相關知識 / 308
13.2 異常類型為基本數據類型的處理流程 / 314
13.3 異常類型為對象的處理流程 / 323
13.4 識別異常處理 / 329
13.5 本章小結 / 341
第三部分 逆向分析技術套用
第14章 PEiD的工作原理分析 / 344
14.1 開發環境的識別 / 344
14.2 開發環境的偽造 / 353
14.3 本章小結 / 356
第15章 “熊貓燒香”病毒逆向分析 / 357
15.1 調試環境配置 / 357
15.2 病毒程式初步分析 / 358
15.3 “熊貓燒香”的啟動過程分析 / 360
15.4 “熊貓燒香”的自我保護分析 / 366
15.5 “熊貓燒香”的感染過程分析 / 369
15.6 本章小結 / 379
第16章 調試器OllyDBG的工作原理分析 / 380
16.1 INT3斷點 / 380
16.2 記憶體斷點 / 385
16.3 硬體斷點 / 390
16.4 異常處理機制 / 396
16.5 載入調試程式 / 402
16.6 本章小結 / 406
第17章 反彙編代碼的重建與編譯 / 407
17.1 重建反彙編代碼 / 407
17.2 編譯重建後的反彙編代碼 / 410
17.3 本章小結 / 411
參考文獻 / 412

相關詞條

熱門詞條

聯絡我們