我正在使用称为Cheat Engine的内存编辑应用程序。我将Cheat Engine附加到游戏中。在我的游戏中,我有一个称为HP的32位整数。 HP存储在内存地址A中。如果我重新启动游戏,HP将存储在新的内存地址B中。似乎使用Cheat Engine,我可以执行指针扫描并找到指向的静态内存地址C另一个内存地址及其相应的偏移量D和偏移量,以便在该会话期间[D +偏移量]始终存储HP的内存地址。所以如果我解引用[D + offset],我总是得到存储HP的内存地址。指针的偏移有什么好处?
这里是一个图:
A或B - > HP
d +偏移 - > A或B
Ç - > d
优点是什么使用偏移?为什么C不能直接指向A或B?我很熟悉使用偏移量在处理C语言中的数组时很有用。这是否意味着只要我看到指针的偏移量,指针就指向数组中的第一个元素,偏移量是指数组中的一个元素?
在这个级别的答案可能会受到代码旨在运行的芯片(或虚拟机)的体系结构和指令集的严重影响。一些指令集通过为偏移索引提供快速寻址模式来鼓励这种情况。 – dmckee 2013-04-23 16:32:54