日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【对汇编语言又爱又恨?那是没找对方法或者合适的书】

發(fā)布時(shí)間:2024/1/18 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【对汇编语言又爱又恨?那是没找对方法或者合适的书】 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

收到王軍老師發(fā)來的英文電子版時(shí),我的內(nèi)心是忐忑的。匯編語言是一門低級(jí)語言,晦澀難懂,學(xué)習(xí)門檻高。目前市面上的匯編語言書籍大多是32位的,64位匯編語言的書籍鳳毛麟角,可供查證的資料十分有限。我于2020年3月開始正式創(chuàng)業(yè);作為上海碳澤信息科技有限公司的創(chuàng)始人,我平時(shí)工作較忙,只能利用周末和晚上的時(shí)間進(jìn)行翻譯,翻譯這樣的書籍是很有挑戰(zhàn)的。我盡量把書中的示例代碼都親自跑了一遍,以進(jìn)行驗(yàn)證。本書的作者有非常豐富的從業(yè)經(jīng)驗(yàn),全書內(nèi)容深入淺出,循序漸進(jìn),通俗易懂;本書的技術(shù)審稿人在英特爾公司工作了26年,對(duì)英特爾CPU的架構(gòu)非常熟悉,對(duì)本書的質(zhì)量進(jìn)行了嚴(yán)格把關(guān)。
匯編語言是逆向工程的基礎(chǔ),扎實(shí)的匯編語言基礎(chǔ)對(duì)于抵御惡意軟件攻擊非常有用,是保護(hù)IT基礎(chǔ)設(shè)施的重要技能。在學(xué)習(xí)本書前,最好先學(xué)一門高級(jí)語言(如C語言),這對(duì)于你學(xué)習(xí)和掌握本書的內(nèi)容非常重要。本書很少涉及深?yuàn)W的理論知識(shí),將理論內(nèi)容控制在最低范圍。書中的代碼都是完整的,便于讀者進(jìn)行測(cè)試和修改。
掌握匯編語言對(duì)于漏洞挖掘也非常重要,尤其是底層漏洞,如Windows、Linux操作系統(tǒng)的漏洞挖掘。另外,如果讀者喜歡打CTF比賽,那么任何一個(gè)優(yōu)秀戰(zhàn)隊(duì)都需要一名優(yōu)秀的二進(jìn)制隊(duì)員;要想成為那個(gè)不可或缺的隊(duì)員,非常有必要學(xué)好匯編語言。
目前國(guó)內(nèi)的安全人才(尤其是二進(jìn)制方面的人才)非常短缺。希望本書能幫助讀者快速掌握64位匯編語言,迅速.上手,為精通64位匯編語言打下堅(jiān)實(shí)基礎(chǔ),為國(guó)家信息技術(shù)的發(fā)展和網(wǎng)絡(luò)安全事業(yè)奉獻(xiàn)力量。
最后感謝清華大學(xué)出版社,感謝王軍等編輯付出的艱苦努力,感謝上海碳澤信息科技有限公司的所有同事和股東的支持,謝謝你們。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?賈玉彬.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2021年7月于北京

學(xué)習(xí)匯編語言可能會(huì)令人沮喪,不僅僅是因?yàn)樗且环N“無情”的語言。 在任何可能的情況下,計(jì)算機(jī)都會(huì)對(duì)你“發(fā)飆”。你可能只是在不知不覺中引入了一個(gè)隱藏的錯(cuò)誤,該錯(cuò)誤會(huì)在以后的程序中或執(zhí)行時(shí)讓你發(fā)狂。除此之外,學(xué)習(xí)曲線陡峭,語言晦澀難懂,英特爾官方文檔鋪天蓋地,并且可用的開發(fā)工具各有其古怪之處。
在《x64匯編語言:從新手到AVX專家》中,你將從簡(jiǎn)單的程序開始學(xué)習(xí),直到高級(jí)矢量擴(kuò)展(AVX)編程。 到本書結(jié)尾,你將能編寫和閱讀匯編代碼,將匯編語言與更高級(jí)的語言混合在一起使用,并對(duì)AVX 有初步的了解。本書的目的是向你展示如何使用匯編語言指令。本書不是關(guān)于編程風(fēng)格或代碼性能優(yōu)化的。 在掌握匯編的基本知識(shí)之后,你可以繼續(xù)學(xué)習(xí)如何優(yōu)化代碼。 本書不應(yīng)該是你學(xué)習(xí)編程的第一本書。如果你
沒有任何編程經(jīng)驗(yàn),請(qǐng)將本書擱置一段時(shí)間,先學(xué)習(xí)更高級(jí)語言(如C)的一些編程基礎(chǔ)知識(shí)。

