我一直在尝试对一款游戏的功能进行逆向工程,但我有点困惑。我很新的逆向工程(我使用ollydbg BTW),所以我不知道所有的技巧和细节。逆向工程,左移七位移动
反正这里是我的问题。当你拿起游戏中的任何物品时,这个函数被调用。然后它会计算项目的价值并将此值添加到您的分数中。在函数被调用之前,一个值被推送,我相当有信心是项目的ID。 这是混淆了我的代码:
SHL ESI,7
MOV CX,WORD PTR DS:[EDX+ESI+42]
ESI =物品的ID EDX =恒定值FE56A0
我被猜测,EDX(FE56A0)是项目的数组的开始, ESI是该项目的索引,42是该项目价值的指数。虽然ESI向左移动7位,但这会有些奇怪。随着ESI增加,位移值不会线性增长。
因此,如果EDX表示数组的开始和ESI将是一个索引,阵列中的项目将不相等的尺寸。 这段代码的含义令我困惑。
任何人有一个想法,这是什么代码可以代表什么呢?
谢谢两位非常感谢!两者都非常有帮助!你似乎是对的。我试图预测使用您的信息调用函数之前的结果,并且预测是正确的! EDX指向数组的底部,条目长度为128个字节,项目的值在偏移量0x42处。我一直在混合使用十六进制和十进制数字,这使我困惑。现在我要试图弄清楚这些条目还有哪些内容^^谢谢! – Vaporice 2011-04-19 23:20:14