我目前正在逆转 Stardew Valley,我一直在尝试追踪指向黄金和能源等值的静态基地址的指针。问题是我找不到任何静态基地址。似乎无论我走哪条路,我最终都会收到无法访问的指令。我在网上搜索,有人说了同样的话,并提到它是用 .NET 编写的托管代码。我的问题是:游戏是否可能没有这些值的静态基地址,如果是这样,如果没有静态地址,我将如何自动查找这些值?
是否所有游戏都具有黄金和能源等值的静态基地址?
逆向工程
调试
记忆
作弊引擎
2021-06-21 15:17:33
1个回答
当开发者使用全局或静态变量时,几乎可以实现静态地址。
虽然这在过去有点流行,但今天它非常罕见,也被认为是一种不好的做法。此外,像 ASLR 这样的功能用于防止观察者通过在随机地址重新定位图像来利用已知的静态变量(由于与此问题无关,因此省略了详细信息)。
井设计软件最大限度地减少了全局变量的使用,但它们不能完全删除。某些软件可能在全局变量中引用了单例,而其他软件可能已将这些引用从一个函数传递到另一个函数。
处理。NET 二进制文件简化了问题,但不会改变您的数据每次都可以分配到不同地址的事实。
要找到您需要的信息,请在您主动执行操作(例如,卖出、交易或电子收款)时调试游戏,并尝试确定发生了哪些变化。如果假设没有反调试措施,您将看到数据被操纵的位置。从那里您可以追溯数据的创建位置,并追溯到根分配器。在这一点上,您有很多机会,从能够在运行时跟踪分配链,到唤醒特定类型的单个实例的托管堆。