2014-01-17 80 views
1

我使用简单的crackme应用程序做了一些逆向工程的工作,并且使用OllyDbg进行了调试。逆向工程 - AND 0FF

我被困在指令的行为与操作数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

有人能解释一下我吗?

thankx求助

+1

为什么你认为ZF应该是1? AND的结果不为零,所以ZF将为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