發表於2024-12-23
軟件保護及分析技術 原理與實踐 pdf epub mobi txt 電子書 下載
在軟件加密與解密領域,技術的“對立”使這個領域的研究充滿瞭樂趣。軟件保護與分析涉及很多技術細節,如反調試、反虛擬機、代碼加密、靜態分析、代碼注入、動態分析、脫殼等,作者對這些細節進行瞭講解,內容循序漸進,覆蓋範圍全麵。
《軟件保護及分析技術——原理與實踐》對軟件安全領域的保護與分析技術進行瞭全麵的討論和剖析,通過保護與分析的對比講解,結閤代碼和操作流程,對軟件安全領域的各種技術進行瞭詳盡的討論,並將理論與實踐相結閤,利用具體的程序代碼進行演示。同時,對現今較為成熟的保護係統進行瞭分析,全麵介紹瞭軟件安全領域的保護與分析技術。最後,結閤多年從事軟件軟件保護與分析的經驗,講解瞭軟件保護與分析中的各種經驗和技巧。
《軟件保護及分析技術——原理與實踐》適閤信息安全領域相關人員、高校相關專業學生及愛好者閱讀。
章立春,2005-2007參與某網絡遊戲開發 2007-2009某軟件保護係統主程 2009-2011年任成都磐石軟件有限責任公司董事長
第0章 準備知識 1
0.1 Win32程序 1
0.2 PE程序文件 3
0.3 Win32進程的啓動 5
0.4 PE程序的加載 7
第1部分 軟件保護
第1章 軟件保護技術 11
1.1 反調試 11
1.1.1 函數檢測 12
1.1.2 數據檢測 12
1.1.3 符號檢測 13
1.1.4 窗口檢測 13
1.1.5 特徵碼檢測 14
1.1.6 行為檢測 14
1.1.7 斷點檢測 15
1.1.8 功能破壞 16
1.1.9 行為占用 16
1.2 反虛擬機 17
1.3 數據校驗 18
1.4 導入錶加密 19
1.5 模塊拷貝移位 27
1.6 資源加密 29
1.7 代碼加密 30
1.7.1 代碼變形 30
1.7.2 花指令 33
1.7.3 代碼亂序 33
1.7.4 多分支 35
1.7.5 call鏈 36
1.8 代碼虛擬化 37
1.8.1 堆機 39
1.8.2 棧機 40
1.8.3 狀態機 42
1.9 腳本引擎 42
1.10 網絡加密 42
1.11 硬件加密 42
1.12 代碼簽名 43
第2章 軟件保護係統 44
2.1 保護功能 44
2.1.1 試用控製 44
2.1.2 授權控製 45
2.1.3 功能擴展 45
2.2 保護係統 45
2.2.1 WinLicense和Themida 46
2.2.2 VMProtect 47
第3章 軟件保護強化 48
3.1 設計優化 49
3.1.1 技巧1:代碼習慣優化 49
3.1.2 技巧2:SDK使用優化 51
3.1.3 技巧3:驗證保護係統 52
3.2 加殼優化 52
3.2.1 技巧1:側重選擇代碼加密 53
3.2.2 技巧2:精選被保護代碼 54
3.2.3 技巧3:充分測試 55
第2部分 軟件破解
第4章 軟件破解工具 58
4.1 調試分析工具 58
4.1.1 OllyDbg 58
4.1.2 WinDBG 59
4.1.3 IDA 60
4.2 修改工具 60
4.2.1 LordPE 60
4.2.2 010Editor 61
4.3 自動化工具 61
第5章 軟件破解技術 62
5.1 靜態分析 63
5.1.1 基本信息分析 63
5.1.2 代碼靜態分析 67
5.2 軟件調試 68
5.2.1 一般調試原理 68
5.2.2 僞調試技術 72
5.2.3 本地調試 73
5.2.4 遠程調試 74
5.2.5 虛擬機調試 76
5.3 反反調試 77
5.4 HOOK 78
5.4.1 代碼HOOK 79
5.4.2 函數HOOK 86
5.4.3 模塊HOOK 86
5.4.4 導齣錶HOOK 92
5.5 代碼注入 94
5.6 補丁 101
5.6.1 冷補丁 101
5.6.2 熱補丁 102
5.6.3 SMC 102
5.6.4 虛擬化補丁 103
5.7 模塊重定位 103
5.8 沙箱技術 104
5.9 虛擬化 106
5.10 代碼虛擬機 107
5.10.1 OP分支探測 108
5.10.2 OP調試 113
5.11 自動化技術 114
5.11.1 代碼追蹤 114
5.11.2 預執行 118
5.11.3 代碼簡化 120
5.11.4 代碼重建 124
5.11.5 塊執行 125
5.11.6 多分支剔除 126
5.11.7 小結 129
5.12 動態分析 129
5.12.1 著色 129
5.12.2 黑盒測試 132
5.13 功能模擬 132
5.13.1 授權模擬 132
5.13.2 網絡模擬 134
5.13.3 加密狗模擬 134
5.14 脫殼 134
5.14.1 導入錶重建 135
5.14.2 資源重建 149
5.14.3 區段重建 152
5.14.4 OEP定位 154
5.14.5 PE頭修復 159
5.14.6 重定位修復 159
5.14.7 PE重建 163
5.14.8 補區段 164
5.15 進程快照技術 166
5.15.1 進程快照技術概述 166
5.15.2 快照脫殼 178
5.16 代碼迴溯技術 180
第6章 軟件分析技巧 184
6.1 技巧1:精確代碼範圍 184
6.2 技巧2:多用對比參考 186
6.3 技巧3:逆嚮思考 187
6.4 技巧4:多利用自動化優勢 187
6.5 技巧5:利用環境優勢 187
6.6 技巧6:盡量避免算法分析 187
6.7 技巧7:夠用原則 188
第3部分 自己動手
第7章 打造函數監視器 190
7.1 製定功能 190
7.2 確定技術方案 191
7.3 開發籌備 192
7.4 具體實現 193
7.4.1 啓動目標進程並注入xVMRuntime模塊 196
7.4.2 通信協議 199
7.4.3 事件設定 201
7.4.4 輔助調試功能 216
7.4.5 技術問題 217
7.5 效果演示 217
第8章 打造資源重建工具 220
8.1 製定功能 220
8.2 確定技術方案 220
8.3 開發籌備 222
8.4 具體實現 222
8.4.1 數據結構及通信協議 222
8.4.2 獲取內存段資源數據 223
8.4.3 監控資源函數獲取數據 225
8.4.4 強製搜索內存窮舉獲取數據 227
8.4.5 重建資源區段 230
8.4.6 技術問題 234
8.5 效果演示 235
第9章 打造重定位修復工具 238
9.1 製定功能 238
9.2 確定技術方案 238
9.3 開發籌備 239
9.4 具體實現 239
9.4.1 通信協議 239
9.4.2 注入模塊 240
9.4.3 抓取內存快照 240
9.4.4 對比內存數據 244
9.4.5 重建重定位區段 245
9.5 效果演示 248
9.5.1 DLL模塊重定位修復 249
9.5.2 主模塊重定位修復 251
第10章 打造進程拍照機 253
10.1 製定功能 253
10.2 確定技術方案 253
10.3 開發籌備 255
10.4 具體實現 255
10.4.1 先期模塊注入 255
10.4.2 接管進程內存管理 261
10.4.3 建立函數調用中間層 268
10.4.4 實現場景載入功能 269
10.4.5 轉儲並修正映像及相關數據 270
10.4.6 增加TIB轉儲 274
10.5 效果演示 276
10.5.1 WinLicense測試 276
10.5.2 VMProtect測試 279
第11章 打造函數通用追蹤器 281
11.1 製定功能 281
11.2 確定技術方案 281
11.3 開發籌備 282
11.4 具體實現 283
11.4.1 建立插件框架 283
11.4.2 分層式虛擬機 284
11.4.3 調用代碼查找識彆 287
11.5 追蹤函數 294
11.6 重建導入錶 299
11.7 修復調用代碼 304
11.7.1 內存式修復 305
11.7.2 文件式修復 307
11.8 效果演示 309
第12章 打造預執行調試器 312
12.1 製定功能 312
12.2 確定技術方案 312
12.3 開發籌備 313
12.4 具體實現 313
12.4.1 預執行功能 313
12.4.2 代碼追蹤記錄功能 317
12.4.3 塊執行功能 321
12.4.4 OP記錄調試功能 327
12.5 效果演示 331
第13章 打造僞調試器 335
13.1 製定功能 335
13.2 確定技術方案 335
13.3 開發籌備 336
13.4 具體實現 336
13.4.1 數據結構與通信協議 337
13.4.2 第1步:界麵相關工作 338
13.4.3 第2步:在調試端啓用和禁用僞調試技術 339
13.4.4 第3步:創建調試目標 341
13.4.5 第4步:等待調試事件主循環 344
13.4.6 第5步:被調試端的初始化 346
13.4.7 第6步:中轉異常 349
13.4.8 第7步:輔助調試函數實現 350
13.4.9 小結 354
13.5 效果演示 354
第4部分 實例分析
第14章 VMProtect虛擬機分析 358
第15章 WinLicense虛擬機分析 375
第5部分 脫殼實例
第16章 VMProtect脫殼 382
第17章 WinLicense脫殼 394
寫在最後 405
軟件保護與分析技術領域一直以來都充滿著神秘色彩。一提到這個領域,總會激發外行人的強烈好奇和異樣的眼光。作為一個業內人士,我認為,盡管這個行業內充滿瞭利益瓜葛,但是,若我們拋開利益,迴歸這個技術領域的本質,就會發現更加重要的其實是這個領域給我們帶來的樂趣、對事物的理解,以及那些成功與挫敗的體驗,這些纔是這個領域最為本質也是最吸引人的地方。
很難想象,如果我們涉及計算機行業,但又一直隻是充當一個代碼工具,在現在這個軟件設計越來越趨嚮對象化、自動化的年代,我們真不知道除瞭代碼之外還能有些什麼,更不用說長期做重復單調的工作需要多大的耐心和毅力。
黑格爾曾經說過,事物總是在對立中纔能進步。軟件加密與解密這個領域正好有兩種永遠對立的事物,這就使得這個領域不存在終點,永遠都有更加深入的技術等待著我們去探索,讓這個領域充滿瞭樂趣。但是,隨著計算機硬件的快速發展,這個領域的這種對立正在慢慢地發生變化並且失去平衡。因為計算機越來越快的運算速度,使得加密技術可以使用計算機的這種計算優勢將安全性轉移到計算機運算速度上,也就是說,現代的加密技術可以使用巨大的運算量來換取安全性的提高。一方麵,這對破解來說是極不樂觀的,因為在破解技術上,大多數的分析還是依靠人腦。另一方麵,由於計算機領域具有纍積性,慢慢地,加密與解密這個領域開始具備瞭排斥性,使這個領域的門檻越來越高,這讓無數熱愛計算機技術的人失去瞭體驗這個領域內眾多樂趣的機會。
寫作背景
我相信很多準備進入軟件行業的技術人員都對軟件的保護和破解領域具有濃厚的興趣,但是我也能想象,當他們興緻勃勃地從網上搜索各種加密與解密入門教程,並著手模仿和練習時,卻發現現在的軟件隨便用PEiD查看都會顯示“VMProtect”字樣,然後他們轉而查找有關VMProtect的資料——好不容易找到一點點關於VMProtect的資料後卻發現,文檔中的內容完全不知所雲,或者文檔中描述的內容和他們實際操作的代碼完全不一樣,這讓他們感到極度挫敗。更加嚴重的問題在於:當我們習慣使用這些成熟、強大的保護係統以後,就慢慢喪失瞭追尋事物本質的能力;我們看重成熟的保護係統給軟件帶來的安全性,就慢慢忽視瞭這些保護係統保護軟件的技術細節,這使得我們産生一種錯覺,甚至可能以為一旦擁有這樣的保護係統,我們的軟件就安全瞭,這是相當嚴重的問題。
作為一個成熟的技術人員,我們應當足夠瞭解我們所開發軟件的整個運行流程,這樣纔能在各種情況下做齣相對準確和客觀的判斷。因此,這也包括我們對軟件保護係統及軟件破解技術的瞭解。
本書全麵介紹瞭軟件保護與分析領域的相關技術,因此涵蓋很多高手看來較低級的技術,還會提及很多基礎性的內容,但由於篇幅限製,我會盡量簡化這些部分。在我看來,在加密與解密領域,對技術的理解必須用理論與實際結閤並側重於實際操作的方式效果纔會更好。因為這個領域是一個需要培養自己動手能力和花大量時間去具體操作纔能完全理解的領域,隻有在實際的操作過程中纔能體會到這個領域中的韆變萬化,所以,書中較多地采用教學的方式,並且盡量提供相應的代碼和示例,最後會一步步地引導讀者打造自己的工具以提升動手能力。
本書充分考慮到讀者可能麵臨的實際情況,所以盡量不涉及和不使用內核技術來解決問題,而是將各種方法都放在Ring3下模擬和實現,以避免頻繁的藍屏和復雜的內核調試過程嚇退讀者。
本書特點
保護與分析全覆蓋:本書涵蓋軟件保護與軟件破解的大部分相關技術,不僅介紹瞭大量的軟件保護技術,也介紹瞭大量的軟件破解技術,通過保護與破解技術的對比,讀者可以更加深刻地理解和體會各種技術的優缺點。
理論與實踐結閤:本書不僅通過理論來介紹各種技術,還通過實際代碼和操作流程將這些理論轉化為實際的程序或者工具。通過本書的“自己動手”部分,讀者可以充分體會到將一種技術理論轉變為實際操作過程或者程序的整個步驟,並從中體會到理論與實際應用的差彆,最終對各種技術有充分、全麵的理解。
高階技術:本書不僅介紹一些常見而普通的技術,在許多方麵,本書所介紹的技術即使對很多業內人士來說,也是相當有難度的。通過這些技術的示例和應用,希望能讓讀者明白:在計算機領域,缺乏的並不是工具,而是idea。
讀者對象
本書的內容並非是為初學者設計—盡管我希望能將我的想法錶達得足夠簡單。在開始閱讀本書之前,我假定你(讀者)至少已經具備以下初步的計算機能力:
基本的C/C++編程能力
基本的x86匯編能力
一定的軟件運行原理知識
如果你已經具備以上條件,那麼恭喜你,你將可以很好地進入本書的其他部分。由於本書涉及的技術屬於兩大對立的闆塊,所以,為瞭清晰地闡述本書結構,在章節安排上我采取瞭歸納的形式,各個章節在技術難度上沒有絕對的先後關係。讀者在閱讀的時候,可以根據自己的實際情況調整閱讀順序。
章立春
2016年1月
我是剛剛開始學習python的~對網絡安全之類的也不太熟悉~感覺內容比較難,決定過一段時間再看~
評分不多見的智能硬件安全書籍,很適閤對這方麵感興趣的讀者。涉及的知識點比較多。
評分打摺的時候買的 非常好的書 很不錯 非常喜歡 已經看瞭一半瞭 好!非常好!
評分正版書沒問題,心儀已久的一本書,好好看看。
評分最近買瞭好多書, 認真看看, 想進步!!
評分Python是一門非常容易上手的腳本語言,相比perl語言,在簡單的語法學習之後,便可以事半功倍的滿足日常需求。對於白帽子來說,也是一門必須掌握的語言。
評分書很不錯,通俗易懂,值得研究。美中不足的是快遞,把書摺成這個樣子瞭,
評分書的質量不錯,送來也快,昨天下的訂單,今天上午就到貨瞭!京東還是挺給力的!公司購買給員工看的!
評分東西挺好,還沒看,看樣子應該是不錯的!
軟件保護及分析技術 原理與實踐 pdf epub mobi txt 電子書 下載