【发布时间】:2013-04-16 23:07:34
【问题描述】:
我正在使用称为作弊引擎的内存编辑应用程序。我将作弊引擎附加到游戏中。在我的游戏中,我有一个称为 HP 的 32 位整数。 HP 存储在内存地址 A。如果我重新启动游戏,HP 将存储在新的内存地址 B。似乎使用 Cheat Engine,我可以进行指针扫描并找到指向的静态内存地址 C另一个内存地址及其附带的偏移量 D 和偏移量,因此 [D + offset] 在该会话期间始终存储 HP 的内存地址。所以如果我取消引用[D + offset],我总是得到存储HP的内存地址。
这是一个图表:
A 或 B --> 生命值
D + 偏移量 --> A 或 B
C --> D
使用偏移量有什么好处?为什么 C 不能直接指向 A 或 B?我熟悉在 C 语言中处理数组时使用偏移量是有益的。这是否意味着每当我看到一个指针的偏移量时,指针都指向数组中的第一个元素,而偏移量是指数组中的一个元素?
【问题讨论】:
-
此级别的答案可能会受到旨在运行代码的芯片(或虚拟机)的架构和指令集的严重影响。一些指令集通过为偏移索引提供快速寻址模式来鼓励这种事情。
标签: windows memory-management reverse-engineering memory-editing