运算与逻辑类
作者:Vesper Vei
1 分钟阅读
目录
运算与逻辑类
概述
本分类包含所有对数据本身进行修改的基础指令,包括算术运算、逻辑处理以及与循环相关的增减操作。这些指令通常直接影响标志寄存器(ZF、CF、OF、SF 等),并在逆向分析、加密/解密逻辑、长度计算、状态机跳转中出现最频繁。
本分类旨在让你快速定位“数据是如何被处理的”。
子类说明
算术操作:对数值做加减乘除、计数、偏移相关运算
逻辑操作:对比特结构进行变换(与、或、非、异或)
增减操作:循环结构的常见组成部分
指令列表
算术相关
- ADD
执行加法运算,修改进位标志(CF)、溢出标志(OF)等,是最常见的数值累加方式。 - SUB
执行减法运算,同时更新标志位,常与cmp的效果类似但会真正改变操作数。 - IMUL-MUL
执行有符号(imul)与无符号(mul)乘法。运算结果可能跨越高低位寄存器(如 RDX:RAX),并会根据结果更新 OF、CF。 - IDIV-DIV
执行有符号(idiv)与无符号(div)除法,要求被除数通常放在 RDX:RAX(或 EDX:EAX)。若结果溢出或除数为 0,会触发异常。 - INC
将操作数加一,不影响 CF(Carry Flag);常用于循环计数器、地址偏移。 - DEC
将操作数减一,同样不影响 CF;常见于倒计数循环、结构遍历。
逻辑相关
- XOR
按位异或,常用于清零寄存器(如xor eax, eax),也用于加密与混淆。 - AND
按位与,用于屏蔽特定位、提取标志位或构造条件判断。 - OR
按位或,用于设置某些比特位,或组合逻辑条件。 - NOT
按位取反,翻转全部 bit;常用于位运算构造、快速补码处理。
移位类(逻辑/算术结构处理)
其他运算类
- NOP
空操作指令,不改变寄存器或内存内容;用于结构对齐、补位、调试与 ROP 填充。