IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 【对汇编语言又爱又恨?那是没找对方法或者合适的书】 -> 正文阅读

[网络协议]【对汇编语言又爱又恨?那是没找对方法或者合适的书】

?

收到王军老师发来的英文电子版时,我的内心是忐忑的。汇编语言是一门低级语言,晦涩难懂,学习门槛高。目前市面上的汇编语言书籍大多是32位的,64位汇编语言的书籍凤毛麟角,可供查证的资料十分有限。我于2020年3月开始正式创业;作为上海碳泽信息科技有限公司的创始人,我平时工作较忙,只能利用周末和晚上的时间进行翻译,翻译这样的书籍是很有挑战的。我尽量把书中的示例代码都亲自跑了一遍,以进行验证。本书的作者有非常丰富的从业经验,全书内容深入浅出,循序渐进,通俗易懂;本书的技术审稿人在英特尔公司工作了26年,对英特尔CPU的架构非常熟悉,对本书的质量进行了严格把关。
汇编语言是逆向工程的基础,扎实的汇编语言基础对于抵御恶意软件攻击非常有用,是保护IT基础设施的重要技能。在学习本书前,最好先学一门高级语言(如C语言),这对于你学习和掌握本书的内容非常重要。本书很少涉及深奥的理论知识,将理论内容控制在最低范围。书中的代码都是完整的,便于读者进行测试和修改。
掌握汇编语言对于漏洞挖掘也非常重要,尤其是底层漏洞,如Windows、Linux操作系统的漏洞挖掘。另外,如果读者喜欢打CTF比赛,那么任何一个优秀战队都需要一名优秀的二进制队员;要想成为那个不可或缺的队员,非常有必要学好汇编语言。
目前国内的安全人才(尤其是二进制方面的人才)非常短缺。希望本书能帮助读者快速掌握64位汇编语言,迅速.上手,为精通64位汇编语言打下坚实基础,为国家信息技术的发展和网络安全事业奉献力量。
最后感谢清华大学出版社,感谢王军等编辑付出的艰苦努力,感谢上海碳泽信息科技有限公司的所有同事和股东的支持,谢谢你们。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?贾玉彬.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2021年7月于北京

学习汇编语言可能会令人沮丧,不仅仅是因为它是一种“无情”的语言。 在任何可能的情况下,计算机都会对你“发飙”。你可能只是在不知不觉中引入了一个隐藏的错误,该错误会在以后的程序中或执行时让你发狂。除此之外,学习曲线陡峭,语言晦涩难懂,英特尔官方文档铺天盖地,并且可用的开发工具各有其古怪之处。
在《x64汇编语言:从新手到AVX专家》中,你将从简单的程序开始学习,直到高级矢量扩展(AVX)编程。 到本书结尾,你将能编写和阅读汇编代码,将汇编语言与更高级的语言混合在一起使用,并对AVX 有初步的了解。本书的目的是向你展示如何使用汇编语言指令。本书不是关于编程风格或代码性能优化的。 在掌握汇编的基本知识之后,你可以继续学习如何优化代码。 本书不应该是你学习编程的第一本书。如果你
没有任何编程经验,请将本书搁置一段时间,先学习更高级语言(如C)的一些编程基础知识。

可扫描封底二维码下载本书的所有源代码。本书使用的代码都尽可能地简单,这意味着没有图形用户界面、繁杂的程序或错误检查,因为添加所有这些特性会使我们的注意力偏离学习汇编语言的目的。
理论知识被严格限制在最低限度:关于二进制数的一点知识、逻辑运算符的简短介绍以及一些有限的线性代数。我们将远离浮点转换。如果你需要转换二进制或十六进制数,请找一个可以为你执行此类操作的网站。不要浪费时间执行手工计算。坚持目标:学习汇编。
汇编代码以完整的程序呈现,这样你就可以在计算机上测试它们、操作它们、更改它们、破坏它们。
还将展示可以使用哪些工具、如何使用它们以及这些工具的潜在问题。拥有正确工具对于克服陡峭学习曲线至关重要。有时会指出可能有用或提供更多详细信息的书籍、白皮书和网站。

我们无意为你提供所有汇编指令的综合课程。 内容太多了,仅用一本书讲述是不可能的(请看英特尔手册的大小)。我们将介绍主要的指令,以便你对汇编语言有所了解。如果通读本书,你将获得学习汇编的必要知识,你还可以自行详细研究某些感兴趣的领域。读完本书后,你将可以进一步学习英特尔手册,并尝试理解其内容。

