我一直在通过教程学习C ++游戏黑客一两个星期,我几乎得到了所有。 然而,有一件事一直困扰着我。
要自定义值(例如,玩家的健康状况),我们必须使用Cheat Engine(或类似物)搜索内存地址,并将值设置为其他值。 每次启动程序时,这些内存地址明显不同,因为它不会总是在RAM中使用相同的位置。
要解决这个问题,人们会尝试在包含该值的内存地址中找到静态指针;如何指针静态,如何从RAM中保留静态地址?
答案 0 :(得分:3)
实际上,不是指向游戏变量的指针是静态的,而是变量地址的偏移,指的是另一个数据的地址。
如果您想要“破解”的游戏始终以相同的实体结构存储数据,则可以找到这些偏移量。当您知道偏移时,那么您在游戏开始时唯一需要做的就是找到偏移引用的地址,而不是执行多次扫描 - 每个变量一次。
修改强>
另外,程序很可能在每次运行时都被赋予相同的虚拟地址空间,因此在实践中,每次运行程序时,具有静态偏移量的变量看起来都具有相同的地址(进一步阅读{{ 3}}和here)。