可掃描封底二維碼下載本書的所有源代碼。本書使用的代碼都盡可能地簡(jiǎn)單,這意味著沒有圖形用戶界面、繁雜的程序或錯(cuò)誤檢查,因?yàn)樘砑铀羞@些特性會(huì)使我們的注意力偏離學(xué)習(xí)匯編語言的目的。
理論知識(shí)被嚴(yán)格限制在最低限度:關(guān)于二進(jìn)制數(shù)的一點(diǎn)知識(shí)、邏輯運(yùn)算符的簡(jiǎn)短介紹以及一些有限的線性代數(shù)。我們將遠(yuǎn)離浮點(diǎn)轉(zhuǎn)換。如果你需要轉(zhuǎn)換二進(jìn)制或十六進(jìn)制數(shù),請(qǐng)找一個(gè)可以為你執(zhí)行此類操作的網(wǎng)站。不要浪費(fèi)時(shí)間執(zhí)行手工計(jì)算。堅(jiān)持目標(biāo):學(xué)習(xí)匯編。
匯編代碼以完整的程序呈現(xiàn),這樣你就可以在計(jì)算機(jī)上測(cè)試它們、操作它們、更改它們、破壞它們。
還將展示可以使用哪些工具、如何使用它們以及這些工具的潛在問題。擁有正確工具對(duì)于克服陡峭學(xué)習(xí)曲線至關(guān)重要。有時(shí)會(huì)指出可能有用或提供更多詳細(xì)信息的書籍、白皮書和網(wǎng)站。

我們無意為你提供所有匯編指令的綜合課程。 內(nèi)容太多了,僅用一本書講述是不可能的(請(qǐng)看英特爾手冊(cè)的大小)。我們將介紹主要的指令,以便你對(duì)匯編語言有所了解。如果通讀本書,你將獲得學(xué)習(xí)匯編的必要知識(shí),你還可以自行詳細(xì)研究某些感興趣的領(lǐng)域。讀完本書后,你將可以進(jìn)一步學(xué)習(xí)英特爾手冊(cè),并嘗試?yán)斫馄鋬?nèi)容。

《x64匯編語言:從新手到AVX專家》的大部分內(nèi)容專門針對(duì)Linux 上的匯編,因?yàn)樗菍W(xué)習(xí)匯編語言的最簡(jiǎn)單平臺(tái)。最后,我們提供了一些章節(jié)以幫助你了解如何在Windows 上進(jìn)行匯編。 你將看到,一旦掌握了Linux 匯編,進(jìn)行Windows 匯編會(huì)更容易。

有許多可與英特爾處理器一起使用的匯編器,例如FASM、MASM、GAS、NASM 和YASM。我們將在本書中使用NASM,因?yàn)樗嵌嗥脚_(tái)的,在Linux、Windows 和macOS 上都可用,具有較大的用戶群。但不必?fù)?dān)心,一旦你熟悉一種匯編器,學(xué)習(xí)另一種匯編“方言”就很容易。
我們已經(jīng)仔細(xì)編寫并測(cè)試了本書使用的代碼。但是,如果文本中有錯(cuò)別字或程序中有錯(cuò)誤,我們將不承擔(dān)任何責(zé)任。我們將錯(cuò)誤歸咎于兩只貓,它們喜歡在我們打字的時(shí)候走過我們的鍵盤。
我們?cè)诒緯刑岢龅南敕ê陀^點(diǎn)僅代表我們自己,并不代表IBM 的立場(chǎng)、戰(zhàn)略或觀點(diǎn)。

節(jié)選自《x64匯編語言:從新手到AVX專家》一書

?

█ █ █
目 ? ?錄
?
第1章 ?你的第一個(gè)程序 ? 1
1.1 ?編輯、匯編、鏈接和運(yùn)行(或調(diào)試) ? 2
1.2 ?匯編程序的結(jié)構(gòu) ? 6
1.2.1 ?.data段 ? 6
1.2.2 ?.bss段 ? 7
1.2.3 ?.txt段 ? 8
1.3 ?小結(jié) ? 10
第2章 ?二進(jìn)制數(shù)、十六進(jìn)制數(shù)和寄存器 ? 11
2.1 ?二進(jìn)制簡(jiǎn)短課程 ? 11
2.1.1 ?整數(shù) ? 12
2.1.2 ?浮點(diǎn)數(shù) ? 13
2.2 ?寄存器簡(jiǎn)短課程 ? 13
2.2.1 ?通用寄存器 ? 14
2.2.2 ?指令指針寄存器(rip) ? 15
2.2.3 ?標(biāo)志寄存器(Flag Register) ? 15
2.2.4 ?xmm和ymm寄存器 ? 16
2.3 ?小結(jié) ? 16
第3章 ?用調(diào)試器進(jìn)行程序分析:
GDB ? 17
3.1 ?開始調(diào)試 ? 17
3.2 ?繼續(xù)進(jìn)步 ? 22
3.3 ?其他GDB命令 ? 24
3.4 ?稍加改進(jìn)的hello, world程序 ? 25
3.5 ?小結(jié) ? 27
第4章 ?你的下一個(gè)程序:
Alive and Kicking ? 29
4.1 ?alive程序分析 ? 30
4.2 ?打印 ? 34
4.3 ?小結(jié) ? 37
第5章 ?匯編是基于邏輯的 ? 39
5.1 ?NOT ? 39
5.2 ?OR ? 39
5.3 ?XOR ? 40
5.4 ?AND ? 41
5.5 ?小結(jié) ? 42
第6章 ?數(shù)據(jù)顯示調(diào)試器 ? 43
6.1 ?使用DDD ? 43
6.2 ?小結(jié) ? 46
第7章 ?跳轉(zhuǎn)和循環(huán) ? 47
7.1 ?安裝SimpleASM ? 47
7.2 ?使用SASM ? 47
7.3 ?小結(jié) ? 54

