从零开始学习破解注册码-比较
第二章节介绍跳转,这一节主要介绍影响跳转条件的,比较所谓比较指令,就是不影响寄存器的值,只影响标志位
cmp ,TEST
暴力破解中一般用到CMP 与TEST ,进行跳转前的比较
TEST的一个非常普遍的用法是用来测试一方寄存器是否为空:
test ecx, ecx
jz somewhere
如果ecx为零,设置ZF零标志为1,Jz跳转
CMP属于算术运算指令
功能: 比较两个值(寄存器,内存,直接数值)
语法: CMP r/m,r/m/data
标志位: C,P,A,Z,O
CMP比较.(两操作数作减法,仅修改标志位,不回送结果).
cmp实际上是只设置标志不保存结构的减法,并设置Z-flag(零标志).
零标志很像carry,也是内部标志寄存器的一位.
例如:
Cmp eax, 2; 如果eax-2=0即eax=2就设置零标志为1
Jz somewhere ; 如果设置了零标志就跳转
得出的结论
test逻辑与运算结果为零,就把ZF(零标志)置1;
cmp 算术减法运算结果为零,就把ZF(零标志)置1.
TEST 更像是AND OR 等这些逻辑指令
cmp 更像是 ADDSUB 等这些运算指令
这里就用到了很多的比较
汇编后就可以看出来
test 汇编没有找到对应的编码就业先给你看一下类型
虽然看不懂,,但是感觉好牛逼得样子 小白表示厉害 哎,,,,老了。只能吃你们嚼过的饭了。没精力学了 支持支持。 表示看不懂 看来我要好好学习了 有个程序解不了 诶! 表示有压力 乃小白一个,看不懂,完全0基础, 还是回贴一枚