注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機(jī)/網(wǎng)絡(luò)操作系統(tǒng)x86匯編與逆向工程:軟件破解與防護(hù)的藝術(shù)

x86匯編與逆向工程:軟件破解與防護(hù)的藝術(shù)

x86匯編與逆向工程:軟件破解與防護(hù)的藝術(shù)

定 價:¥99.00

作 者: [美]斯蒂芬妮·多馬斯,[美]克里斯托弗·多馬斯
出版社: 機(jī)械工業(yè)出版社
叢編項:
標(biāo) 簽: 暫缺

ISBN: 9787111767404 出版時間: 2024-12-01 包裝: 平裝-膠訂
開本: 16開 頁數(shù): 字?jǐn)?shù):  

內(nèi)容簡介

  本書以軟件反匯編技術(shù)為中心,首先帶領(lǐng)讀者從x86的基礎(chǔ)知識開始,學(xué)習(xí)如何讀取、編寫和構(gòu)建賦能全球大量計算機(jī)的匯編語言;然后介紹如何使用IDA、Ghidra、Olly 等業(yè)界最受歡迎的工具對應(yīng)用程序進(jìn)行逆向工程;接著介紹如何利用補(bǔ)丁和密鑰生成等技術(shù)進(jìn)行軟件破解,所有這些都利用了匯編和逆向工程的知識;最后從防御的角度向讀者介紹相關(guān)技術(shù),使他們能夠更好地保護(hù)自己的軟件。本書將引領(lǐng)好奇的讀者深入軟件破解和計算機(jī)的核心,探索其運作機(jī)制。深入學(xué)習(xí)x86計算機(jī)的運行原理,不僅對逆向工程和軟件破解來說至關(guān)重要,還能幫助讀者在代碼優(yōu)化、效率提高、調(diào)試、編譯器設(shè)置調(diào)整以及芯片選擇等方面成為更出色的開發(fā)者。

作者簡介

  斯蒂芬妮·多馬斯(Stephanie Domas)Canonical首席信息安全官(CISO)、英特爾(Intel)前首席安全技術(shù)戰(zhàn)略師。她在道德黑客、逆向工程和高級漏洞分析方面擁有逾十年經(jīng)驗,作為一位知名行業(yè)顧問,她的服務(wù)對象涵蓋初創(chuàng)企業(yè)和行業(yè)巨頭。她目前致力于使Canonical成為開源界最受信賴的計算伙伴。在英特爾時,她負(fù)責(zé)全公司的安全技術(shù)戰(zhàn)略,推動英特爾在安全領(lǐng)域?qū)嵙Α⒏偁幜褪找娴牟粩嘣鲩L。她是一位充滿激情的教育家、戰(zhàn)略家、演說家、顧問和安全愛好者??死锼雇懈?middot;多馬斯(Christopher Domas)知名硬件安全研究員。他的研究重點在于固件、硬件及處理器的底層安全漏洞利用。他因針對還不存在的問題提出天馬行空的解決方案而聞名,其所提解決方案包括全球首個單指令的C語言編譯器(M/o/Vfuscator)、能夠生成程序控制流圖的開發(fā)工具集(REpsych),以及在vi文本編輯器里實現(xiàn)的圖靈機(jī)。

圖書目錄

