C++ 反彙編與逆向分析技術揭秘, 2/e

錢林松,張延清 著

  • 出版商: 機械工業
  • 出版日期: 2021-09-01
  • 售價: $834
  • 貴賓價: 9.5$792
  • 語言: 簡體中文
  • 頁數: 612
  • 裝訂: 平裝
  • ISBN: 7111689917
  • ISBN-13: 9787111689911
  • 相關分類: C++ 程式語言資訊安全
  • 立即出貨 (庫存 < 4)

買這商品的人也買了...

商品描述

這是一部系統講解反彙編與逆向分析技術原理、流程、方法和實用技巧的著作。
本書第1版出版於2011年,10年來暢銷不衰,
成為反彙編與逆向工程領域的標誌性著作,被數十萬安全工程師和C++工程師奉為瑰寶。
在全球學術界和企業界都享有盛譽,故第2版得到了全球15位安全技術專家的傾力推薦。
第2版在技術、工具和案例等方面做了大量的更新和補充。
通過本書,你將掌握以下知識或技能:
?逆向分析技術的工具和原理;
?逆向分析技術的流程和方法;
?逆向分析技術的精髓和實用技巧;
?軟件調試的技術原理,以及代碼運行時的內存表現;
?C++語法的實現機制和反彙編表現形式;

全書共18章,分為三個部分:
第1部分 準備工作 (第1章)
簡單地介紹了編譯器、調試器和反彙編靜態分析工具的使用方法以及反彙編引擎的工作原理;
第二部分C++反彙編揭秘(第2~13章)
以多種編譯器為例解析了每個C/C++知識點的彙編表現形式,通過整理反彙編代碼梳理流程和脈絡,
講解了調試和識別各種C/C++語句的方法,並且深入剖析各知識點的底層機制;
第三部分 逆向分析技術應用(第14~18章)
通過對PEiD、調試器 OllyDbg、木馬、勒索病毒等實際應用的逆向分析,
帶領讀者領路逆向分析技術的魔力,並加深對所學理論知識的理解。

作者簡介

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


張延清
軟件逆向教育專家,看雪論壇技術專家。
2004年從事數控機床加工編程,2006年進入遊戲編程及C/C++開發與逆向分析領域,
2011年就職於武漢科銳軟件技術有限公司,任技術總監兼授課老師。
創立國內Android軟件逆向分析教育課程體系,該課程體係被多家培訓教育機構採用。


科銳·安全實訓領軍者
科銳(www.51asm.com)創辦自2007年,一直專注於逆向分析人才培養,畢業學員逾千人,
廣泛就業於各安全企業,從事技術與技術管理工作。
科銳通過一套嚴格的科學考核體系,確保學員對每一個知識點的掌握,
從而保證教學質量,使每一個畢業學員都能符合企業的用人需求。
真正實現以實踐為主的實訓理念,是我們最終的實訓目標。

目錄大綱

讚譽
序一
序二
序三
前言
第一部分 準備工作
第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