反汇编 - 为什么 CMP 指令将被比较的值乘以 2
逆向工程
拆卸
ollydbg
调试器
反汇编者
快手
2021-06-14 09:29:16
1个回答
该cmp
指令不会将任何东西乘以 2。相反,在您的 ollydbg 屏幕截图中看到的这段代码是您附加的质量较差的源代码图像中以下行的实现:
if ((!key) || (key > (0x1337 * 2000)))
首先,在 address 中0x01051C09
,key
与 进行比较0
。如果key
等于则0
跳转到0x01051C18
。否则,key
与 相比较0x0961DB0
。如果key
低于或等于0x0961DB0
另一个跳跃。如果key
是更大的比0x0961DB0
执行继续0x01051C18
。
正如您现在应该已经猜到的那样,0x0961DB0
只是0x1337
2000 倍。
说明0x01051C18
以0x01051C22
呼吁实施wrong
,制定eax
正确的返回值(1
),然后跳转到(我假设),其中函数序言和ret
执行。
其它你可能感兴趣的问题