57998| 328
|
加密與解密第四版 隨書光盤及源碼 |
加密與解密第四版 隨書光盤及源碼
前 言 軟件安全是信息安全領(lǐng)域的重要內(nèi)容,涉及軟件的逆向分析、加密、解密、漏洞分析、安全編程及病毒分析等。隨著互聯(lián)網(wǎng)應(yīng)用的普及和企業(yè)信息化程度的不斷提升,社會(huì)和企業(yè)對(duì)安全技術(shù)人才的需求逐年增加,國內(nèi)高校對(duì)信息安全學(xué)科也越來越重視,但在計(jì)算機(jī)病毒查殺、網(wǎng)絡(luò)安全、個(gè)人信息安全等方面的人才缺口仍然很大。習(xí)近平總書記指出“網(wǎng)絡(luò)空間的競爭,歸根結(jié)底是人才競爭”。著重發(fā)現(xiàn)、培養(yǎng)、輸送信息安全專業(yè)人才,已經(jīng)成為各國信息安全戰(zhàn)略的重要組成部分。從就業(yè)的角度來看,掌握信息安全相關(guān)知識(shí)和技能,從業(yè)者不但可以提高自身的職場競爭力,而且有機(jī)會(huì)發(fā)揮更大的個(gè)人潛力、獲得滿意的薪酬;從個(gè)人成長方面來說,研究信息安全技術(shù)有助于掌握許多系統(tǒng)底層知識(shí),是提升職業(yè)技能的重要途徑。作為一名合格的程序員,除了掌握需求分析、設(shè)計(jì)模式等,如果能掌握一些系統(tǒng)底層知識(shí),熟悉整個(gè)系統(tǒng)的底層結(jié)構(gòu),必將獲益良多。本書以軟件逆向?yàn)榍腥朦c(diǎn),講述了軟件安全領(lǐng)域相關(guān)的基礎(chǔ)知識(shí)和技能。讀者在閱讀本書的內(nèi)容后,很容易就能在逆向分析、漏洞分析、安全編程、病毒分析等領(lǐng)域進(jìn)行擴(kuò)展。這些知識(shí)點(diǎn)的相互關(guān)聯(lián),將促使讀者開闊思路,使所學(xué)融會(huì)貫通,領(lǐng)悟更多的學(xué)習(xí)方法,提升自身的學(xué)習(xí)能力。 [attach]1798[/attach] [attach]1799[/attach] 《加密與解密》從第1版到今天的第4版,能夠一直陪伴讀者,完全基于廣大讀者的熱情和鼓舞,在此深表謝意。 目 錄 基礎(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 WOW649 1.3.3 Windows消息機(jī)制9 1.3.4 虛擬內(nèi)存10 調(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 trace36 2.1.7 Hit trace37 2.1.8 調(diào)試符號(hào)37 2.1.9 加載程序39 2.1.10 OllyDbg的常見問題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)試過程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的ODDisasm61 3.2.2 BeaEngine61 3.2.3 Udis8661 3.2.4 Capstone62 3.2.5 AsmJit63 3.2.6 Keystone64 3.2.7 小結(jié)64 3.3 靜態(tài)反匯編65 3.3.1 IDA Pro簡介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 FLIRT81 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 控制語句117 4.1.6 循環(huán)語句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 控制語句145 4.2.5 循環(huán)語句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 光盤檢測219 5.7.1 相關(guān)函數(shù)219 5.7.2 拆解光盤保護(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 公開密鑰加密算法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 常見的加密庫接口及其識(shí)別281 6.5.1 Miracl大數(shù)運(yùn)算庫281 6.5.2 FGInt283 6.5.3 其他加密算法庫介紹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)過程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 TEB302 7.2.4 PEB304 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與ShadowSSDT表的查看311 第8章 Windows下的異常處理313 8.1 異常處理的基本概念313 8.1.1 異常列表313 8.1.2 異常處理的基本過程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ì)過程325 8.3.2 線程異常處理330 8.3.3 異常處理的棧展開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 Hook371 8.8 小結(jié)371 第9章 Win32調(diào)試API372 9.1 調(diào)試相關(guān)函數(shù)簡要說明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)行ShadowWalker389 10.2.2 分析Hypervisor390 10.2.3 檢測VT支持情況392 10.2.4 VMCS的配置393 10.2.5 EPT的配置396 10.2.6 開啟VT399 10.2.7 內(nèi)存隱藏的實(shí)現(xiàn)399 10.3 VT技術(shù)的調(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 各種區(qū)塊的描述417 11.4.3 區(qū)塊的對(duì)齊值419 11.4.4 文件偏移與虛擬地址轉(zhuǎn)換420 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í)例分析425 11.6 綁定輸入428 11.7 輸出表429 11.7.1 輸出表結(jié)構(gòu)430 11.7.2 輸出表結(jié)構(gòu)實(shí)例分析431 11.8 基址重定位432 11.8.1 基址重定位概念432 11.8.2 基址重定位結(jié)構(gòu)定義433 11.8.3 基址重定位結(jié)構(gòu)實(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頭部443 11.15 編寫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 通過干預(yù)輸入表處理過程加載目標(biāo)DLL450 12.1.2 改變程序運(yùn)行流程使其主動(dòng)加載目標(biāo)DLL466 12.1.3 利用系統(tǒng)機(jī)制加載DLL484 12.2 DLL注入的作用490 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 Hook501 13.2.2 Inline Hook511 13.2.3 基于異常處理的Hook513 13.2.4 不是Hook的Hook515 13.3 Hook位置的挑選515 13.4 Hook的典型過程519 13.4.1 Address Hook的實(shí)施過程519 13.4.2 Inline Hook的實(shí)施過程526 13.4.3 基于異常處理的Hook實(shí)施過程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)上的新問題541 13.8 Hook技術(shù)的應(yīng)用543 13.9 Hook檢測、恢復(fù)與對(duì)抗544 13.9.1 Hook的檢測與恢復(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 Shellcode555 14.2.1 Shellcode結(jié)構(gòu)556 14.2.2 Shellcode通用技術(shù)559 14.2.3 實(shí)戰(zhàn)Shellcode編寫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 UPX589 15.2.2 ASPack590 15.3 加密殼590 15.3.1 ASProtect590 15.3.2 Armadillo590 15.3.3 EXECryptor591 15.3.4 Themida591 15.4 虛擬機(jī)保護(hù)軟件592 15.4.1 虛擬機(jī)介紹592 15.4.2 VMProtect簡介592 第16章 脫殼技術(shù)594 16.1 基礎(chǔ)知識(shí)594 16.1.1 殼的加載過程594 16.1.2 脫殼機(jī)595 16.1.3 手動(dòng)脫殼596 16.2 尋找OEP596 16.2.1 根據(jù)跨段指令尋找OEP596 16.2.2 用內(nèi)存訪問斷點(diǎn)尋找OEP600 16.2.3 根據(jù)棧平衡原理尋找OEP601 16.2.4 根據(jù)編譯語言特點(diǎn)尋找OEP602 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 尋找OEP615 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 編寫靜態(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 簡單的多態(tài)變形技術(shù)654 17.3 文件完整性檢驗(yàn)655 17.3.1 磁盤文件校驗(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é)合技術(shù)659 17.4.1 準(zhǔn)備工作660 17.4.2 加密算法的選用661 17.4.3 手動(dòng)加密代碼661 17.4.4 使 .text區(qū)塊可寫662 17.5 軟件保護(hù)的若干忠告663 第18章 反跟蹤技術(shù)665 18.1 由BeingDebugged引發(fā)的蝴蝶效應(yīng)665 18.1.1 BeingDebugged665 18.1.2 NtGlobalFlag669 18.1.3 Heap Magic671 18.1.4 從源頭消滅BeingDebugged676 18.2 回歸Native:用戶態(tài)的夢魘676 18.2.1 CheckRemoteDebuggerPresent677 18.2.2 ProcessDebugPort677 18.2.3 ThreadHideFromDebugger680 18.2.4 DebugObject682 18.2.5 SystemKernelDebuggerInformation686 18.2.6 Native API688 18.2.7 Hook和AntiHook693 18.3 真正的奧秘:小技巧一覽696 18.3.1 SoftICE檢測方法696 18.3.2 OllyDbg檢測方法698 18.3.3 調(diào)試器漏洞700 18.3.4 防止調(diào)試器附加701 18.3.5 父進(jìn)程檢測703 18.3.6 時(shí)間差703 18.3.7 通過Trap Flag檢測704 18.3.8 雙進(jìn)程保護(hù)704 第19章 外殼編寫基礎(chǔ)746 19.1 外殼的結(jié)構(gòu)746 19.2 加殼主程序747 19.2.1 判斷文件是否為PE格式747 19.2.2 文件基本數(shù)據(jù)讀入748 19.2.3 附加數(shù)據(jù)的讀取749 19.2.4 輸入表的處理749 19.2.5 重定位表的處理752 19.2.6 文件的壓縮754 19.2.7 資源數(shù)據(jù)的處理757 19.2.8 區(qū)塊的融合761 19.3 用匯編寫外殼部分762 19.3.1 外殼的加載過程762 19.3.2 自建輸入表763 19.3.3 外殼引導(dǎo)段764 19.3.4 外殼第2段767 19.3.5 將外殼部分添加至原程序772 19.4 用C++ 編寫外殼部分775 第20章 虛擬機(jī)的設(shè)計(jì)780 20.1 虛擬機(jī)保護(hù)技術(shù)原理780 20.1.1 反匯編引擎780 20.1.2 指令分類780 20.2 啟動(dòng)框架和調(diào)用約定781 20.2.1 調(diào)度器781 20.2.2 虛擬環(huán)境782 20.2.3 平衡棧VBegin和VCheckEsp783 20.3 Handler的設(shè)計(jì)784 20.3.1 輔助Handler784 20.3.2 普通Handler和指令拆解785 20.3.3 標(biāo)志位問題786 20.3.4 相同作用的指令786 20.3.5 轉(zhuǎn)移指令787 20.3.6 轉(zhuǎn)移跳轉(zhuǎn)指令的另一種實(shí)現(xiàn)788 20.3.7 call指令789 20.3.8 retn指令789 20.3.9 不可模擬指令790 20.4 托管代碼的異常處理790 20.4.1 VC++ 的異常處理790 20.4.2 Delphi的異常處理795 20.5 本章小結(jié)798 第21章 VMProtect逆向和還原淺析799 21.1 VMProtect逆向分析799 21.1.1 VMProtect虛擬執(zhí)行引擎的全景圖799 21.1.2 VMProtect虛擬引擎的基本架構(gòu)804 21.1.3 指令分類804 21.2 VMProtect的還原806 21.2.1 虛擬執(zhí)行系統(tǒng)807 21.2.2 生成完整的字節(jié)碼流程圖808 21.2.3 給Handler命名并添加語義動(dòng)作815 21.2.4 將字節(jié)碼的低級(jí)描述轉(zhuǎn)換為中級(jí)描述816 21.2.5 清除無用的字節(jié)碼817 21.2.6 用真值表化簡邏輯指令818 21.2.7 從特征中建立部分寄存器映射信息820 21.2.8 其他無法確定的寄存器的圖著色算法826 21.2.9 使用DAG匹配生成指令829 21.2.10 其他問題832 軟件重構(gòu)篇 第22章 補(bǔ)丁技術(shù)834 22.1 文件補(bǔ)丁834 22.2 內(nèi)存補(bǔ)丁835 22.2.1 跨進(jìn)程內(nèi)存存取機(jī)制835 22.2.2 Debug API機(jī)制837 22.2.3 利用調(diào)試寄存器機(jī)制840 22.2.4 利用DLL注入技術(shù)843 22.2.5 利用Hook技術(shù)847 22.2.6 利用VT技術(shù)850 22.3 SMC補(bǔ)丁技術(shù)853 22.3.1 單層SMC補(bǔ)丁技術(shù)853 22.3.2 多層SMC補(bǔ)丁技術(shù)854 22.4 補(bǔ)丁工具856 第23章 代碼的二次開發(fā)858 23.1 數(shù)據(jù)對(duì)齊858 23.2 增加空間858 23.2.1 區(qū)塊間隙858 23.2.2 手工構(gòu)造區(qū)塊859 23.2.3 工具輔助構(gòu)造區(qū)塊860 23.3 獲得函數(shù)的調(diào)用860 23.3.1 增加輸入函數(shù)860 23.3.2 顯式鏈接調(diào)用DLL861 23.4 代碼的重定位862 23.4.1 修復(fù)重定位表862 23.4.2 代碼的自定位技術(shù)864 23.5 增加輸出函數(shù)865 23.6 消息循環(huán)866 23.6.1 WndProc函數(shù)866 23.6.2 尋找消息循環(huán)867 23.6.3 WndProc匯編形式868 23.7 菜單擴(kuò)展869 23.7.1 擴(kuò)充WndProc869 23.7.2 擴(kuò)充Exit菜單的功能870 23.7.3 擴(kuò)充Open菜單的功能870 23.8 DLL擴(kuò)展873 23.8.1 擴(kuò)展接口873 23.8.2 擴(kuò)展消息循環(huán)874 語言篇 第24章 .NET平臺(tái)加解密 第24章 .NET平臺(tái)加解密 4 24.1 .NET概述 4 24.1.1 什么是 .NET 4 24.1.2 基本概念 5 24.1.3 第1個(gè) .NET程序 6 24.2 MSIL與元數(shù)據(jù) 7 24.2.1 PE結(jié)構(gòu)的擴(kuò)展 7 24.2.2 .NET下的匯編MSIL 14 24.2.3 MSIL與元數(shù)據(jù)的結(jié)合 17 24.3 代碼分析與修改技術(shù) 19 24.3.1 靜態(tài)分析 19 24.3.2 動(dòng)態(tài)調(diào)試 21 24.3.3 代碼修改 24 24.4 .NET代碼保護(hù)技術(shù)及其逆向 26 24.4.1 強(qiáng)名稱 26 24.4.2 名稱混淆 28 24.4.3 流程混淆 33 24.4.4 壓縮 35 24.4.5 加密 39 24.4.6 其他保護(hù)手段 46 24.5 小結(jié) 48 取證篇 第25章 數(shù)據(jù)取證技術(shù)878 25.1 硬盤數(shù)據(jù)的獲取和固定878 25.1.1 硬盤數(shù)據(jù)的獲取878 25.1.2 電子數(shù)據(jù)的固定882 25.2 硬盤的分區(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 注:附錄以電子版形式,放隨書配套映像文件提供下載。 附錄 附錄A:浮點(diǎn)指令 附錄B:在Visual C++中使用內(nèi)聯(lián)匯編 附錄C:Visual Basic程序 附錄D:加密算法變形引擎 前言 前 言 軟件安全是信息安全領(lǐng)域的重要內(nèi)容,涉及軟件的逆向分析、加密、解密、漏洞分析、安全編程及病毒分析等。隨著互聯(lián)網(wǎng)應(yīng)用的普及和企業(yè)信息化程度的不斷提升,社會(huì)和企業(yè)對(duì)安全技術(shù)人才的需求逐年增加,國內(nèi)高校對(duì)信息安全學(xué)科也越來越重視,但在計(jì)算機(jī)病毒查殺、網(wǎng)絡(luò)安全、個(gè)人信息安全等方面的人才缺口仍然很大。習(xí)近平總書記指出“網(wǎng)絡(luò)空間的競爭,歸根結(jié)底是人才競爭”。著重發(fā)現(xiàn)、培養(yǎng)、輸送信息安全專業(yè)人才,已經(jīng)成為各國信息安全戰(zhàn)略的重要組成部分。從就業(yè)的角度來看,掌握信息安全相關(guān)知識(shí)和技能,從業(yè)者不但可以提高自身的職場競爭力,而且有機(jī)會(huì)發(fā)揮更大的個(gè)人潛力、獲得滿意的薪酬;從個(gè)人成長方面來說,研究信息安全技術(shù)有助于掌握許多系統(tǒng)底層知識(shí),是提升職業(yè)技能的重要途徑。作為一名合格的程序員,除了掌握需求分析、設(shè)計(jì)模式等,如果能掌握一些系統(tǒng)底層知識(shí),熟悉整個(gè)系統(tǒng)的底層結(jié)構(gòu),必將獲益良多。本書以軟件逆向?yàn)榍腥朦c(diǎn),講述了軟件安全領(lǐng)域相關(guān)的基礎(chǔ)知識(shí)和技能。讀者在閱讀本書的內(nèi)容后,很容易就能在逆向分析、漏洞分析、安全編程、病毒分析等領(lǐng)域進(jìn)行擴(kuò)展。這些知識(shí)點(diǎn)的相互關(guān)聯(lián),將促使讀者開闊思路,使所學(xué)融會(huì)貫通,領(lǐng)悟更多的學(xué)習(xí)方法,提升自身的學(xué)習(xí)能力。 《加密與解密》從第1版到今天的第4版,能夠一直陪伴讀者,完全基于廣大讀者的熱情和鼓舞,在此深表謝意。 本書的緣起 在信息社會(huì)里,安全技術(shù)變得越來越重要,如何普及安全知識(shí)是作者始終關(guān)注的一個(gè)大問題。正是為了更好地將安全知識(shí)普及到社會(huì)各個(gè)領(lǐng)域的愿望,促成了本書的問世。依托看雪學(xué)院的技術(shù)背景,由作者主編和主導(dǎo)的看雪安全系列書籍,目前已出版發(fā)行了《加密與解密——軟件保護(hù)技術(shù)及完全解決方案》(簡體版,繁體版)、《加密與解密(第二版)》(簡體版,繁體版)、《加密與解密(第三版)》(簡體版,繁體版)、《軟件加密技術(shù)內(nèi)幕》等;基于電子資料的形式,歷年發(fā)行的《看雪論壇精華》被眾多網(wǎng)站轉(zhuǎn)載,保守計(jì)算,其下載量已達(dá)數(shù)百萬次,極大地推動(dòng)了國內(nèi)安全技術(shù)的發(fā)展。 這是一本很難寫的書,因?yàn)樵?000年時(shí),軟件安全是一個(gè)全新的領(lǐng)域,從Windows 95面世以來的6年內(nèi),市面上沒有一本這方面的書,網(wǎng)上也缺乏相關(guān)資料。為了填補(bǔ)國內(nèi)Windows平臺(tái)軟件安全書籍的空白,作者與看雪論壇的一流好手努力合作,克服種種困難,于2001年9月推出了國內(nèi)第一本全面介紹Windows平臺(tái)軟件安全技術(shù)的書籍,這就是本書的第1版《加密與解密——軟件保護(hù)技術(shù)及完全解決方案》。這本書一經(jīng)面世,就得到了廣大讀者的喜愛和認(rèn)可,獲得了2002年全國優(yōu)秀暢銷書獎(jiǎng)(科技類),在全國很多計(jì)算機(jī)專業(yè)書店獲得了極佳的銷售業(yè)績。2003年,本書的繁體版在臺(tái)灣地區(qū)發(fā)行,受到了臺(tái)灣讀者的熱烈歡迎。
購買主題
本主題需向作者支付 666 資源幣 才能瀏覽
| |
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
小黑屋|資源共享吧 ( 瓊ICP備2023000410號(hào)-1 )
GMT+8, 2024-12-22 14:48 , Processed in 0.083071 second(s), 17 queries , MemCached On.