C++反匯編與逆向分析技術揭秘(第2版)( 簡體 字) | |
作者:林松,張延清 | 類別:1. -> 程式設計 -> C++ -> C++ |
出版社:機械工業出版社 | ![]() 詢問書籍請說出此書號! 缺書 NT售價: 695 元 |
出版日:9/1/2021 | |
頁數:586 | |
光碟數:0 | |
站長推薦: ![]() ![]() ![]() ![]() ![]() | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787111689911 | 【不接受訂購】 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
序一
序二 序三 前言 第一部分 準備工作 第1章 熟悉工作環境和相關工具2 1.1 安裝Visual Studio 20192 1.2 安裝GCC6 1.3 調試工具OllyDbg12 1.4 調試工具x64dbg14 1.5 調試工具WinDbg15 1.6 反匯編靜態分析工具IDA17 1.7 反匯編引擎的工作原理22 1.8 本章小結27 第二部分 C++反匯編揭秘 第2章 基本數據類型的表現形式30 2.1 整數類型30 2.1.1 無符號整數30 2.1.2 有符號整數31 2.2 浮點數類型32 2.2.1 浮點數的編碼方式33 2.2.2 基本的浮點數指令35 2.3 字符和字符串43 2.3.1 字符的編碼43 2.3.2 字符串的存儲方式44 2.4 布爾類型45 2.5 地址、指針和引用46 2.5.1 指針和地址的區別46 2.5.2 各類型指針的工作方式47 2.5.3 引用56 2.6 常量60 2.6.1 常量的定義60 2.6.2 #define和const的區別62 2.7 本章小結65 第3章 認識啟動函數,找到用戶入口66 3.1 程序的真正入口66 3.2 了解VS2019的啟動函數66 3.3 main函數的識別70 3.4 本章小結71 第4章 觀察各種表達式的求值過程72 4.1 算術運算和賦值72 4.1.1 各種算術運算的工作形式72 4.1.2 算術結果溢出130 4.1.3 自增和自減131 4.2 關系運算和邏輯運算136 4.2.1 關系運算和條件跳轉的對應136 4.2.2 表達式短路137 4.2.3 條件表達式141 4.3 位運算149 4.4 編譯器使用的優化技巧152 4.4.1 流水線優化規則155 4.4.2 分支優化規則158 4.4.3 高速緩存優化規則159 4.5 一次算法逆向之旅159 4.6 本章小結164 第5章 流程控制語句的識別165 5.1 if語句165 5.2 if…else…語句168 5.3 用if構成的多分支流程174 5.4 switch的真相180 5.5 難以構成跳轉表的switch196 5.6 降低判定樹的高度201 5.7 do、while、for的比較206 5.8 編譯器對循環結構的優化214 5.9 本章小結220 第6章 函數的工作原理221 6.1 棧幀的形成和關閉221 6.2 各種調用方式的考察222 6.3 使用ebp或esp尋址226 6.4 函數的參數230 6.5 函數的返回值232 6.6 x64調用約定235 6.7 本章小結238 第7章 變量在內存中的位置和訪問方式239 7.1 全局變量和局部變量的區別239 7.2 局部靜態變量的工作方式247 7.3 堆變量252 7.4 本章小結256 第8章 數組和指針的尋址257 8.1 數組在函數內257 8.2 數組作為參數266 8.3 數組作為返回值270 8.4 下標尋址和指針尋址276 8.5 多維數組282 8.6 存放指針類型數據的數組288 8.7 指向數組的指針變量290 8.8 函數指針296 8.9 本章小結299 第9章 結構體和類300 9.1 對象的內存布局300 9.2 this指針305 9.3 靜態數據成員311 9.4 對象作為函數參數314 9.5 對象作為返回值322 9.6 本章小結329 第10章 構造函數和析構函數331 10.1 構造函數的出現時機331 10.2 每個對象是否都有默認的構造函數353 10.3 析構函數的出現時機355 10.4 本章小結375 第11章 虛函數377 11.1 虛函數的機制377 11.2 虛函數的識別383 11.3 本章小結389 第12章 從內存角度看繼承和多重繼承391 12.1 識別類和類之間的關系392 12.2 多重繼承418 12.3 抽象類426 12.4 虛繼承428 12.5 本章小結443 第13章 異常處理445 13.1 異常處理的相關知識445 13.2 異常類型為基本數據類型的處理流程451 13.3 異常類型為對象的處理流程459 13.4 識別異常處理464 13.5 x64異常處理475 13.5.1 RUNTIME_FUNCTION結構476 13.5.2 UNWIND_INFO結構476 13.5.3 UNWIND_CODE結構478 13.5.4 特定于語言的處理程序478 13.5.5 x64 FuncInfo的變化479 13.5.6 還原x64的try…catch481 13.6 本章小結484 第三部分 逆向分析技術應用 第14章 PEiD的工作原理分析486 14.1 開發環境的識別486 14.2 開發環境的偽造494 14.3 本章小結497 第15章 調試器OllyDbg的工作原理分析498 15.1 INT3斷點498 15.2 內存斷點503 15.3 硬件斷點507 15.4 異常處理機制513 15.5 加載調試程序519 15.6 本章小結522 第16章 大灰狼遠控木馬逆向分析523 16.1 調試環境配置523 16.2 病毒程序初步分析524 16.3 啟動過程分析525 16.4 通信協議分析532 16.5 遠控功能分析536 16.6 本章小結551 第17章 WannaCry勒索病毒逆向分析552 17.1 tasksche.exe勒索程序逆向分析552 17.1.1 病毒初始化552 17.1.2 加載病毒核心代碼558 17.1.3 病毒核心代碼562 17.2 mssecsvc.exe蠕蟲程序逆向分析569 17.2.1 蠕蟲病毒代碼初始化569 17.2.2 發送漏洞攻擊代碼573 17.3 永恒之藍MS17-010漏洞原理分析577 17.3.1 漏洞1利用分析577 17.3.2 漏洞2利用分析583 17.3.3 漏洞3利用分析584 17.4 本章小結586 第18章 反匯編代碼的重建與編譯587 18.1 重建反匯編代碼587 18.2 編譯重建后的反匯編代碼590 18.3 本章小結591 參考文獻592 這是一部系統講解反匯編與逆向分析技術原理、流程、方法和實用技巧的著作。
本書第1版出版于2011年,10年來暢銷不衰,成為反匯編與逆向工程領域的標志性著作,被數十萬安全工程師和C++工程師奉為瑰寶。在全球學術界和企業界都享有盛譽,故第2版得到了全球15位安全技術專家的傾力推薦。第2版在技術、工具和案例等方面做了大量的更新和補充。 通過本書,你將掌握以下知識或技能: ?逆向分析技術的工具和原理; ?逆向分析技術的流程和方法; ?逆向分析技術的精髓和實用技巧; ?軟件調試的技術原理,以及代碼運行時的內存表現; ?C++語法的實現機制和反匯編表現形式; 全書共18章,分為三個部分: 第1部分 準備工作 (第1章) 簡單地介紹了編譯器、調試器和反匯編靜態分析工具的使用方法以及反匯編引擎的工作原理; 第二部分C++反匯編揭秘(第2~13章) 以多種編譯器為例解析了每個C/C++知識點的匯編表現形式,通過整理反匯編代碼梳理流程和脈絡,講解了調試和識別各種C/C++語句的方法,并且深入剖析各知識點的底層機制; 第三部分 逆向分析技術應用(第14~18章) 通過對PEiD、調試器 OllyDbg、木馬、勒索病毒等實際應用的逆向分析,帶領讀者領路逆向分析技術的魔力,并加深對所學理論知識的理解。 |