《x64汇编语言:从新手到AVX专家》的大部分内容专门针对Linux 上的汇编,因为它是学习汇编语言的最简单平台。最后,我们提供了一些章节以帮助你了解如何在Windows 上进行汇编。 你将看到,一旦掌握了Linux 汇编,进行Windows 汇编会更容易。

有许多可与英特尔处理器一起使用的汇编器,例如FASM、MASM、GAS、NASM 和YASM。我们将在本书中使用NASM,因为它是多平台的,在Linux、Windows 和macOS 上都可用,具有较大的用户群。但不必担心,一旦你熟悉一种汇编器,学习另一种汇编“方言”就很容易。
我们已经仔细编写并测试了本书使用的代码。但是,如果文本中有错别字或程序中有错误,我们将不承担任何责任。我们将错误归咎于两只猫,它们喜欢在我们打字的时候走过我们的键盘。
我们在本书中提出的想法和观点仅代表我们自己,并不代表IBM 的立场、战略或观点。

节选自《x64汇编语言:从新手到AVX专家》一书

?

█ █ █
目 ? ?录
?
第1章 ?你的第一个程序 ? 1
1.1 ?编辑、汇编、链接和运行(或调试) ? 2
1.2 ?汇编程序的结构 ? 6
1.2.1 ?.data段 ? 6
1.2.2 ?.bss段 ? 7
1.2.3 ?.txt段 ? 8
1.3 ?小结 ? 10
第2章 ?二进制数、十六进制数和寄存器 ? 11
2.1 ?二进制简短课程 ? 11
2.1.1 ?整数 ? 12
2.1.2 ?浮点数 ? 13
2.2 ?寄存器简短课程 ? 13
2.2.1 ?通用寄存器 ? 14
2.2.2 ?指令指针寄存器(rip) ? 15
2.2.3 ?标志寄存器(Flag Register) ? 15
2.2.4 ?xmm和ymm寄存器 ? 16
2.3 ?小结 ? 16
第3章 ?用调试器进行程序分析:
GDB ? 17
3.1 ?开始调试 ? 17
3.2 ?继续进步 ? 22
3.3 ?其他GDB命令 ? 24
3.4 ?稍加改进的hello, world程序 ? 25
3.5 ?小结 ? 27
第4章 ?你的下一个程序:
Alive and Kicking ? 29
4.1 ?alive程序分析 ? 30
4.2 ?打印 ? 34
4.3 ?小结 ? 37
第5章 ?汇编是基于逻辑的 ? 39
5.1 ?NOT ? 39
5.2 ?OR ? 39
5.3 ?XOR ? 40
5.4 ?AND ? 41
5.5 ?小结 ? 42
第6章 ?数据显示调试器 ? 43
6.1 ?使用DDD ? 43
6.2 ?小结 ? 46
第7章 ?跳转和循环 ? 47
7.1 ?安装SimpleASM ? 47
7.2 ?使用SASM ? 47
7.3 ?小结 ? 54

第8章 ?内存 ? 55
8.1 ?探索内存 ? 55
8.2 ?小结 ? 62
第9章 ?整数运算 ? 63
9.1 ?从整数算术开始 ? 63
9.2 ?分析算术指令 ? 67
9.3 ?小结 ? 69
第10章 ?堆栈 ? 71
10.1 ?理解堆栈 ? 71
10.2 ?跟踪堆栈 ? 74
10.3 ?小结 ? 76
第11章 ?浮点运算 ? 77
11.1 ?单精度与双精度 ? 77
11.2 ?浮点数编程 ? 78
11.3 ?小结 ? 81
第12章 ?函数 ? 83
12.1 ?编写一个简单的函数 ? 83
12.2 ?更多函数 ? 85
12.3 ?小结 ? 87
第13章 ?栈对齐和栈帧 ? 89
13.1 ?栈对齐 ? 89
13.2 ?有关栈帧的更多信息 ? 91
13.3 ?小结 ? 92
第14章 ?外部函数 ? 93
14.1 ?编译并链接函数 ? 93
14.2 ?扩展makefile ? 97
14.3 ?小结 ? 98
第15章 ?调用约定 ? 99
15.1 ?函数参数 ? 100
15.2 ?栈布局 ? 103
15.3 ?保留寄存器 ? 106
15.4 ?小结 ? 107

