RAM 中的静态指针是什么?它们如何存在?

Mar*_*nen 4 memory static pointers

我已经通过教程学习 C++ 游戏黑客一两周了,我几乎全部掌握了。然而,有件事却一次又一次地困扰着我。

要自定义一个值(例如玩家的生命值),我们必须使用作弊引擎(或类似引擎)搜索内存地址并将该值设置为其他值。每次我们启动程序时,这些内存地址显然都是不同的,因为它不会总是使用 RAM 中的相同位置。

为了解决这个问题,人们会尝试找到一个指向包含该值的内存地址的静态指针;指针如何是静态的,它们如何从 RAM 中保留静态地址?

pod*_*ova 6

实际上,静态的不是指向游戏变量的指针,而是变量地址相对于另一个数据的地址的偏移量。

如果您想要“破解”的游戏始终将数据存储在相同的、可靠的结构中,那么就有可能找到这些偏移量。当您知道偏移量时,游戏开始时您唯一需要做的就是找到偏移量所引用的地址,而不是执行多次扫描 - 每个变量一次。

编辑:

另外,程序很可能在每次运行时都被赋予相同的虚拟地址空间,因此实际上,每次运行程序时,具有静态偏移量的变量看起来都具有相同的地址(进一步阅读此处那里) 。

  • @podkova,使用虚拟地址,这是真的。不过我会改写这句话。加载到内存中的同一位置可能意味着在物理内存中。例如,您可以说_每次运行程序时很可能都会给它们相同的虚拟地址空间。 (3认同)