目  錄
譯者序
前言
關(guān)于作者
關(guān)于技術(shù)撰稿人
關(guān)于技術(shù)編輯
第1章 反編譯和架構(gòu)  1
1.1 反編譯  1
1.1.1 反編譯何時有用  1
1.1.2 反編譯JIT語言  2
1.1.3 保護(hù)JIT語言  3
1.2 實驗:反編譯  4
1.2.1 技能  4
1.2.2 要點  4
1.3 架構(gòu)  4
1.3.1 計算機(jī)架構(gòu)  4
1.3.2 匯編  6
1.4 總結(jié)  10
第2章 x86匯編:數(shù)據(jù)、模式、寄存器
和內(nèi)存訪問  11
2.1 x86簡介  11
2.2 匯編語法  12
2.3 數(shù)據(jù)表示  13
2.3.1 數(shù)字系統(tǒng)的基數(shù)  13
2.3.2 位、字節(jié)和字  14
2.3.3 處理二進(jìn)制數(shù)  16
2.4 寄存器  17
2.4.1 x86中的寄存器  18
2.4.2 寄存器的使用  19
2.5 內(nèi)存訪問  20
2.6 尋址模式  23
2.6.1 絕對尋址  23
2.6.2 間接尋址  23
2.6.3 基址加偏移量尋址  24
2.6.4 索引尋址  24
2.6.5 基址–索引尋址  24
2.7 總結(jié)  25
第3章 x86 匯編:指令  26
3.1 x86指令格式  26
3.2 x86指令  27
3.2.1 mov  28
3.2.2 inc、dec  30
3.2.3 add、sub  30
3.2.4 mul  30
3.2.5 div  31
3.2.6 and、or、xor  31
3.2.7 not  32
3.2.8 shr、shl  32
3.2.9 sar、sal  32
3.2.10 nop  33
3.2.11 lea  33
3.3 整合所有內(nèi)容  34
3.4 常見的x86指令錯誤  35
3.5 總結(jié)  36
第4章 構(gòu)建和運行匯編程序  37
4.1 輸出  37
4.1.1 控制引腳  38
4.1.2 由操作系統(tǒng)處理與顯卡的交互  39
4.2 系統(tǒng)調(diào)用  39
4.2.1 sys_write  39
4.2.2 sys_exit  40
4.2.3 輸出字符串  40
4.3 匯編和鏈接  41
4.3.1 Linux中的匯編與鏈接  41
4.3.2 編寫匯編程序  42
4.4 objdump  45
4.5 實驗:Hello World  45
4.5.1 技能  45
4.5.2 要點  46
4.6 ASCII  46
4.6.1 識別ASCII字符串  47
4.6.2 ASCII操作技巧  48
4.7 總結(jié)  48
第5章 理解條件碼  49
5.1 條件碼  49
5.1.1 eflags  49
5.1.2 影響狀態(tài)標(biāo)志的操作  52
5.2 總結(jié)  55
第6章 分析和調(diào)試匯編代碼  56
6.1 二進(jìn)制分析  56
6.1.1 靜態(tài)分析與動態(tài)分析  56
6.1.2 調(diào)試  57
6.2 斷點  57
6.2.1 軟件斷點  57
6.2.2 硬件斷點  58
6.3 gdb  58
6.4 段錯誤  63
6.5 實驗:鯊魚模擬器3000  63
6.5.1 技能  64
6.5.2 要點  64
6.6 消除噪聲  64
6.7 總結(jié)  65
第7章 函數(shù)和控制流  66
7.1 控制流  66
7.1.1 指令指針  66
7.1.2 控制流指令  67
7.2 x86中的邏輯結(jié)構(gòu)  70
7.2.1 if(...) {...}  70
7.2.2 if(...) {...} else{...}  71
7.2.3 do {...} while (...);  75
7.2.4 while (...) {...}  76
7.2.5 for (...; ...; ...) {...}  77
7.2.6 switch (...) {...}  79
7.2.7 continue  83
7.2.8 break  84
7.2.9 &&  86
7.2.10 ||  86
7.3 ?! ?7
7.3.1 棧是如何工作的  87
7.3.2 x86?! ?7
7.4 函數(shù)調(diào)用與棧幀  91
7.4.1 x86中的函數(shù)  91
7.4.2 棧分析  94
7.4.3 調(diào)用約定  95
7.4.4 cdecl  96
7.4.5 棧幀  100
7.4.6 宏觀程序  105
7.4.7 需要記住的事情  106
7.5 總結(jié)  107
第8章 編譯器和優(yōu)化器  108
8.1 尋找目標(biāo)代碼入口點  108
8.2 編譯器  110
8.2.1 優(yōu)化  111
8.2.2 剝離  113
8.2.3 鏈接  114
8.3 總結(jié)  116
第9章 逆向工程:工具和策略  117
9.1 實驗:RE Bingo  117
9.1.1 技能  117
9.1.2 要點  118
9.2 基礎(chǔ)偵察  118
9.2.1 objdump  118
9.2.2 ltrace和strace  119
9.2.3 strings  122
9.2.4 Dependency Walker  123
9.3 逆向工程的策略  124
9.3.1 尋找感興趣的區(qū)域  124
9.3.2 迭代注釋代碼  124
9.4 總結(jié)  125
第10章 破解:工具和策略  126
10.1 密鑰檢查器  126
10.1.1 不好的方法  127
10.1.2 合理的方法  127
10.1.3 更好的方法  128
10.1.4 最佳方法  128
10.1.5 其他的建議  129
10.2 密鑰生成器  130
10.2.1 為什么要創(chuàng)建密鑰生成器  130
10.2.2 密鑰生成的原理  130
10.2.3 破解各種類型的密鑰檢查  131
10.2.4 對抗密鑰生成器  132
10.3 實驗:密鑰生成器  132
10.3.1 技能  132
10.3.2 要點  133
10.4 Procmon  133
10.4.1 示例:Notepad.exe  133
10.4.2 怎樣用Procmon輔助逆向工程和破解  136
10.5 Resource Hacker  138
10.5.1 示例  138
10.5.2 小實驗:Windows計算器  139
10.6 打補(bǔ)丁  142
10.6.1 打補(bǔ)丁與密鑰生成  142
10.6.2 在哪里打補(bǔ)丁  143
10.6.3 nop指令  143
10.7 其他調(diào)試器  144
10.7.1 OllyDbg  144
10.7.2 Immunity  144
10.7.3 x86dbg  145
10.7.4 WinDbg  145
10.8 使用Immunity調(diào)試工具進(jìn)行
調(diào)試  145
10.8.1 Immunity:匯編代碼  146
10.8.2 Immunity:模塊  147
10.8.3 Immunity:字符串  147
10.8.4 Immunity:運行程序  149
10.8.5 Immunity:異常  149
10.8.6 Immunity:重寫程序  151
10.9 實驗:使用Immunity進(jìn)行破解  153
10.9.1 技能  153
10.9.2 要點  153
10.10 總結(jié)  153
第11章 打補(bǔ)丁和高級工具  154
11.1 在010編輯器中打補(bǔ)丁  154
11.2 CodeFusion補(bǔ)丁  156
11.3 Cheat Engine  158
11.3.1 Cheat Engine:打開進(jìn)程  159
11.3.2 Cheat Engine:查看內(nèi)存  159
11.3.3 Cheat Engine:字符串引用  161
11.3.4 Cheat Engine:重寫程序  161
11.3.5 Cheat Engine:復(fù)制字節(jié)  163
11.3.6 Cheat Engine:獲取地址  163
11.4 實驗:破解LaFarge  163
11.4.1 技能  163
11.4.2 要點  164
11.5 IDA  164
11.5.1 IDA:字符串  165
11.5.2 IDA:基本塊  167
11.5.3 IDA:函數(shù)和變量  168
11.5.4 IDA:注釋  168
11.5.5 IDA:路徑  170
11.6 IDA補(bǔ)丁  171
11.7 實驗:IDA邏輯流程  173
11.7.1 技能  173
11.7.2 要點  173
11.8 Ghidra  174
11.9 實驗:使用IDA進(jìn)行破解  174
11.9.1 技能  174
11.9.2 要點  174
11.10 總結(jié)  174
第12章 防御  175
12.1 混淆技術(shù)  175
12.1.1 評估混淆技術(shù)  177
12.1.2 自動化混淆  177
12.1.3 混淆器  181
12.1.4 攻克混淆器  182
12.2 實驗:混淆技術(shù)  182
12.2.1 技能  183
12.2.2 要點  183
12.3 反調(diào)試  183
12.3.1 IsDebuggerPresent()  183
12.3.2 調(diào)試寄存器  184
12.3.3 讀時間戳計數(shù)器  184
12.3.4 無效CloseHandle()調(diào)用  185
12.3.5 目錄掃描  185
12.3.6 攻擊性反調(diào)試  186
12.3.7 攻克反調(diào)試技術(shù)  186
12.4 實驗:反調(diào)試  186
12.4.1 技能  186
12.4.2 要點  187
12.5 總結(jié)  187
第13章 高級防御技術(shù)  188
13.1 防篡改技術(shù)  188
13.1.1 哈?! ?88
13.1.2 簽名  189
13.1.3 水印  189
13.1.4 軟件守護(hù)  189
13.2 加殼技術(shù)  190
13.2.1 加殼器是如何工作的  190
13.2.2 這是強(qiáng)大的保護(hù)機(jī)制嗎  191
13.2.3 破解加殼技術(shù)  191
13.2.4 PEiD  192
13.3 實驗:檢測和脫殼  192
13.3.1 技能  193
13.3.2 要點  193
13.4 虛擬化技術(shù)  193
13.4.1 代碼虛擬化是如何工作的  195
13.4.2 分層虛擬化  195
13.4.3 虛擬化存在的問題  195
13.4.4 這是強(qiáng)大的保護(hù)機(jī)制嗎  196
13.4.5 破解虛擬化技術(shù)  196
13.5 加密器/解密器  196
13.5.1 這種保護(hù)機(jī)制有用嗎  197
13.5.2 攻克加密器  197
13.6 總結(jié)  197
第14章 檢測與預(yù)防  199
14.1 循環(huán)冗余校驗  199
14.2 代碼簽名  200
14.2.1 如何進(jìn)行代碼簽名  200
14.2.2 如何驗證已簽名的應(yīng)用
程序  201
14.2.3 代碼簽名有效嗎  201
14.2.4 代碼簽名與循環(huán)冗余校驗  202
14.2.5 這是強(qiáng)大的保護(hù)機(jī)制嗎  202
14.3 RASP  202
14.3.1 鉤子函數(shù)  202
14.3.2 RASP的風(fēng)險  203
14.3.3 這是強(qiáng)大的保護(hù)機(jī)制嗎  203
14.4 白名單  203
14.4.1 如何運行白名單  204
14.4.2 這是強(qiáng)大的保護(hù)機(jī)制嗎  204
14.5 黑名單  205
14.6 遠(yuǎn)程認(rèn)證  205
14.6.1 遠(yuǎn)程認(rèn)證示例  206
14.6.2 這是強(qiáng)大的保護(hù)機(jī)制嗎  206
14.7 實驗:進(jìn)程監(jiān)控  207
14.7.1 技能  207
14.7.2 要點  207
14.8 總結(jié)  207
第15章 法律  208
15.1 影響逆向工程的美國法律  208
15.1.1 《數(shù)字千年版權(quán)法》  208
15.1.2 《計算機(jī)欺詐和濫用法案》  208
15.1.3 《版權(quán)法》  209
15.1.4 重要法庭判例  210
15.1.5 合理使用  211
15.1.6 DMCA研究免責(zé)  211
15.1.7 合法性  212
15.2 總結(jié)  212
第16章 高級技術(shù)  213
16.1 時間旅行調(diào)試  213
16.2 二進(jìn)制插樁  213
16.3 中間表示  214
16.4 反編譯  214
16.5 自動化結(jié)構(gòu)恢復(fù)  215
16.6 可視化  215
16.7 去混淆  215
16.8 定理證明器  216
16.9 符號分析  216
16.10 總結(jié)  217
第17章 附加話題  218
17.1 棧溢出  218
17.1.1 shellcode  224
17.1.2 棧溢出與棧保護(hù)  227
17.2 關(guān)聯(lián)C代碼與x86匯編代碼  228
17.2.1 在x86代碼中使用C函數(shù)  228
17.2.2 在C代碼中使用x86函數(shù)  230
17.2.3 _start與main()  231
17.2.4 標(biāo)準(zhǔn)參數(shù)  233
17.2.5 混合使用C語言和匯編
語言  233
17.3 總結(jié)  235
結(jié)語  236

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號