第8章 ?內(nèi)存 ? 55
8.1 ?探索內(nèi)存 ? 55
8.2 ?小結(jié) ? 62
第9章 ?整數(shù)運(yùn)算 ? 63
9.1 ?從整數(shù)算術(shù)開始 ? 63
9.2 ?分析算術(shù)指令 ? 67
9.3 ?小結(jié) ? 69
第10章 ?堆棧 ? 71
10.1 ?理解堆棧 ? 71
10.2 ?跟蹤堆棧 ? 74
10.3 ?小結(jié) ? 76
第11章 ?浮點(diǎn)運(yùn)算 ? 77
11.1 ?單精度與雙精度 ? 77
11.2 ?浮點(diǎn)數(shù)編程 ? 78
11.3 ?小結(jié) ? 81
第12章 ?函數(shù) ? 83
12.1 ?編寫一個(gè)簡(jiǎn)單的函數(shù) ? 83
12.2 ?更多函數(shù) ? 85
12.3 ?小結(jié) ? 87
第13章 ?棧對(duì)齊和棧幀 ? 89
13.1 ?棧對(duì)齊 ? 89
13.2 ?有關(guān)棧幀的更多信息 ? 91
13.3 ?小結(jié) ? 92
第14章 ?外部函數(shù) ? 93
14.1 ?編譯并鏈接函數(shù) ? 93
14.2 ?擴(kuò)展makefile ? 97
14.3 ?小結(jié) ? 98
第15章 ?調(diào)用約定 ? 99
15.1 ?函數(shù)參數(shù) ? 100
15.2 ?棧布局 ? 103
15.3 ?保留寄存器 ? 106
15.4 ?小結(jié) ? 107

