汇编指令
目录
汇编指令总览
写在前面
本笔记作为整个汇编指令体系的入口,用于构建读者的整体视角。汇编语言指令众多,如果没有合理的结构,会让人感觉碎片化、难以理解。
为解决这一点,本笔记采用分层方式组织所有指令:
第一级(当前文档):说明分类脉络、全局框架、学习策略。
第二级:依照功能划分指令类别。
第三级:每条指令独立成文,包含语义、行为、影响寄存器、常见陷阱以及 PWN 中的注意事项。
所有具体指令的细节都属于第三级,本笔记不展开。
分类脉络说明
x86_64 指令集虽然庞大,但在逆向分析和 PWN 中真正常用的部分,可以自然分为若干功能模块。
这些模块并非死板的知识分类,而是从“程序行为逻辑”角度划分的:
运算类 —— 修改数据
数据传输类 —— 在寄存器与内存之间移动数据
栈与调用类 —— 函数调用链、栈帧变化
控制流类 —— 程序走向如何改变
逻辑与位操作 —— 数据的结构级处理
系统接口类 —— 与系统调用相关(可选)
这些模块构成程序行为的完整闭环:
数据从哪里来、如何被处理、怎么被推进栈、如何跳转、如何返回。
第二级笔记将围绕这些分类展开。
二级分类说明(用于下级分支结构)
下面是推荐的功能型分类,这将成为你的 Obsidian 二级分支:
运算与逻辑类
处理数据内容,包含算术运算与逻辑运算。
对应常见场景:解密、长度计算、循环计数器运转。
数据传输类
在寄存器 / 内存 / 栈之间移动数据。
是理解任意汇编的基础路径。
栈与调用类
函数调用栈的建立与销毁,PWN 中最敏感的一组指令。
涉及 push、pop、call、leave、ret 等。
控制流与分支类
程序逻辑的流动决定点,包括无条件跳转与条件跳转。
特别包括 jcc 的大分类。
位操作与移位类
处理位级结构,如加密、hash、校验、指针运算等。
字符串和块操作(可选) 如 rep、movs、stos 等。逆向中出现频率不高,但理解后有很大价值。
系统调用相关(可选)
如 syscall、int80。对 PWN 有直接关联。
这些将分别成为第二级笔记的主分类节点。
纵览表(无双链)
以下为你的整个指令库的总览结构,不包含跳转,仅用于帮助读者形成整体图景:
运算与逻辑类
-
add
-
sub
-
inc
-
dec
-
xor
-
not
-
and
-
or
数据传输类
-
mov
-
lea
-
push
-
pop
栈与调用类
-
call
-
ret
-
leave
控制流类
-
jmp
-
jcc 系列(je, jne, ja, jb, jge, jle 等)
移位与位操作类
-
shl
-
shr
-
rol
-
ror
其他
-
nop
-
特殊指令(如 syscall 等)
使用方式说明
为了让本知识库更像一本不断扩展的“逆向字典”,推荐以下使用方式:
遇到汇编 → 按类别快速定位 → 查第三级对应指令
同时,通过分类回溯,可以理解指令“为什么在这里出现”和“关系为何”。
本笔记的角色是提供指引与框架,而不是收录细节。
你所有指令笔记已经写好,因此只需在二级分支处按照本结构创建空文档或目录即可。