前言
1.大家在使用VEH HOOK的时候会在某些关键的代码上做中断异常
2.如果中断的代码是类似cmp xxx,xxx的影响标志寄存器的指令要特别注意
3.因为你直接跳过cmp执行,导致相对应的标志位没有得到设置
4.就会导致接下来的程序流程执行失败
设置方法
举个例子:
假如设置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
代码示例
全部标志位掩码列表