定 價:149.8 元
叢書名:網(wǎng)絡(luò)空間安全實(shí)踐能力分級培養(yǎng)系列教材
- 作者:魯宏偉 陳凱 鄧賢君 許雷永
- 出版時間:2024/1/1
- ISBN:9787115622723
- 出 版 社:人民郵電出版社
- 中圖法分類:TP311.5
- 頁碼:424
- 紙張:
- 版次:01
- 開本:16開
本書根據(jù)本科生和研究生軟件逆向分析相關(guān)課程的教學(xué)需要,以實(shí)例為導(dǎo)引,面向攻防實(shí)踐,將逆向分析基礎(chǔ)和工具融入實(shí)例的剖析過程中,使學(xué)生能夠在解決實(shí)際問題的過程中掌握相關(guān)基礎(chǔ)和常用工具的使用方法。通過對軟件逆向基礎(chǔ)、常見文件格式解析、常用反匯編算法及缺陷分析、Android程序逆向基礎(chǔ)和相關(guān)工具的介紹,讀者能夠掌握基本的逆向分析方法。隨著逆向分析技術(shù)的不斷演進(jìn),一些新的理論和技術(shù)不斷涌現(xiàn),本書圍繞代碼混淆和反混淆、漏洞挖掘及協(xié)議逆向分析技術(shù)的相關(guān)方法和研究進(jìn)展做了詳細(xì)的介紹,以幫助從事相關(guān)研究的讀者了解這些內(nèi)容。
本書既可作為高等院校相關(guān)課程的教材,也可以供從事逆向分析應(yīng)用研究與開發(fā)的工程技術(shù)人員參考。
1.作者從事教學(xué)工作30年,先后撰寫出版了多本教材,主編的"多媒體計算機(jī)技術(shù)"(電子工業(yè)出版社)從2002年的第1版,目前已經(jīng)更新到第5版,是"十一五"國家規(guī)劃教材。
2.作者長期深耕于軟件逆向和協(xié)議分析項目的研發(fā)領(lǐng)域,擁有豐富的實(shí)踐經(jīng)歷,本書匯集了其寶貴的實(shí)踐經(jīng)驗,幫助讀者少走彎路。
3.內(nèi)容豐富實(shí)用,以實(shí)例為導(dǎo)引,深入講解逆向分析方法的應(yīng)用,易學(xué)易用。
魯宏偉,博士,華中科技大學(xué)網(wǎng)絡(luò)空間安全學(xué)院教授,博士生導(dǎo)師。校工會第五屆經(jīng)費(fèi)審查委員會委員,第五屆提案工作委員會委員;擔(dān)任網(wǎng)絡(luò)空間安全學(xué)院教學(xué)指導(dǎo)委員會主任、學(xué)術(shù)委員會委員;網(wǎng)絡(luò)空間安全學(xué)院工會主席。
2018年獲得校工會華中科技大學(xué)“師德先進(jìn)個人”稱號,入選2019年華中科技大學(xué)“華中卓學(xué)學(xué)者”。
主要從事網(wǎng)絡(luò)安全、網(wǎng)絡(luò)應(yīng)用與多媒體技術(shù)等領(lǐng)域的研究,在國內(nèi)外學(xué)術(shù)刊物和會議上發(fā)表論文50余篇。曾三次赴美國硅谷公司進(jìn)行多媒體應(yīng)用軟件合作開發(fā);2005年起,主要從事互聯(lián)網(wǎng)協(xié)議分析軟件的開發(fā),其中包括廣東省公安廳金盾工程項目;2009年起,主要與南京某單位合作開展互聯(lián)網(wǎng)協(xié)議分析軟件的開發(fā)。
承擔(dān)了物聯(lián)網(wǎng)工程和信息安全相關(guān)專業(yè)的本科和研究生教學(xué)工作。近年來出版教材多部,包括“多媒體計算機(jī)技術(shù)”(電子工業(yè)出版社)、“物聯(lián)網(wǎng)應(yīng)用系統(tǒng)設(shè)計”(清華大學(xué)出版社)、“物聯(lián)網(wǎng)系統(tǒng)安全與應(yīng)用”(電子工業(yè)出版社),其中“多媒體計算機(jī)技術(shù)”為國家“十一五”規(guī)劃教材。
陳凱,副教授,碩士生導(dǎo)師。擔(dān)任華中科技大學(xué)網(wǎng)絡(luò)空間安全學(xué)院副院長,擔(dān)任湖北網(wǎng)絡(luò)空間安全學(xué)會理事、本科教學(xué)工作組主任。
致力人才培養(yǎng),獨(dú)立承擔(dān)多門門本科課程和碩士研究生課程教學(xué),發(fā)表多篇有一定影響力的教改論文,出版教材一部,主持多項校級和省級教改項目。潛心做科研,從事計算機(jī)網(wǎng)絡(luò)應(yīng)用及安全、物聯(lián)網(wǎng)安全、工業(yè)互聯(lián)網(wǎng)安全研究,發(fā)表多篇高水平文章,主持和參與多項科研項目,申請專利和軟著多項。
鄧賢君,華中科技大學(xué)網(wǎng)絡(luò)空間安全學(xué)院教授,博士生導(dǎo)師,華中科技大學(xué)網(wǎng)絡(luò)空間安全學(xué)院院長助理,分管學(xué)院學(xué)術(shù)交流和國際化工作,IEEE TCSC“優(yōu)秀青年科學(xué)家”、湖北省“百人計劃”學(xué)者、武漢市“武漢英才”、湖南省芙蓉學(xué)者,擔(dān)任IEEE 加拿大大西洋區(qū)通信學(xué)會副主席、湖北省網(wǎng)絡(luò)空間安全學(xué)會學(xué)術(shù)委員會主任、“華中科技大學(xué)-湖北楚天智能交通股份有限公司人工智能與智能交通技術(shù)中心”技術(shù)中心執(zhí)行主任、華中科技大學(xué)網(wǎng)絡(luò)空間安全學(xué)院“人機(jī)物系統(tǒng)與安全”科研團(tuán)隊負(fù)責(zé)人,擔(dān)任多個國際學(xué)術(shù)會議的程序委員會主席和指導(dǎo)委員會主席。主要從事物聯(lián)網(wǎng)安全、物聯(lián)網(wǎng)可靠性等方面的研究工作。
目錄
第 1章 軟件逆向分析基礎(chǔ) 1
1.1 初識軟件逆向分析 2
1.2 軟件逆向分析的目的 7
1.2.1 與安全相關(guān)的應(yīng)用 7
1.2.2 軟件開發(fā)中的逆向分析 9
1.3 軟件逆向分析的合法性 11
1.3.1 可以規(guī)避的例外 11
1.3.2 軟件逆向分析與版權(quán)之爭 12
1.3.3 漏洞利用 14
1.4 如何掌握軟件逆向分析方法 14
1.4.1 目標(biāo)要明確 15
1.4.2 擁有積極的心態(tài) 15
1.4.3 感受逆向分析的樂趣 15
1.4.4 學(xué)會檢索 16
1.4.5 實(shí)踐 實(shí)踐 再實(shí)踐 16
1.4.6 保持平和的心態(tài) 17
1.5 軟件逆向分析過程 17
1.5.1 靜態(tài)分析 17
1.5.2 動態(tài)分析 32
思考題 37
第 2章 文件格式解析 38
2.1 PE文件 38
2.1.1 基本概念 38
2.1.2 頭部信息 40
2.1.3 區(qū)塊信息 45
2.1.4 導(dǎo)入表和導(dǎo)出表 48
2.2 ELF文件 51
2.2.1 ELF文件的基本格式 51
2.2.2 ELF文件頭部信息 52
2.2.3 ELF文件的節(jié)區(qū) 56
2.2.4 ELF文件的段 61
2.2.5 ELF文件的“.dynamic”節(jié)區(qū) 65
2.3 “.dex”文件 69
2.3.1 “.dex”文件簡介 70
2.3.2 “.dex”文件結(jié)構(gòu) 71
2.4 “.odex”文件結(jié)構(gòu) 81
思考題 83
第3章 理解程序邏輯和算術(shù)運(yùn)算 84
3.1 數(shù)據(jù)的存儲和訪問 84
3.1.1 常量和變量 84
3.1.2 基本數(shù)據(jù)類型 88
3.1.3 指針、數(shù)組和字符串 94
3.1.4 結(jié)構(gòu)體、聯(lián)合體 98
3.1.5 函數(shù) 100
3.2 基本程序邏輯 104
3.2.1 無條件分支指令 104
3.2.2 條件分支指令 106
3.2.3 循環(huán)指令 109
3.3 算術(shù)運(yùn)算 112
3.3.1 算術(shù)標(biāo)志位 112
3.3.2 整數(shù)運(yùn)算 113
思考題 118
第4章 常用反匯編算法與分析 119
4.1 反匯編算法概述 119
4.2 線性掃描反匯編算法 121
4.3 遞歸下降反匯編算法 124
4.4 反匯編算法缺陷分析 128
4.4.1 線性掃描反匯編算法缺陷示例 129
4.4.2 遞歸下降反匯編算法缺陷示例 132
4.5 反匯編案例 137
思考題 138
第5章 反匯編算法優(yōu)化 139
5.1 基于超集的反匯編算法——Multiverse 139
5.1.1 存在的挑戰(zhàn) 140
5.1.2 解決思路 144
5.1.3 映射 146
5.1.4 重寫 150
5.1.5 實(shí)現(xiàn) 151
5.2 基于概率提示的反匯編算法——PD 152
5.2.1 概述 153
5.2.2 X86指令的概率特征 155
5.2.3 概率提示反匯編算法 158
5.2.4 算法實(shí)現(xiàn) 163
5.3 基于多路徑探索的動態(tài)反匯編算法 167
5.3.1 指令執(zhí)行軌跡 168
5.3.2 多路徑探索 169
思考題 170
第6章 Android程序逆向分析基礎(chǔ) 171
6.1 Android程序的代碼結(jié)構(gòu) 171
6.1.1 壓縮文件結(jié)構(gòu) 173
6.1.2 反編譯文件 179
6.2 Android虛擬機(jī):Dalvik和ART 181
6.2.1 Dalvik虛擬機(jī) 181
6.2.2 ART虛擬機(jī) 182
6.2.3 “.apk”程序的執(zhí)行流程 183
6.3 smali語言和基本語法 183
6.3.1 smali代碼格式 185
6.3.2 smali語言的數(shù)據(jù)類型 187
6.3.3 寄存器 187
6.3.4 方法定義 189
6.3.5 常見Dalvik指令集 189
6.4 JNI 197
6.4.1 Java中調(diào)用Native函數(shù) 197
6.4.2 C/C++中調(diào)用Java函數(shù) 200
思考題 200
第7章 Android逆向分析工具及應(yīng)用 201
7.1 反編譯工具 201
7.1.1 smali/baksmali 201
7.1.2 apktool 202
7.1.3 ShakaApktool 204
7.1.4 Android Killer 204
7.1.5 Jeb 208
7.1.6 Jadx 213
7.1.7 GDA 216
7.2 動態(tài)分析工具 217
7.2.1 Xposed框架 218
7.2.2 Frida 224
7.2.3 Objection 230
7.3 協(xié)議分析工具 230
7.3.1 Wireshark 230
7.3.2 Fiddler 231
7.3.3 Burp Suite 231
思考題 232
第8章 軟件保護(hù)與反保護(hù)的基本方法 233
8.1 軟件保護(hù)技術(shù)概述 233
8.1.1 軟件加密技術(shù) 234
8.1.2 防篡改技術(shù) 234
8.1.3 反調(diào)試技術(shù) 234
8.1.4 殼保護(hù)技術(shù) 235
8.2 移動終端軟件保護(hù)技術(shù)概述 235
8.2.1 靜態(tài)篡改防護(hù)技術(shù) 236
8.2.2 動態(tài)篡改防護(hù)技術(shù) 237
8.3 對ELF文件加殼 238
8.3.1 ELF文件的加載過程 238
8.3.2 常見ELF文件的加殼原理 239
8.3.3 包含式ELF文件加殼方法 241
8.4 Android應(yīng)用加固 243
8.4.1 “.dex”文件加固方法概述 243
8.4.2 通用加殼技術(shù) 244
8.4.3 動態(tài)脫殼方法 247
8.5 Android應(yīng)用脫殼分析實(shí)例 249
8.5.1 Android中“.so”文件的加載流程分析 249
8.5.2 Android動態(tài)調(diào)試過程 249
8.5.3 加固方式分析 251
8.5.4 “.so”文件分析 252
8.5.5 還原JNI_OnLoad 255
8.5.6 動態(tài)分析 260
思考題 270
第9章 代碼混淆與反混淆 271
9.1 代碼混淆技術(shù)基本概念 271
9.1.1 代碼混淆技術(shù)的定義 272
9.1.2 代碼混淆技術(shù)的分類 273
9.1.3 代碼混淆技術(shù)與逆向分析的關(guān)系 273
9.2 常見的基于源代碼的代碼混淆技術(shù) 274
9.2.1 符號混淆 274
9.2.2 結(jié)構(gòu)混淆 276
9.2.3 控制流混淆 278
9.2.4 數(shù)據(jù)混淆 280
9.3 二進(jìn)制代碼混淆技術(shù) 281
9.3.1 插入花指令 281
9.3.2 代碼亂序 283
9.3.3 常量展開 283
9.3.4 調(diào)用地址隱藏 284
9.3.5 指令移動 284
9.3.6 數(shù)據(jù)混淆 285
9.4 OLLVM原理 285
9.4.1 LLVM原理介紹 285
9.4.2 OLLVM簡介 286
9.5 反混淆技術(shù) 291
9.5.1 反混淆技術(shù)研究概況 291
9.5.2 常用的反混淆技術(shù) 295
9.5.3 基于IAT的反混淆技術(shù) 296
9.5.4 控制流平坦化反混淆技術(shù) 300
思考題 306
第 10章 基于二進(jìn)制代碼的漏洞挖掘技術(shù) 307
10.1 漏洞概述 307
10.1.1 bug與漏洞 307
10.1.2 漏洞挖掘、漏洞分析、漏洞利用 307
10.2 漏洞挖掘技術(shù)概述 308
10.2.1 人工分析技術(shù) 309
10.2.2 Fuzzing 309
10.2.3 補(bǔ)丁比對技術(shù) 310
10.2.4 靜態(tài)分析技術(shù) 311
10.2.5 動態(tài)分析技術(shù) 313
10.2.6 基于機(jī)器學(xué)習(xí)方法 315
10.3 漏洞分析常用工具 316
10.3.1 靜態(tài)分析工具CodeSonar 316
10.3.2 用于滲透測試的幾種漏洞掃描工具 317
10.3.3 Fuzzing工具 318
10.4 可感知應(yīng)用的進(jìn)化模糊測試工具—— VUzzer 320
10.4.1 基礎(chǔ)知識 320
10.4.2 問題分析 321
10.4.3 方法分析 325
10.4.4 設(shè)計與實(shí)現(xiàn) 328
10.5 固件漏洞分析及實(shí)例 332
10.5.1 典型固件漏洞分析方法梳理 333
10.5.2 固件漏洞分析實(shí)例 336
思考題 342
第 11章 協(xié)議逆向分析技術(shù) 343
11.1 協(xié)議分析概述 343
11.1.1 網(wǎng)絡(luò)協(xié)議分析的發(fā)展歷程 343
11.1.2 協(xié)議分析技術(shù)的分類 344
11.2 協(xié)議逆向分析基礎(chǔ) 345
11.2.1 協(xié)議逆向分析模型 345
11.2.2 消息格式提取方法 348
11.2.3 狀態(tài)機(jī)推斷算法 354
11.3 網(wǎng)絡(luò)協(xié)議分析技術(shù) 356
11.3.1 基于網(wǎng)絡(luò)流量的協(xié)議逆向分析 356
11.3.2 基于程序分析的協(xié)議逆向分析 358
11.4 工業(yè)控制協(xié)議分析 359
11.4.1 工業(yè)控制協(xié)議安全現(xiàn)狀 359
11.4.2 工業(yè)控制協(xié)議安全分析 360
11.4.3 工業(yè)控制協(xié)議的特點(diǎn) 362
11.4.4 工業(yè)控制協(xié)議規(guī)范解析 363
11.4.5 動態(tài)污點(diǎn)分析技術(shù)在協(xié)議逆向分析中的應(yīng)用 363
11.4.6 基本塊粒度工業(yè)控制協(xié)議字段邊界逆向分析算法 365
思考題 369
附錄A 一個簡單程序的逆向分析 370
A.1 觀察程序的行為 370
A.2 靜態(tài)分析 371
A.2.1 尋找main函數(shù) 372
A.2.2 main()函數(shù)分析 377
A.2.3 dword_5F3088分析 381
A.2.4 a1分析 383
A.2.5 獲取Flag 383
A.2.6 編寫腳本 384
A.2.7 解決反編譯失敗問題 385
A.3 動態(tài)分析 388
A.3.1 選擇調(diào)試器 389
A.3.2 跟蹤程序 389
A.4 后記 391
思考題 393
附錄B 惡意程序逆向分析示例 394
B.1 靜態(tài)分析 394
B.1.1 查殼 394
B.1.2 查看導(dǎo)入函數(shù) 395
B.1.3 查看關(guān)鍵字符串 395
B.1.4 查找程序入口 396
B.2 動態(tài)分析 396
B.2.1 觀察程序行為 396
B.2.2 分析程序行為 397
B.3 程序修復(fù) 405
思考題 408
附錄C Android程序逆向分析示例 409
C.1 靜態(tài)分析 409
C.1.1 定位程序入口 409
C.1.2 定位錯誤提示 410
C.1.3 函數(shù)securityCheck分析 411
C.2 動態(tài)分析 412
C.2.1 “.so”文件的加載過程 413
C.2.2 init_array分析 413
C.2.3 JNI_OnLoad分析 415
C.2.4 在JNI_OnLoad中設(shè)置斷點(diǎn) 418
C.2.5 在securityCheck中設(shè)置斷點(diǎn) 424
思考題 424