【发布时间】:2011-04-19 22:40:12
【问题描述】:
我一直在尝试对游戏的功能进行逆向工程,但我有点困惑。我对逆向工程很陌生(我正在使用 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 将是索引,则数组中的项目将不具有相同的大小。 这段代码的含义让我感到困惑。
有人知道这段代码可以代表什么吗?
【问题讨论】: