-
>
闖進(jìn)數(shù)學(xué)世界――探秘歷史名題
-
>
中醫(yī)基礎(chǔ)理論
-
>
當(dāng)代中國政府與政治(新編21世紀(jì)公共管理系列教材)
-
>
高校軍事課教程
-
>
思想道德與法治(2021年版)
-
>
毛澤東思想和中國特色社會主義理論體系概論(2021年版)
-
>
中醫(yī)內(nèi)科學(xué)·全國中醫(yī)藥行業(yè)高等教育“十四五”規(guī)劃教材
匯編語言與逆向技術(shù) 版權(quán)信息
- ISBN:9787302681007
- 條形碼:9787302681007 ; 978-7-302-68100-7
- 裝幀:平裝-膠訂
- 冊數(shù):暫無
- 重量:暫無
- 所屬分類:>
匯編語言與逆向技術(shù) 本書特色
本書為戰(zhàn)略性新興領(lǐng)域“十四五”高等教育教材體系建設(shè)團(tuán)隊——新一代信息技術(shù)(網(wǎng)絡(luò)空間安全)建設(shè)項目。本教材滿足新一代信息技術(shù)的發(fā)展需要,將匯編語言和軟件逆向分析技術(shù)相融合,特別是軟件知識產(chǎn)權(quán)保護(hù)技術(shù)反映在教材內(nèi)容中;教材案例體現(xiàn)傳統(tǒng)工科專業(yè)的新需求,編寫時以案例驅(qū)動,任務(wù)引導(dǎo),特別是增加了軟件知識產(chǎn)權(quán)保護(hù)場景的案例;教材的教學(xué)資源豐富,加強(qiáng)立體化建設(shè);幫助讀者深入理解計算機(jī)程序執(zhí)行過程,開啟二進(jìn)制代碼逆向分析的大門。
匯編語言與逆向技術(shù) 內(nèi)容簡介
"匯編語言是一種面向機(jī)器的底層編程語言。本書將計算機(jī)匯編語言與軟件逆向分析技術(shù)交叉融合,從匯編語言的角度介紹處理器、操作系統(tǒng)和應(yīng)用軟件的底層設(shè)計,通過逆向分析技術(shù)進(jìn)一步理解系統(tǒng)和程序的底層運(yùn)行機(jī)制,以軟件知識產(chǎn)權(quán)保護(hù)場景的案例分析展示匯編語言與逆向技術(shù)在信息安全領(lǐng)域的重要性。本書介紹了目前普遍使用的Intel IA32處理器及其使用的x86匯編語言,也介紹了華為鯤鵬處理器及其使用的功能更強(qiáng)大的ARM匯編語言。逆向技術(shù)部分,本書使用了更加先進(jìn)且免費(fèi)的Binary Ninja靜態(tài)逆向分析平臺和x64dbg動態(tài)逆向分析平臺。 本書主要面向高校信息安全、網(wǎng)絡(luò)空間安全等相關(guān)專業(yè)的師生和從事信息安全工作的技術(shù)人員。通過學(xué)習(xí),讀者可以更深入地了解計算機(jī)處理器和操作系統(tǒng),理解高級語言編程的底層實現(xiàn),進(jìn)一步掌握靜態(tài)和動態(tài)的二進(jìn)制代碼逆向分析方法,從案例分析中認(rèn)識到匯編語言和逆向技術(shù)對于軟件知識產(chǎn)權(quán)保護(hù)的重要性,為進(jìn)一步學(xué)習(xí)“軟件漏洞挖掘”“計算機(jī)病毒分析”等信息安全課程打下堅實的基礎(chǔ)。 "
匯編語言與逆向技術(shù)匯編語言與逆向技術(shù) 前言
不同于C 、Java等高級編程語言,匯編語言是直接面向計算機(jī)處理器和內(nèi)存的低級編程語言。匯編語言本質(zhì)上是機(jī)器指令的助記符語言,匯編語句與二進(jìn)制指令有一對一的映射關(guān)系。匯編語言的編程效率遠(yuǎn)遠(yuǎn)低于高級編程語言,主要應(yīng)用于信息安全領(lǐng)域的逆向分析,是信息安全專業(yè)學(xué)生的必修課程。在真實的網(wǎng)絡(luò)攻防場景中,面對沒有高級語言源代碼的二進(jìn)制惡意代碼,信息安全工程師唯一可以依賴的語言就是匯編語言。
本書將計算機(jī)匯編語言與軟件逆向分析技術(shù)交叉融合,緩解了匯編語言和逆向技術(shù)在教學(xué)上的脫節(jié)問題。本書從匯編語言的角度介紹處理器、操作系統(tǒng)和應(yīng)用軟件的底層設(shè)計,通過逆向分析技術(shù)讓讀者進(jìn)一步深入理解系統(tǒng)和程序的底層運(yùn)行機(jī)制,以軟件知識產(chǎn)權(quán)保護(hù)場景的案例分析展示了匯編語言與逆向技術(shù)在信息安全領(lǐng)域的重要性。
本書介紹了目前使用*普遍的Intel IA32處理器及其使用的x86匯編語言。在此感謝南開大學(xué)——華為“智能基座”產(chǎn)教融合協(xié)同育人基地的支持,使作者有機(jī)會學(xué)習(xí)了國產(chǎn)華為鯤鵬處理器及其使用的功能更強(qiáng)大的ARM匯編語言,對處理器和匯編語言有了更深入的認(rèn)識,了解到未來的發(fā)展方向。
匯編語言與逆向技術(shù) 目錄
第1章基本概念1
1.1歡迎來到匯編語言的世界1
1.1.1一些問題2
1.1.2匯編語言應(yīng)用程序4
本節(jié)習(xí)題5
1.2虛擬機(jī)的概念5
1.2.1虛擬機(jī)與計算機(jī)的層次結(jié)構(gòu)6
1.2.2匯編編譯器的歷史7
本節(jié)習(xí)題7
1.3數(shù)據(jù)的表示方法8
1.3.1二進(jìn)制數(shù)8
1.3.2二進(jìn)制加法9
1.3.3整數(shù)存儲的尺寸10
1.3.4十六進(jìn)制數(shù)10
1.3.5有符號整數(shù)11
1.3.6字符的存儲14
本節(jié)習(xí)題16
1.4布爾運(yùn)算17
本節(jié)習(xí)題19
1.5本章小結(jié)19
第2章IA32處理器體系結(jié)構(gòu)21
2.1基本概念21
2.1.1微機(jī)的基本結(jié)構(gòu)21
2.1.2指令執(zhí)行的周期23
2.1.3內(nèi)存的讀取26
2.1.4程序是如何運(yùn)行的27
本節(jié)習(xí)題29
2.2IA32處理器的體系結(jié)構(gòu)30
2.2.1操作模式30
2.2.2基本執(zhí)行環(huán)境312.2.3浮點(diǎn)單元34
2.2.4Intel微處理器的歷史34
本節(jié)習(xí)題36
2.3IA32的內(nèi)存管理37
2.3.1實地址模式37
2.3.2保護(hù)模式38
本節(jié)習(xí)題41
2.4IA32微機(jī)的構(gòu)成41
2.4.1主板41
2.4.2視頻輸出43
2.4.3存儲器43
2.4.4輸入輸出接口44
本節(jié)習(xí)題45
2.5輸入輸出系統(tǒng)45
本節(jié)習(xí)題47
2.6本章小結(jié)48
匯編語言與逆向技術(shù)目錄
第3章匯編語言基礎(chǔ)49
3.1匯編語言的基本元素49
3.1.1整數(shù)常量49
3.1.2整數(shù)表達(dá)式50
3.1.3實數(shù)常量50
3.1.4字符常量51
3.1.5字符串常量51
3.1.6保留字51
3.1.7標(biāo)識符52
3.1.8偽指令52
3.1.9指令53
3.1.10NOP(空操作)指令55
本節(jié)習(xí)題55
3.2例子: 整數(shù)相加減56
3.2.1AddSub程序的另一個版本57
3.2.2程序模板58
本節(jié)習(xí)題59
3.3匯編、鏈接和運(yùn)行程序59
本節(jié)習(xí)題61
3.4定義數(shù)據(jù)62
3.4.1內(nèi)部數(shù)據(jù)類型62
3.4.2數(shù)據(jù)定義語句63
3.4.3定義BYTE和SBYTE數(shù)據(jù)63
3.4.4定義WORD和SWORD數(shù)據(jù)65
3.4.5定義DWORD和SDWORD數(shù)據(jù)65
3.4.6定義QWORD數(shù)據(jù)66
3.4.7定義TBYTE數(shù)據(jù)66
3.4.8定義實數(shù)66
3.4.9小端字節(jié)序67
3.4.10為AddSub程序添加變量67
3.4.11未初始化數(shù)據(jù)的聲明68
本節(jié)習(xí)題69
3.5符號常量69
3.5.1等號偽指令69
3.5.2計算數(shù)組和字符串的大小70
3.5.3EQU偽指令71
3.5.4TEXTEQU偽指令72
本節(jié)習(xí)題72
3.6本章小結(jié)73
第4章數(shù)據(jù)傳送、尋址和算術(shù)運(yùn)算74
4.1數(shù)據(jù)傳送指令74
4.1.1操作數(shù)類型74
4.1.2MOV指令75
4.1.3MOVZX、MOVSX指令77
4.1.4LAHF、SAHF指令78
4.1.5XCHG指令79
本節(jié)習(xí)題79
4.2簡單算術(shù)運(yùn)算80
4.2.1INC、DEC指令80
4.2.2ADD指令81
4.2.3SUB指令81
4.2.4NEG指令82
4.2.5高級語言的簡單匯編實現(xiàn)82
4.2.6算術(shù)運(yùn)算與標(biāo)志位82
本節(jié)習(xí)題85
4.3偽指令和操作符86
4.3.1ALIGN偽指令86
4.3.2LABEL偽指令86
4.3.3OFFSET操作符87
4.3.4PTR操作符87
4.3.5TYPE操作符88
4.3.6LENGTHOF操作符88
4.3.7SIZEOF操作符88
本節(jié)習(xí)題88
4.4循環(huán)語句90
4.4.1JMP指令90
4.4.2LOOP指令90
4.4.3使用匯編來實現(xiàn)循環(huán)程序91
本節(jié)習(xí)題92
4.5內(nèi)存操作數(shù)與尋址方式93
4.5.1直接偏移操作數(shù)93
4.5.2間接操作數(shù)94
4.5.3變址操作數(shù)95
本節(jié)習(xí)題95
4.6本章小結(jié)96
第5章過程98
5.1程序鏈接與鏈接庫98
5.1.1鏈接庫98
5.1.2常見鏈接庫100
本節(jié)習(xí)題103
5.2堆棧機(jī)制103
5.2.1運(yùn)行時棧103
5.2.2PUSH、POP指令104
本節(jié)習(xí)題107
5.3過程的定義和使用107
5.3.1過程的概念107
5.3.2過程聲明偽指令108
5.3.3過程調(diào)用與返回指令109
5.3.4流程圖111
5.3.5寄存器的恢復(fù)和保持111
本節(jié)習(xí)題112
5.4匯編程序?qū)嵗v解113
5.5本章小結(jié)116
第6章條件處理指令及程序結(jié)構(gòu)117
6.1狀態(tài)標(biāo)志和位操作類指令117
6.1.1CPU的狀態(tài)標(biāo)志117
6.1.2邏輯運(yùn)算指令119
6.1.3測試指令TEST122
6.1.4比較指令CMP123
本節(jié)習(xí)題123
6.2順序程序結(jié)構(gòu)123
6.3分支程序結(jié)構(gòu)124
6.3.1無條件轉(zhuǎn)移指令124
6.3.2條件轉(zhuǎn)移指令127
6.3.3單分支結(jié)構(gòu)131
6.3.4雙分支結(jié)構(gòu)132
6.3.5多分支結(jié)構(gòu)133
本節(jié)習(xí)題133
6.4循環(huán)程序結(jié)構(gòu)134
6.4.1循環(huán)指令135
6.4.2計數(shù)控制循環(huán)136
6.4.3條件控制循環(huán)137
6.4.4多重循環(huán)137
本節(jié)習(xí)題138
6.5本章小結(jié)139
第7章華為鯤鵬處理器體系結(jié)構(gòu)140
7.1服務(wù)器處理器141
7.1.1服務(wù)器體系結(jié)構(gòu)141
7.1.2服務(wù)器處理器并行組織結(jié)構(gòu)141
本節(jié)習(xí)題143
7.2處理器體系結(jié)構(gòu)143
7.2.1Intel處理器體系結(jié)構(gòu)143
7.2.2ARM處理器體系結(jié)構(gòu)144
7.2.3華為鯤鵬處理器146
本節(jié)習(xí)題147
7.3基于ARMv8的處理器體系結(jié)構(gòu)147
7.3.1執(zhí)行狀態(tài)148
7.3.2數(shù)據(jù)類型148
7.3.3異常等級與安全模型149
7.3.4寄存器150
7.3.5異常處理153
7.3.6中斷154
本節(jié)習(xí)題156
7.4本章小結(jié)156
第8章華為鯤鵬處理器匯編編程157
8.1ARM尋址方式157
8.1.1立即數(shù)尋址157
8.1.2寄存器尋址158
8.1.3寄存器間接尋址158
8.1.4基址尋址158
8.1.5多寄存器尋址159
8.1.6堆棧尋址160
8.1.7PC相對尋址160
8.1.8寄存器移位尋址160
本節(jié)習(xí)題161
8.2ARM指令集161
8.2.1GNU ARM匯編語言語法格式161
8.2.2跳轉(zhuǎn)指令162
8.2.3異常產(chǎn)生指令166
8.2.4系統(tǒng)寄存器指令168
8.2.5數(shù)據(jù)處理指令168
8.2.6Load/Store內(nèi)存訪問指令176
8.2.7SIMD指令177
本節(jié)習(xí)題178
8.3ARM偽指令179
8.3.1數(shù)據(jù)定義偽操作179
8.3.2匯編控制偽操作181
8.3.3其他偽操作182
8.3.4偽指令183
本節(jié)習(xí)題184
8.4ARM匯編語言的程序結(jié)構(gòu)185
8.4.1順序結(jié)構(gòu)185
8.4.2分支結(jié)構(gòu)186
8.4.3循環(huán)結(jié)構(gòu)188
8.4.4子程序189
本節(jié)習(xí)題189
8.5ARM的編譯與調(diào)試工具190
8.5.1GCC編譯器套件190
8.5.2匯編程序示例——Hello World191
本節(jié)習(xí)題193
8.6本章小結(jié)193第9章PE文件結(jié)構(gòu)194
9.1可執(zhí)行文件194
9.1.1Windows系統(tǒng)可執(zhí)行文件194
9.1.2Linux系統(tǒng)可執(zhí)行文件198
本節(jié)習(xí)題199
9.2PE的基本概念199
9.2.1基地址200
9.2.2虛擬地址201
9.2.3相對虛擬地址201
9.2.4文件偏移地址201
本節(jié)習(xí)題202
9.3DOS部分202
9.3.1DOS MZ頭202
9.3.2DOS存根203
本節(jié)習(xí)題203
9.4PE文件頭204
9.4.1Signature字段204
9.4.2IMAGE_FILE_HEADER結(jié)構(gòu)204
9.4.3IMAGE_OPTIONAL_HEADER結(jié)構(gòu)206
9.4.4目錄209
本節(jié)習(xí)題210
9.5節(jié)211
9.5.1節(jié)表211
9.5.2常見的節(jié)213
9.5.3節(jié)的對齊值214
9.5.4文件偏移與虛擬內(nèi)存地址轉(zhuǎn)換214
本節(jié)習(xí)題215
9.6導(dǎo)入表216
9.6.1導(dǎo)入函數(shù)的調(diào)用216
9.6.2IMAGE_IMPORT_DESCRIPTOR結(jié)構(gòu)216
9.6.3PE裝載器218
9.6.4導(dǎo)入表實例分析218
本節(jié)習(xí)題222
9.7導(dǎo)出表222
9.7.1IMAGE_EXPORT_DESCRIPTOR結(jié)構(gòu)223
9.7.2導(dǎo)出表實例分析224
本節(jié)習(xí)題226
9.8本章小結(jié)226第10章C語言程序逆向分析227
10.1函數(shù)與堆棧227
10.1.1函數(shù)調(diào)用與返回227
10.1.2堆棧229
10.1.3函數(shù)的參數(shù)229
10.1.4棧幀與函數(shù)的局部變量230
10.1.5全局變量與局部變量232
本節(jié)習(xí)題233
10.2調(diào)用約定233
本節(jié)習(xí)題235
10.3數(shù)組和結(jié)構(gòu)體235
10.3.1數(shù)組235
10.3.2結(jié)構(gòu)體237
本節(jié)習(xí)題239
10.4常見的控制流結(jié)構(gòu)239
10.4.1分支結(jié)構(gòu)239
10.4.2循環(huán)結(jié)構(gòu)240
10.4.3switchcase結(jié)構(gòu)242
本節(jié)習(xí)題245
10.5其他事項245
10.5.1識別main函數(shù)245
10.5.2不同優(yōu)化級別生成的代碼246
本節(jié)習(xí)題248
10.6本章小結(jié)248
第11章靜態(tài)逆向分析技術(shù)249
11.1初次使用Binary Ninja249
本節(jié)習(xí)題252
11.2導(dǎo)航與瀏覽代碼252
11.2.1雙擊導(dǎo)航252
11.2.2符號列表253
11.2.3導(dǎo)航對話框253
11.2.4字符串與交叉引用253
11.2.5導(dǎo)入函數(shù)與導(dǎo)出函數(shù)255
11.2.6搜索255
11.2.7前進(jìn)與后退256
本節(jié)習(xí)題257
11.3使用Binary Ninja的主視圖257
本節(jié)習(xí)題260
11.4分析與標(biāo)注代碼260
11.4.1重命名函數(shù)或變量260
11.4.2修改函數(shù)或變量的類型261
11.4.3添加注釋261
11.4.4添加書簽或者標(biāo)簽261
11.4.5設(shè)置高亮顯示的顏色262
11.4.6撤銷與重做262
本節(jié)習(xí)題263
11.5使用類型263
本節(jié)習(xí)題266
11.6修補(bǔ)代碼267
本節(jié)習(xí)題268
11.7實例講解269
11.7.1實例一269
11.7.2實例二271
本節(jié)習(xí)題272
11.8本章小結(jié)273
第12章動態(tài)調(diào)試分析技術(shù)274
12.1x64dbg調(diào)試器入門274
12.1.1x64dbg的獲取與安裝275
12.1.2初次使用x64dbg調(diào)試275
本節(jié)習(xí)題277
12.2x64dbg的主界面277
12.2.1代碼窗口278
12.2.2寄存器窗口279
12.2.3內(nèi)存窗口279
12.2.4堆棧窗口與調(diào)用堆棧280
12.2.5內(nèi)存布局窗口281
12.2.6不同窗口間的跳轉(zhuǎn)與導(dǎo)航281
12.2.7其他窗口282
本節(jié)習(xí)題282
12.3基本調(diào)試操作282
12.3.1由調(diào)試器啟動調(diào)試對象282
12.3.2附加到已經(jīng)在運(yùn)行的進(jìn)程282
12.3.3恢復(fù)調(diào)試對象執(zhí)行283
12.3.4結(jié)束調(diào)試284
本節(jié)習(xí)題284
12.4使用斷點(diǎn)284
12.4.1軟件斷點(diǎn)284
12.4.2硬件斷點(diǎn)286
12.4.3管理斷點(diǎn)287
12.4.4條件斷點(diǎn)288
12.4.5軟件斷點(diǎn)的原理289
本節(jié)習(xí)題290
12.5修改被調(diào)試進(jìn)程的狀態(tài)290
12.5.1修改寄存器的值290
12.5.2修改數(shù)據(jù)291
12.5.3修改代碼292
12.5.4修改下一條指令292
本節(jié)習(xí)題293
12.6反調(diào)試及其應(yīng)對293
本節(jié)習(xí)題294
12.7實例講解295
12.7.1實例一295
12.7.2實例二297
本節(jié)習(xí)題299
12.8本章小結(jié)300
第13章軟件知識產(chǎn)權(quán)保護(hù)技術(shù)301
13.1序列號保護(hù)301
13.1.1序列號保護(hù)的實現(xiàn)原理301
13.1.2序列號保護(hù)的案例分析303
本節(jié)習(xí)題304
13.2警告彈窗304
13.2.1警告彈窗的實現(xiàn)原理304
13.2.2警告窗口的案例分析307
本節(jié)習(xí)題310
13.3時間限制310
13.3.1時間限制的實現(xiàn)原理310
13.3.2時間限制的案例分析312
本節(jié)習(xí)題316
13.4功能限制316
13.4.1功能限制的實現(xiàn)原理317
13.4.2功能限制的案例分析318
本節(jié)習(xí)題320
13.5KeyFile保護(hù)321
13.5.1KeyFile保護(hù)的實現(xiàn)原理321
13.5.2KeyFile保護(hù)的案例分析323
本節(jié)習(xí)題325
13.6本章小結(jié)326
- >
有舍有得是人生
- >
推拿
- >
隨園食單
- >
我與地壇
- >
羅庸西南聯(lián)大授課錄
- >
中國歷史的瞬間
- >
詩經(jīng)-先民的歌唱
- >
唐代進(jìn)士錄