第16章 ?位運(yùn)算 ? 109
16.1 ?基礎(chǔ) ? 109
16.2 ?算術(shù) ? 115
16.3 ?小結(jié) ? 119
第17章 ?位操作 ? 121
17.1 ?修改位的其他方法 ? 121
17.2 ?位標(biāo)志變量 ? 124
17.3 ?小結(jié) ? 125
第18章 ?宏 ? 127
18.1 ?編寫宏 ? 127
18.2 ?使用objdump ? 129
18.3 ?小結(jié) ? 130
第19章 ?控制臺(tái)I/O ? 131
19.1 ?使用I/O ? 131
19.2 ?處理溢出 ? 133
19.3 ?小結(jié) ? 137
第20章 ?文件I/O ? 139
20.1 ?使用syscall ? 139
20.2 ?文件處理 ? 140
20.3 ?條件匯編 ? 149
20.4 ?文件操作指令 ? 149
20.5 ?小結(jié) ? 151
第21章 ?命令行 ? 153
21.1 ?訪問命令行參數(shù) ? 153
21.2 ?調(diào)試命令行 ? 154
21.3 ?小結(jié) ? 156
第22章 ?從C到匯編 ? 157
22.1 ?編寫C源文件 ? 157
22.2 ?編寫匯編代碼 ? 159
22.3 ?小結(jié) ? 164
第23章 ?內(nèi)聯(lián)匯編 ? 165
23.1 ?基本內(nèi)聯(lián)匯編 ? 165
23.2 ?擴(kuò)展內(nèi)聯(lián)匯編 ? 167
23.3 ?小結(jié) ? 170
第24章 ?字符串 ? 171
24.1 ?移動(dòng)字符串 ? 171
24.2 ?比較和掃描字符串 ? 176
24.3 ?小結(jié) ? 181
第25章 ?cpuid ? 183
25.1 ?使用cpuid ? 183
25.2 ?使用test指令 ? 186
25.3 ?小結(jié) ? 188
第26章 ?SIMD ? 189
26.1 ?標(biāo)量數(shù)據(jù)和打包數(shù)據(jù) ? 189
26.2 ?數(shù)據(jù)對(duì)齊與不對(duì)齊 ? 191
26.3 ?小結(jié) ? 192
第27章 ?小心mxcsr ? 193
27.1 ?操作mxcsr的位 ? 194
27.2 ?分析程序 ? 201
27.3 ?小結(jié) ? 202
第28章 ?SSE對(duì)齊 ? 203
28.1 ?未對(duì)齊示例 ? 203
28.2 ?對(duì)齊示例 ? 206
28.3 ?小結(jié) ? 210
第29章 ?SSE打包整數(shù) ? 211
29.1 ?適用于整數(shù)的SSE指令 ? 211
29.2 ?分析代碼 ? 213
29.3 ?小結(jié) ? 214
第30章 ?SSE字符串操作 ? 215
30.1 ?imm8控制字節(jié) ? 216
30.2 ?使用imm8控制字節(jié) ? 217
30.2.1 ?位0和1 ? 217
30.2.2 ?位2和3 ? 217
30.2.3 ?位4和5 ? 218
30.2.4 ?位6 ? 218
30.2.5 ?位7 ? 219
30.2.6 ?標(biāo)志 ? 219
30.3 ?小結(jié) ? 220
第31章 ?搜索字符 ? 221
31.1 ?確定字符串的長(zhǎng)度 ? 221
31.2 ?在字符串中搜索 ? 224
31.3 ?小結(jié) ? 228
第32章 ?比較字符串 ? 229
32.1 ?隱式長(zhǎng)度 ? 229
32.2 ?顯式長(zhǎng)度 ? 232
32.3 ?小結(jié) ? 236
第33章 ?重排 ? 237
33.1 ?重排初探 ? 237
33.2 ?重排廣播 ? 243
33.3 ?重排反轉(zhuǎn) ? 244
33.4 ?重排旋轉(zhuǎn) ? 245
33.5 ?重排字節(jié) ? 245
33.6 ?小結(jié) ? 246
第34章 ?SSE字符串掩碼 ? 247
34.1 ?搜索字符 ? 247
34.2 ?搜索某個(gè)范圍內(nèi)的字符 ? 253
34.3 ?搜索子字符串 ? 258
34.4 ?小結(jié) ? 262
第35章 ?AVX ? 263
35.1 ?測(cè)試是否支持AVX ? 263
35.2 ?AVX程序示例 ? 265
35.3 ?小結(jié) ? 270
第36章 ?AVX矩陣運(yùn)算 ? 271
36.1 ?矩陣代碼示例 ? 271
36.2 ?矩陣打印:printm4x4 ? 281
36.3 ?矩陣乘法:multi4x4 ? 281
36.4 ?矩陣求逆:Inverse4x4 ? 284
36.4.1 ?Cayley-Hamilton定理 ? 284
36.4.2 ?Leverrier算法 ? 285
36.4.3 ?代碼 ? 286
36.5 ?小結(jié) ? 289
第37章 ?矩陣轉(zhuǎn)置 ? 291
37.1 ?轉(zhuǎn)置代碼示例 ? 291
37.2 ?解包版本 ? 295
37.3 ?重排版本 ? 299
37.4 ?小結(jié) ? 301
第38章 ?性能調(diào)優(yōu) ? 303
38.1 ?轉(zhuǎn)置計(jì)算性能 ? 303
38.2 ?跡計(jì)算性能 ? 310
38.3 ?小結(jié) ? 317
第39章 ?你好,Windows的世界 ? 319
39.1 ?入門 ? 319
39.2 ?編寫一些代碼 ? 321
39.3 ?調(diào)試 ? 323
39.4 ?syscall ? 323
39.5 ?小結(jié) ? 323
第40章 ?使用Windows API ? 325
40.1 ?控制臺(tái)輸出 ? 325
40.2 ?編譯Windows程序 ? 328
40.3 ?小結(jié) ? 330
第41章 ?Windows中的函數(shù) ? 331
41.1 ?使用四個(gè)以上的參數(shù) ? 331
41.2 ?使用浮點(diǎn)數(shù) ? 337
41.3 ?小結(jié) ? 339
第42章 ?可變參數(shù)函數(shù) ? 341
42.1 ?Windows中的可變參數(shù)函數(shù) ? 341
42.2 ?混合值 ? 343
42.3 ?小結(jié) ? 345
第43章 ?Windows文件 ? 347
43.1 ?小結(jié) ? 350
后記 ? 351


?


?

總結(jié)

以上是生活随笔為你收集整理的【对汇编语言又爱又恨?那是没找对方法或者合适的书】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。