修改标志寄存器的值(大全)(破解必备)-软件安全逆向社区论坛-技术社区-学技术网

修改标志寄存器的值(大全)(破解必备)

前言

1.大家在使用VEH HOOK的时候会在某些关键的代码上做中断异常

2.如果中断的代码是类似cmp xxx,xxx的影响标志寄存器的指令要特别注意

3.因为你直接跳过cmp执行,导致相对应的标志位没有得到设置

4.就会导致接下来的程序流程执行失败

设置方法

图片[1]-修改标志寄存器的值(大全)(破解必备)-软件安全逆向社区论坛-技术社区-学技术网

举个例子:

假如设置ZF,那么就是100 0000,有一个1就是1,用或运算

100 0000 = 0x40,那么就是当前的寄存器和0x40做或运算即可,即:

EFlags |= 0x40

假如清除ZF,那么依然是100 0000,先做取反,011 1111,用与运算,两个都是1才是1,否则就是0

这样刚好可以让ZF始终为0,其他的位置不变,因为以前是1它就是1了,是0也就是0了

那么就是EFlags &= ~0x40

代码示例

 

全部标志位掩码列表

 

请登录后发表评论