第16章 ?位运算 ? 109
16.1 ?基础 ? 109
16.2 ?算术 ? 115
16.3 ?小结 ? 119
第17章 ?位操作 ? 121
17.1 ?修改位的其他方法 ? 121
17.2 ?位标志变量 ? 124
17.3 ?小结 ? 125
第18章 ?宏 ? 127
18.1 ?编写宏 ? 127
18.2 ?使用objdump ? 129
18.3 ?小结 ? 130
第19章 ?控制台I/O ? 131
19.1 ?使用I/O ? 131
19.2 ?处理溢出 ? 133
19.3 ?小结 ? 137
第20章 ?文件I/O ? 139
20.1 ?使用syscall ? 139
20.2 ?文件处理 ? 140
20.3 ?条件汇编 ? 149
20.4 ?文件操作指令 ? 149
20.5 ?小结 ? 151
第21章 ?命令行 ? 153
21.1 ?访问命令行参数 ? 153
21.2 ?调试命令行 ? 154
21.3 ?小结 ? 156
第22章 ?从C到汇编 ? 157
22.1 ?编写C源文件 ? 157
22.2 ?编写汇编代码 ? 159
22.3 ?小结 ? 164
第23章 ?内联汇编 ? 165
23.1 ?基本内联汇编 ? 165
23.2 ?扩展内联汇编 ? 167
23.3 ?小结 ? 170
第24章 ?字符串 ? 171
24.1 ?移动字符串 ? 171
24.2 ?比较和扫描字符串 ? 176
24.3 ?小结 ? 181
第25章 ?cpuid ? 183
25.1 ?使用cpuid ? 183
25.2 ?使用test指令 ? 186
25.3 ?小结 ? 188
第26章 ?SIMD ? 189
26.1 ?标量数据和打包数据 ? 189
26.2 ?数据对齐与不对齐 ? 191
26.3 ?小结 ? 192
第27章 ?小心mxcsr ? 193
27.1 ?操作mxcsr的位 ? 194
27.2 ?分析程序 ? 201
27.3 ?小结 ? 202
第28章 ?SSE对齐 ? 203
28.1 ?未对齐示例 ? 203
28.2 ?对齐示例 ? 206
28.3 ?小结 ? 210
第29章 ?SSE打包整数 ? 211
29.1 ?适用于整数的SSE指令 ? 211
29.2 ?分析代码 ? 213
29.3 ?小结 ? 214
第30章 ?SSE字符串操作 ? 215
30.1 ?imm8控制字节 ? 216
30.2 ?使用imm8控制字节 ? 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 ?标志 ? 219
30.3 ?小结 ? 220
第31章 ?搜索字符 ? 221
31.1 ?确定字符串的长度 ? 221
31.2 ?在字符串中搜索 ? 224
31.3 ?小结 ? 228
第32章 ?比较字符串 ? 229
32.1 ?隐式长度 ? 229
32.2 ?显式长度 ? 232
32.3 ?小结 ? 236
第33章 ?重排 ? 237
33.1 ?重排初探 ? 237
33.2 ?重排广播 ? 243
33.3 ?重排反转 ? 244
33.4 ?重排旋转 ? 245
33.5 ?重排字节 ? 245
33.6 ?小结 ? 246
第34章 ?SSE字符串掩码 ? 247
34.1 ?搜索字符 ? 247
34.2 ?搜索某个范围内的字符 ? 253
34.3 ?搜索子字符串 ? 258
34.4 ?小结 ? 262
第35章 ?AVX ? 263
35.1 ?测试是否支持AVX ? 263
35.2 ?AVX程序示例 ? 265
35.3 ?小结 ? 270
第36章 ?AVX矩阵运算 ? 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 ?小结 ? 289
第37章 ?矩阵转置 ? 291
37.1 ?转置代码示例 ? 291
37.2 ?解包版本 ? 295
37.3 ?重排版本 ? 299
37.4 ?小结 ? 301
第38章 ?性能调优 ? 303
38.1 ?转置计算性能 ? 303
38.2 ?迹计算性能 ? 310
38.3 ?小结 ? 317
第39章 ?你好,Windows的世界 ? 319
39.1 ?入门 ? 319
39.2 ?编写一些代码 ? 321
39.3 ?调试 ? 323
39.4 ?syscall ? 323
39.5 ?小结 ? 323
第40章 ?使用Windows API ? 325
40.1 ?控制台输出 ? 325
40.2 ?编译Windows程序 ? 328
40.3 ?小结 ? 330
第41章 ?Windows中的函数 ? 331
41.1 ?使用四个以上的参数 ? 331
41.2 ?使用浮点数 ? 337
41.3 ?小结 ? 339
第42章 ?可变参数函数 ? 341
42.1 ?Windows中的可变参数函数 ? 341
42.2 ?混合值 ? 343
42.3 ?小结 ? 345
第43章 ?Windows文件 ? 347
43.1 ?小结 ? 350
后记 ? 351


?


?

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-06 13:32:18  更:2022-03-06 13:32:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/5 13:26:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码