我使用简单的crackme应用程序进行一些逆向工程,我正在使用OllyDbg进行调试。
我坚持指令行为和操作数0x0FF。我的意思是它在C ++中相当于 if(... = true)。
令人困惑的是:
ECX = CCCCCC01 ZF = 1 AND ECX, 0FF ### After instruction ECX = 00000001 ZF = 0 ZF - Should be active
我不知道为什么ECX寄存器1和ZF的结果不活跃。
AND => 1,1 = 1(相同的操作数) 否则= 0
有人可以解释一下吗?
感谢您寻求帮助
答案 0 :(得分:1)
这是一个明智的AND,所以在二进制中你有
1100 1100 1100 1100 1100 1100 0000 0001
AND 0000 0000 0000 0000 0000 0000 1111 1111
----------------------------------------
0000 0000 0000 0000 0000 0000 0000 0001