Pointers RAM中的静态指针是什么?它们是如何存在的? 我已经通过教程学习C++游戏黑客一个星期或两个,我几乎都能得到它。 然而,有一件事一次又一次地困扰着我

Pointers RAM中的静态指针是什么?它们是如何存在的? 我已经通过教程学习C++游戏黑客一个星期或两个,我几乎都能得到它。 然而,有一件事一次又一次地困扰着我,pointers,memory,static,Pointers,Memory,Static,要自定义一个值(即玩家的健康状况),我们必须使用作弊引擎(或类似工具)搜索内存地址,并将该值设置为其他值。 每次启动程序时,这些内存地址明显不同,因为它不会总是使用RAM中的同一个位置 为了解决这个问题,人们会试图找到一个静态指针,指向包含该值的内存地址;指针如何是静态的,它们如何从RAM中保留静态地址?实际上,不是指向游戏变量的指针是静态的,而是变量地址相对于另一个数据地址的偏移量 如果你想“破解”的游戏总是将数据存储在同一个坚固的结构中,那么就有可能找到这些偏移量。当你知道偏移量时,当游戏开

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


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

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

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

编辑:


此外,每次运行程序时,程序很可能都会被赋予相同的虚拟地址空间,因此在实践中,每次运行程序时(进一步读取和),具有静态偏移量的变量看起来都具有相同的地址。

使用相同的关键字。如果您声明
静态播放器
那么可能
&player
始终是同一个虚拟地址。关键点是虚拟地址(与物理地址相反,用户程序几乎从不关心物理地址)。@H2CO3:或一个全局变量,也有静态存储持续时间。操作系统将虚拟地定位执行进程的可用RAM,因此,每次运行可执行文件时,具体的物理地址可能会改变。是的,我删除了
C++
标记。但我还是不太明白;作弊引擎清楚地显示了一个绿色的静态地址,即使我重新启动计算机,它也不会改变…@MarkusMeskanen:程序很可能在每次运行时加载到同一地址,所以这是一个正确的观察结果。进一步阅读:。每次运行程序时,程序很可能会加载到内存中的同一位置,除非在程序刚完成后立即加载相同的程序,否则这实际上是非常困难的unlikely@podkova,具有虚拟地址,这是真的。不过,我会重新措辞这句话。在内存中的相同位置加载可能意味着在物理内存中。例如,您可以说,每次运行程序时,很可能会给它们相同的虚拟地址空间。