2014-01-17 77 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