banner
lca

lca

真正的不自由,是在自己的心中设下牢笼。

《从零开始学IDA逆向》学习笔记-11(标志寄存器)

image

carry flag#

Carry Flag(CF 寄存器):当运算结果为负或者相加超过数值上限的时候会被触发。大概意思是计算结果如果超出了范围,就会触发 CF 标志,如果两个无符号数相减结果为负,同样会触发 CF 标志。

overflow flag#

of 标志位类似于 cf,但它针对有符号数的,当有符号数计算出错时,会触发 of 标志位。

signed flag#

任何操作的结果如果是一个负数就会触发 sf,sf 只表示结果的符号,并不表示结果对还是错。

zero flag#

zf 在以下条件下将会触发:在内部实际是减法的比较指令中,两个操作数相同;增或减导致结果为 0;相减结果为 0。

条件跳转与标志位#

也就是当 2 个操作数相同,JZ 指令会执行跳转。如果第一个无符号操作数比第二个小,JB 指令会执行跳转。如果第一个有符号操作数比第二个小,JL 指令会执行跳转。一般只需要看无符号条件跳转和有符号条件跳转表格的第三列就行。

asmconditionoperation
JAz=0 and c=0jump if above(如果大于则跳转)
JAEc=0jump if above or equal(如果大于或等于则跳转)
JBc=1jump if below (如果低于则跳转)
JBEz=1 or c=1jump if below or equal(如果小于等于则跳转)
JCc=1jump if carry(如果进位则跳转)
JECXZecx=0jump if ecx is 0 (如果 ecx 为 0,则跳转)
JEz=1jump if equal(如果相等就跳转)
JZz=1jump if zero (如果为零则跳转)
JNEz=0jump if not equal (如果不相等就跳转)
JNZz=0jump if not zero (如果非零则跳转)
JO超出范围jump if overflow
JP有偶数个 1 位(操作结果中二进制中 1 的个数,01110000)jump if parity
JPE偶数校验jump if parity even
JNP没有偶数个 1 位jump if not parity
JPO奇数校验jump if parity odd
JS符号位为 1jump if sign(如果有标志则跳转)
JNS符号位为 0jump if not sign(如果没有标志则跳转)
JL/JNGE符号位与溢出位相同jump if less or not greater/equal
JLE/JNGz=1 or 符号位与溢出位相同jump if less or equal/not greater
JG/JNLEz=0 and 符号位与溢出位相同jump is greater/not less or equal
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。