關(guān)于我們
書(shū)單推薦
新書(shū)推薦
|
加密與解密(第4版) 讀者對(duì)象:本書(shū)適合安全技術(shù)相關(guān)工作者、對(duì)逆向調(diào)試技術(shù)感興趣的人、對(duì)軟件保護(hù)感興趣的軟件開(kāi)發(fā)人員、相關(guān)專業(yè)在校學(xué)生及關(guān)注個(gè)人信息安全、計(jì)算機(jī)安全技術(shù)并想了解技術(shù)內(nèi)幕的讀者閱讀。
本書(shū)以軟件逆向?yàn)榍腥朦c(diǎn),講述了軟件安全領(lǐng)域相關(guān)的基礎(chǔ)知識(shí)和技能。讀者閱讀本書(shū)后,很容易就能在逆向分析、漏洞分析、安全編程、病毒分析等領(lǐng)域進(jìn)行擴(kuò)展。這些知識(shí)點(diǎn)的相互關(guān)聯(lián),將促使讀者開(kāi)闊思路,融會(huì)貫通,領(lǐng)悟更多的學(xué)習(xí)方法,提升自身的學(xué)習(xí)能力。本書(shū)適合安全技術(shù)相關(guān)工作者、對(duì)逆向調(diào)試技術(shù)感興趣的人、對(duì)軟件保護(hù)感興趣的軟件開(kāi)發(fā)人員、相關(guān)專業(yè)在校學(xué)生及關(guān)注個(gè)人信息安全、計(jì)算機(jī)安全技術(shù)并想了解技術(shù)內(nèi)幕的讀者閱讀。
段鋼,國(guó)內(nèi)信息安全領(lǐng)域具有廣泛影響力的安全網(wǎng)站看雪學(xué)院的創(chuàng)始人和運(yùn)營(yíng)管理者,長(zhǎng)期致力于信息安全技術(shù)研究,對(duì)當(dāng)前安全技術(shù)的發(fā)展有深入思考。參與和組織專業(yè)人士推出的十多部技術(shù)專著和相關(guān)書(shū)籍,有不少入選為大學(xué)信息技術(shù)專業(yè)的教輔材料,如《加密與解密》等,影響廣泛。在盛大和眾人網(wǎng)絡(luò)的多年工作經(jīng)歷,使得對(duì)安全防護(hù)有深刻的認(rèn)識(shí)和理解。在2016年創(chuàng)建上?囱┛萍加邢薰,項(xiàng)目以看雪學(xué)院為基礎(chǔ),構(gòu)建一個(gè)提供B2B、B2C信息安全服務(wù)的綜合平臺(tái)。
基礎(chǔ)篇
第1章 基礎(chǔ)知識(shí) 2
1.1 什么是加密與解密 2
1.1.1 軟件的加密與解密 2
1.1.2 軟件逆向工程 2
1.1.3 逆向分析技術(shù) 3
1.2 文本字符 4
1.2.1 ASCII與Unicode字符集 4
1.2.2 字節(jié)存儲(chǔ)順序 6
1.3 Windows操作系統(tǒng) 6
1.3.1 Win32 API函數(shù) 6
1.3.2 WOW64 9
1.3.3 Windows消息機(jī)制 9
1.3.4 虛擬內(nèi)存 11
調(diào)試篇
第2章 動(dòng)態(tài)分析技術(shù) 14
2.1 OllyDbg調(diào)試器 14
2.1.1 OllyDbg的界面 14
2.1.2 OllyDbg的配置 15
2.1.3 基本操作 16
2.1.4 常用斷點(diǎn) 27
2.1.5 插件 35
2.1.6 Run trace 36
2.1.7 Hit trace 37
2.1.8 調(diào)試符號(hào) 37
2.1.9 加載程序 39
2.1.10 OllyDbg的常見(jiàn)問(wèn)題 40
2.2 x64dbg調(diào)試器 42
2.3 MDebug調(diào)試器 44
2.3.1 MDebug的界面 44
2.3.2 表達(dá)式 45
2.3.3 調(diào)試 45
2.3.4 斷點(diǎn) 46
2.3.5 MDebug的其他功能 47
2.4 WinDbg調(diào)試器 47
2.4.1 WinDbg的安裝與配置 47
2.4.2 調(diào)試過(guò)程 51
2.4.3 斷點(diǎn)命令 51
2.4.4 棧窗口 53
2.4.5 內(nèi)存命令 55
2.4.6 腳本 56
2.4.7 調(diào)試功能擴(kuò)展 58
2.4.8 小結(jié) 59
第3章 靜態(tài)分析技術(shù) 60
3.1 文件類型分析 60
3.2 反匯編引擎 61
3.2.1 OllyDbg的ODDisasm 61
3.2.2 BeaEngine 61
3.2.3 Udis86 61
3.2.4 Capstone 62
3.2.5 AsmJit 63
3.2.6 Keystone 64
3.2.7 小結(jié) 64
3.3 靜態(tài)反匯編 65
3.3.1 IDA Pro簡(jiǎn)介 65
3.3.2 IDA的配置 66
3.3.3 IDA主窗口 68
3.3.4 交叉參考 69
3.3.5 參考重命名 70
3.3.6 標(biāo)簽的用法 71
3.3.7 格式化指令操作數(shù) 71
3.3.8 函數(shù)的操作 72
3.3.9 代碼和數(shù)據(jù)轉(zhuǎn)換 72
3.3.10 字符串 73
3.3.11 數(shù)組 74
3.3.12 結(jié)構(gòu)體 75
3.3.13 枚舉類型 79
3.3.14 變量 80
3.3.15 FLIRT 81
3.3.16 IDC腳本 82
3.3.17 插件 86
3.3.18 IDA調(diào)試器 87
3.3.19 遠(yuǎn)程調(diào)試 90
3.3.20 其他功能 93
3.3.21 小結(jié) 94
3.4 十六進(jìn)制工具 94
3.5 靜態(tài)分析技術(shù)應(yīng)用實(shí)例 97
3.5.1 解密初步 97
3.5.2 逆向工程初步 99
解密篇
第4章 逆向分析技術(shù) 102
4.1 32位軟件逆向技術(shù) 102
4.1.1 啟動(dòng)函數(shù) 102
4.1.2 函數(shù) 103
4.1.3 數(shù)據(jù)結(jié)構(gòu) 111
4.1.4 虛函數(shù) 115
4.1.5 控制語(yǔ)句 117
4.1.6 循環(huán)語(yǔ)句 124
4.1.7 數(shù)學(xué)運(yùn)算符 125
4.1.8 文本字符串 128
4.1.9 指令修改技巧 130
4.2 64位軟件逆向技術(shù) 131
4.2.1 寄存器 131
4.2.2 函數(shù) 132
4.2.3 數(shù)據(jù)結(jié)構(gòu) 142
4.2.4 控制語(yǔ)句 145
4.2.5 循環(huán)語(yǔ)句 154
4.2.6 數(shù)學(xué)運(yùn)算符 158
4.2.7 虛函數(shù) 169
4.2.8 小結(jié) 193
第5章 演示版保護(hù)技術(shù) 194
5.1 序列號(hào)保護(hù)方式 194
5.1.1 序列號(hào)保護(hù)機(jī)制 194
5.1.2 如何攻擊序列號(hào)保護(hù)機(jī)制 195
5.1.3 字符串比較形式 197
5.1.4 制作注冊(cè)機(jī) 198
5.2 警告窗口 203
5.3 時(shí)間限制 205
5.3.1 計(jì)時(shí)器 205
5.3.2 時(shí)間限制 205
5.3.3 拆解時(shí)間限制保護(hù) 206
5.4 菜單功能限制 207
5.4.1 相關(guān)函數(shù) 207
5.4.2 拆解菜單限制保護(hù) 208
5.5 KeyFile保護(hù) 208
5.5.1 相關(guān)API函數(shù) 208
5.5.2 拆解KeyFile保護(hù) 209
5.6 網(wǎng)絡(luò)驗(yàn)證 213
5.6.1 相關(guān)函數(shù) 214
5.6.2 破解網(wǎng)絡(luò)驗(yàn)證的一般思路 214
5.7 光盤(pán)檢測(cè) 219
5.7.1 相關(guān)函數(shù) 219
5.7.2 拆解光盤(pán)保護(hù) 220
5.8 只運(yùn)行1個(gè)實(shí)例 221
5.8.1 實(shí)現(xiàn)方法 221
5.8.2 實(shí)例 222
5.9 常用斷點(diǎn)設(shè)置技巧 222
第6章 加密算法 223
6.1 單向散列算法 223
6.1.1 MD5算法 223
6.1.2 SHA算法 227
6.1.3 SM3密碼雜湊算法 231
6.1.4 小結(jié) 231
6.2 對(duì)稱加密算法 231
6.2.1 RC4流密碼 231
6.2.2 TEA算法 233
6.2.3 IDEA算法 236
6.2.4 BlowFish算法 243
6.2.5 AES算法 246
6.2.6 SM4分組密碼算法 259
6.2.7 小結(jié) 259
6.3 公開(kāi)密鑰加密算法 259
6.3.1 RSA算法 260
6.3.2 ElGamal公鑰算法 264
6.3.3 DSA數(shù)字簽名算法 270
6.3.4 橢圓曲線密碼編碼學(xué) 272
6.3.5 SM2算法 279
6.4 其他算法 279
6.4.1 CRC32算法 279
6.4.2 Base64編碼 280
6.5 常見(jiàn)的加密庫(kù)接口及其識(shí)別 281
6.5.1 Miracl大數(shù)運(yùn)算庫(kù) 281
6.5.2 FGInt 283
6.5.3 其他加密算法庫(kù)介紹 284
6.6 加密算法在軟件保護(hù)中的應(yīng)用 285
系統(tǒng)篇
第7章 Windows內(nèi)核基礎(chǔ) 290
7.1 內(nèi)核理論基礎(chǔ) 290
7.1.1 權(quán)限級(jí)別 290
7.1.2 內(nèi)存空間布局 291
7.1.3 Windows與內(nèi)核啟動(dòng)過(guò)程 292
7.1.4 Windows R3與R0通信 294
7.1.5 內(nèi)核函數(shù) 296
7.1.6 內(nèi)核驅(qū)動(dòng)模塊 297
7.2 內(nèi)核重要數(shù)據(jù)結(jié)構(gòu) 298
7.2.1 內(nèi)核對(duì)象 298
7.2.2 SSDT 300
7.2.3 TEB 302
7.2.4 PEB 304
7.3 內(nèi)核調(diào)試基礎(chǔ) 306
7.3.1 使用WinDbg搭建雙機(jī)調(diào)試環(huán)境 306
7.3.2 加載內(nèi)核驅(qū)動(dòng)并設(shè)置符號(hào)表 308
7.3.3 SSDT與Shadow SSDT的查看 311
第8章 Windows下的異常處理 313
8.1 異常處理的基本概念 313
8.1.1 異常列表 313
8.1.2 異常處理的基本過(guò)程 314
8.2 SEH的概念及基本知識(shí) 319
8.2.1 SEH的相關(guān)數(shù)據(jù)結(jié)構(gòu) 319
8.2.2 SEH處理程序的安裝和卸載 320
8.2.3 SEH實(shí)例跟蹤 321
8.3 SEH異常處理程序原理及設(shè)計(jì) 325
8.3.1 異常分發(fā)的詳細(xì)過(guò)程 325
8.3.2 線程異常處理 330
8.3.3 異常處理的棧展開(kāi) 336
8.3.4 MSC編譯器對(duì)線程異常處理的增強(qiáng) 342
8.3.5 頂層異常處理 349
8.3.6 異常處理程序的安全性 357
8.4 向量化異常處理 361
8.4.1 向量化異常處理的使用 361
8.4.2 VEH與SEH的異同 362
8.4.3 向量化異常處理的新內(nèi)容 363
8.5 x64平臺(tái)上的異常處理 363
8.5.1 原生x64程序的異常分發(fā) 364
8.5.2 WOW64下的異常分發(fā) 366
8.6 異常處理程序設(shè)計(jì)中的注意事項(xiàng) 367
8.7 異常處理的實(shí)際應(yīng)用 368
8.7.1 使用SEH對(duì)用戶輸入進(jìn)行驗(yàn)證 368
8.7.2 SEH在加密與解密中的應(yīng)用 369
8.7.3 用VEH實(shí)現(xiàn)API Hook 371
8.8 本章小結(jié) 371
第9章 Win32調(diào)試API 372
9.1 調(diào)試相關(guān)函數(shù)簡(jiǎn)要說(shuō)明 372
9.2 調(diào)試事件 375
9.3 創(chuàng)建并跟蹤進(jìn)程 377
9.4 調(diào)試循環(huán)體 378
9.5 處理調(diào)試事件 379
9.6 線程環(huán)境 380
9.7 將代碼注入進(jìn)程 382
第10章 VT技術(shù) 384
10.1 硬件虛擬化的基本概念 384
10.1.1 概述 384
10.1.2 相關(guān)結(jié)構(gòu)和匯編指令 385
10.1.3 EPT機(jī)制 388
10.2 VT技術(shù)的應(yīng)用 389
10.2.1 編譯運(yùn)行ShadowWalker 389
10.2.2 分析Hypervisor 390
10.2.3 檢測(cè)VT支持情況 392
10.2.4 VMCS的配置 393
10.2.5 EPT的配置 396
10.2.6 開(kāi)啟VT 399
10.2.7 內(nèi)存隱藏的實(shí)現(xiàn) 399
10.3 VT調(diào)試方法 401
第11章 PE文件格式 404
11.1 PE的基本概念 405
11.1.1 基地址 405
11.1.2 虛擬地址 406
11.1.3 相對(duì)虛擬地址 406
11.1.4 文件偏移地址 407
11.2 MS-DOS頭部 407
11.3 PE文件頭 408
11.3.1 Signature字段 408
11.3.2 IMAGE_FILE_HEADER結(jié)構(gòu) 409
11.3.3 IMAGE_OPTIONAL_HEADER結(jié)構(gòu) 410
11.4 區(qū)塊 415
11.4.1 區(qū)塊表 415
11.4.2 常見(jiàn)區(qū)塊與區(qū)塊合并 417
11.4.3 區(qū)塊的對(duì)齊值 419
11.4.4 文件偏移與虛擬地址的轉(zhuǎn)換 419
11.5 輸入表 421
11.5.1 輸入函數(shù)的調(diào)用 421
11.5.2 輸入表的結(jié)構(gòu) 422
11.5.3 輸入地址表 424
11.5.4 輸入表實(shí)例分析 424
11.6 綁定輸入 428
11.7 輸出表 429
11.7.1 輸出表的結(jié)構(gòu) 430
11.7.2 輸出表實(shí)例分析 431
11.8 基址重定位 432
11.8.1 基址重定位的概念 432
11.8.2 基址重定位表的結(jié)構(gòu) 433
11.8.3 基址重定位表實(shí)例分析 434
11.9 資源 435
11.9.1 資源結(jié)構(gòu) 435
11.9.2 資源結(jié)構(gòu)實(shí)例分析 438
11.9.3 資源編輯工具 440
11.10 TLS初始化 440
11.11 調(diào)試目錄 441
11.12 延遲載入數(shù)據(jù) 441
11.13 程序異常數(shù)據(jù) 442
11.14 .NET頭部 442
11.15 編寫(xiě)PE分析工具 443
11.15.1 檢查文件格式 443
11.15.2 讀取FileHeader和OptionalHeader的內(nèi)容 444
11.15.3 得到數(shù)據(jù)目錄表信息 445
11.15.4 得到區(qū)塊表信息 446
11.15.5 得到輸出表信息 447
11.15.6 得到輸入表信息 448
第12章 注入技術(shù) 450
12.1 DLL注入方法 450
12.1.1 通過(guò)干預(yù)輸入表處理過(guò)程加載目標(biāo)DLL 450
12.1.2 改變程序運(yùn)行流程使其主動(dòng)加載目標(biāo)DLL 466
12.1.3 利用系統(tǒng)機(jī)制加載DLL 484
12.2 DLL注入的應(yīng)用 491
12.3 DLL注入的防范 491
12.3.1 驅(qū)動(dòng)層防范 491
12.3.2 應(yīng)用層防范 493
第13章 Hook技術(shù) 497
13.1 Hook概述 497
13.1.1 IAT Hook篡改MessageBox消息 497
13.1.2 Inline Hook篡改指定MessageBox消息 499
13.2 Hook的分類 500
13.2.1 Address Hook 501
13.2.2 Inline Hook 511
13.2.3 基于異常處理的Hook 513
13.2.4 不是Hook的Hook 514
13.3 Hook位置的挑選 515
13.4 Hook的典型過(guò)程 519
13.4.1 Address Hook的實(shí)施過(guò)程 519
13.4.2 Inline Hook的實(shí)施過(guò)程 526
13.4.3 基于異常處理的Hook實(shí)施過(guò)程 529
13.4.4 二次Hook的注意事項(xiàng) 532
13.4.5 通用Hook引擎的實(shí)現(xiàn) 533
13.5 Detour函數(shù)的典型用法 533
13.6 Hook中的注意事項(xiàng) 536
13.7 Hook在x64平臺(tái)上的新問(wèn)題 541
13.8 Hook技術(shù)的應(yīng)用 543
13.9 Hook的檢測(cè)、恢復(fù)與對(duì)抗 544
13.9.1 Hook的檢測(cè)與恢復(fù) 544
13.9.2 Hook的對(duì)抗 545
13.10 本章小結(jié) 546
漏洞篇
第14章 漏洞分析技術(shù) 548
14.1 軟件漏洞原理 548
14.1.1 緩沖區(qū)溢出漏洞 548
14.1.2 整型溢出漏洞 553
14.1.3 UAF漏洞 555
14.2 Shellcode 555
14.2.1 Shellcode的結(jié)構(gòu) 556
14.2.2 Shellcode通用技術(shù) 559
14.2.3 實(shí)戰(zhàn)Shellcode編寫(xiě) 560
14.3 漏洞利用 566
14.3.1 漏洞利用基本技術(shù) 567
14.3.2 漏洞利用高級(jí)技術(shù) 570
14.4 漏洞樣本 572
14.5 樣本分析 573
14.5.1 準(zhǔn)備工作 573
14.5.2 靜態(tài)分析 574
14.5.3 動(dòng)態(tài)調(diào)試 576
14.5.4 追根溯源 581
14.5.5 小結(jié) 585
脫殼篇
第15章 專用加密軟件 588
15.1 認(rèn)識(shí)殼 588
15.1.1 殼的概念 588
15.1.2 壓縮引擎 589
15.2 壓縮殼 589
15.2.1 UPX 589
15.2.2 ASPack 590
15.3 加密殼 590
15.3.1 ASProtect 590
15.3.2 Armadillo 590
15.3.3 EXECryptor 591
15.3.4 Themida 591
15.4 虛擬機(jī)保護(hù)軟件 592
15.4.1 虛擬機(jī)介紹 592
15.4.2 VMProtect簡(jiǎn)介 592
第16章 脫殼技術(shù) 594
16.1 基礎(chǔ)知識(shí) 594
16.1.1 殼的加載過(guò)程 594
16.1.2 脫殼機(jī) 595
16.1.3 手動(dòng)脫殼 596
16.2 尋找OEP 596
16.2.1 根據(jù)跨段指令尋找OEP 596
16.2.2 用內(nèi)存訪問(wèn)斷點(diǎn)尋找OEP 600
16.2.3 根據(jù)棧平衡原理尋找OEP 601
16.2.4 根據(jù)編譯語(yǔ)言特點(diǎn)尋找OEP 602
16.3 抓取內(nèi)存映像 603
16.3.1 Dump原理 603
16.3.2 反Dump技術(shù) 604
16.4 重建輸入表 606
16.4.1 輸入表重建的原理 606
16.4.2 確定IAT的地址和大小 607
16.4.3 根據(jù)IAT重建輸入表 608
16.4.4 用Import REC重建輸入表 611
16.4.5 輸入表加密概括 614
16.5 DLL文件脫殼 615
16.5.1 尋找OEP 615
16.5.2 Dump映像文件 617
16.5.3 重建DLL的輸入表 618
16.5.4 構(gòu)造重定位表 619
16.6 附加數(shù)據(jù) 621
16.7 PE文件的優(yōu)化 623
16.8 壓縮殼 626
16.8.1 UPX外殼 626
16.8.2 ASPack外殼 629
16.9 加密殼 633
16.10 靜態(tài)脫殼 637
16.10.1 外殼Loader分析 637
16.10.2 編寫(xiě)靜態(tài)脫殼器 641
保護(hù)篇
第17章 軟件保護(hù)技術(shù) 644
17.1 防范算法求逆 644
17.1.1 基本概念 644
17.1.2 堡壘戰(zhàn)術(shù) 645
17.1.3 游擊戰(zhàn)術(shù) 646
17.2 抵御靜態(tài)分析 647
17.2.1 花指令 647
17.2.2 SMC技術(shù)實(shí)現(xiàn) 649
17.2.3 信息隱藏 653
17.2.4 簡(jiǎn)單的多態(tài)變形技術(shù) 654
17.3 文件完整性檢驗(yàn) 655
17.3.1 磁盤(pán)文件校驗(yàn)的實(shí)現(xiàn) 655
17.3.2 校驗(yàn)和 657
17.3.3 內(nèi)存映像校驗(yàn) 657
17.4 代碼與數(shù)據(jù)結(jié)合 659
17.4.1 準(zhǔn)備工作 660
17.4.2 加密算法的選用 661
17.4.3 手動(dòng)加密代碼 661
17.4.4 使 .text區(qū)塊可寫(xiě) 662
17.5 關(guān)于軟件保護(hù)的若干忠告 663
第18章 反跟蹤技術(shù) 665
18.1 由BeingDebugged引發(fā)的蝴蝶效應(yīng) 665
18.1.1 BeingDebugged 665
18.1.2 NtGlobalFlag 669
18.1.3 Heap Magic 671
18.1.4 從源頭消滅BeingDebugged 676
18.2 回歸Native:用戶態(tài)的夢(mèng)魘 676
18.2.1 CheckRemoteDebuggerPresent 677
18.2.2 ProcessDebugPort 677
18.2.3 ThreadHideFromDebugger 680
18.2.4 DebugObject 682
18.2.5 SystemKernelDebuggerInformation 686
18.2.6 Native API 688
18.2.7 Hook和AntiHook 693
18.3 真正的奧秘:小技巧一覽 696
18.3.1 SoftICE檢測(cè)方法 696
18.3.2 OllyDbg檢測(cè)方法 698
18.3.3 調(diào)試器漏洞 700
18.3.4 防止調(diào)試器附加 701
18.3.5 父進(jìn)程檢測(cè) 703
18.3.6 時(shí)間差 703
18.3.7 通過(guò)Trap Flag檢測(cè) 704
18.3.8 雙進(jìn)程保護(hù) 704
第19章 外殼編寫(xiě)基礎(chǔ) 705
19.1 外殼的結(jié)構(gòu) 705
19.2 加殼主程序 706
19.2.1 判斷文件是否為PE格式 706
19.2.2 文件基本數(shù)據(jù)讀入 706
19.2.3 附加數(shù)據(jù)的讀取 708
19.2.4 輸入表的處理 708
19.2.5 重定位表的處理 711
19.2.6 文件的壓縮 713
19.2.7 資源數(shù)據(jù)的處理 716
19.2.8 區(qū)塊的融合 720
19.3 用匯編寫(xiě)外殼部分 721
19.3.1 外殼的加載過(guò)程 721
19.3.2 自建輸入表 722
19.3.3 外殼引導(dǎo)段 723
19.3.4 外殼第2部分 726
19.3.5 將外殼部分添加至原程序 731
19.4 用C++編寫(xiě)外殼部分 734
第20章 虛擬機(jī)的設(shè)計(jì) 739
20.1 虛擬機(jī)保護(hù)技術(shù)原理 739
20.1.1 反匯編引擎 739
20.1.2 指令分類 739
20.2 啟動(dòng)框架和調(diào)用約定 740
20.2.1 調(diào)度器 740
20.2.2 虛擬環(huán)境 741
20.2.3 平衡棧vBegin和vCheckESP 742
20.3 Handler的設(shè)計(jì) 743
20.3.1 輔助Handler 743
20.3.2 普通Handler和指令拆解 744
20.3.3 標(biāo)志位問(wèn)題 745
20.3.4 相同作用的指令 745
20.3.5 轉(zhuǎn)移指令 746
20.3.6 轉(zhuǎn)移跳轉(zhuǎn)指令的另一種實(shí)現(xiàn) 747
20.3.7 call指令 748
20.3.8 retn指令 748
20.3.9 不可模擬指令 749
20.4 托管代碼的異常處理 749
20.4.1 VC++的異常處理 749
20.4.2 Delphi的異常處理 754
20.5 本章小結(jié) 757
第21章 VMProtect逆向和還原淺析 758
21.1 VMProtect逆向分析 758
21.1.1 VMProtect虛擬執(zhí)行引擎的全景圖 758
21.1.2 VMProtect虛擬引擎的基本架構(gòu) 763
21.1.3 指令分類 763
21.2 VMProtect的還原 765
21.2.1 虛擬執(zhí)行系統(tǒng) 766
21.2.2 生成完整的字節(jié)碼流程圖 767
21.2.3 給Handler命名并添加語(yǔ)義動(dòng)作 774
21.2.4 將字節(jié)碼的低級(jí)描述轉(zhuǎn)換為中級(jí)描述 775
21.2.5 清除無(wú)用的字節(jié)碼 776
21.2.6 用真值表化簡(jiǎn)邏輯指令 776
21.2.7 從特征中建立部分寄存器映射信息 779
21.2.8 其他無(wú)法確定的寄存器的圖著色算法 785
21.2.9 使用DAG匹配生成指令 788
21.2.10 其他問(wèn)題 791
軟件重構(gòu)篇
第22章 補(bǔ)丁技術(shù) 794
22.1 文件補(bǔ)丁 794
22.2 內(nèi)存補(bǔ)丁 795
22.2.1 跨進(jìn)程內(nèi)存存取機(jī)制 795
22.2.2 Debug API機(jī)制 797
22.2.3 利用調(diào)試寄存器機(jī)制 800
22.2.4 利用DLL注入技術(shù) 803
22.2.5 利用Hook技術(shù) 807
22.2.6 利用VT技術(shù) 810
22.3 SMC補(bǔ)丁技術(shù) 813
22.3.1 單層SMC補(bǔ)丁技術(shù) 813
22.3.2 多層SMC補(bǔ)丁技術(shù) 814
22.4 補(bǔ)丁工具 816
第23章 代碼的二次開(kāi)發(fā) 818
23.1 數(shù)據(jù)對(duì)齊 818
23.2 增加空間 818
23.2.1 區(qū)塊間隙 818
23.2.2 手動(dòng)構(gòu)造區(qū)塊 819
23.2.3 工具輔助構(gòu)造區(qū)塊 820
23.3 獲得函數(shù)的調(diào)用信息 820
23.3.1 增加輸入函數(shù) 820
23.3.2 顯式鏈接調(diào)用DLL 821
23.4 代碼的重定位 822
23.4.1 修復(fù)重定位表 822
23.4.2 代碼的自定位技術(shù) 824
23.5 增加輸出函數(shù) 825
23.6 消息循環(huán) 826
23.6.1 WndProc函數(shù) 826
23.6.2 尋找消息循環(huán) 827
23.6.3 WndProc匯編形式 828
23.7 菜單擴(kuò)展 829
23.7.1 擴(kuò)充WndProc 829
23.7.2 擴(kuò)充Exit菜單的功能 830
23.7.3 擴(kuò)充Open菜單的功能 830
23.8 DLL擴(kuò)展 833
23.8.1 擴(kuò)展接口 833
23.8.2 擴(kuò)展消息循環(huán) 834
語(yǔ)言和平臺(tái)篇
第24章 .NET平臺(tái)加解密 838
24.1 .NET概述 838
24.1.1 什么是 .NET 838
24.1.2 基本概念 839
24.1.3 第1個(gè) .NET程序 840
24.2 MSIL與元數(shù)據(jù) 841
24.2.1 PE結(jié)構(gòu)的擴(kuò)展 841
24.2.2 .NET下的匯編MSIL 847
24.2.3 MSIL與元數(shù)據(jù)的結(jié)合 849
24.3 代碼分析與修改技術(shù) 851
24.3.1 靜態(tài)分析 851
24.3.2 動(dòng)態(tài)調(diào)試 853
24.3.3 代碼修改 855
24.4 .NET代碼保護(hù)技術(shù)及其逆向 857
24.4.1 強(qiáng)名稱 857
24.4.2 名稱混淆 859
24.4.3 流程混淆 863
24.4.4 壓縮 865
24.4.5 加密 869
24.4.6 其他保護(hù)手段 875
24.5 本章小結(jié) 876
取證篇
第25章 數(shù)據(jù)取證技術(shù) 878
25.1 硬盤(pán)數(shù)據(jù)的獲取和固定 878
25.1.1 硬盤(pán)數(shù)據(jù)的獲取 878
25.1.2 電子數(shù)據(jù)的固定 882
25.2 硬盤(pán)的分區(qū)和數(shù)據(jù)恢復(fù) 882
25.2.1 分區(qū)的解析 884
25.2.2 基于文件系統(tǒng)的數(shù)據(jù)恢復(fù)原理 886
25.3 內(nèi)存分析 890
25.3.1 內(nèi)存鏡像的獲取 891
25.3.2 內(nèi)存鏡像的分析 894
25.4 動(dòng)態(tài)仿真技術(shù) 897
25.4.1 仿真專用硬件 897
25.4.2 軟件仿真 898
25.5 注冊(cè)表 900
25.5.1 Hive文件 900
25.5.2 注冊(cè)表中的時(shí)間 901
25.5.3 USB移動(dòng)存儲(chǔ)設(shè)備 902
25.6 文件格式 903
25.6.1 文件修復(fù)和特征碼 903
25.6.2 基于文件的數(shù)據(jù)恢復(fù)技術(shù) 904
25.6.3 數(shù)據(jù)隱藏的分析 906
術(shù)語(yǔ)表 909
參考文獻(xiàn) 911
你還可能感興趣
我要評(píng)論
|