在游戏中寻找某个功能(TS4)

逆向工程 ollydbg
2021-06-24 00:08:32

我试图找到一个功能,当我购买家具并单击该地点时,可以将家具放在地上。

这就是我目前试图解决的方法。

  1. 用作弊引擎找到钱的地址
  2. 查看哪些区域写入此地址
  3. 回溯函数调用并设置断点

我设法回溯了足够多的调用,以至于断点不再通过卖回物品而触发,而只是将它放在地上。通过查看参数,我确定这仍然不是我正在寻找的功能,因为参数不会根据我放在地上的物品而改变。

我试图回溯更多,但后来我得到了一个似乎是主游戏循环(?)的一部分的函数,因为它一直在运行。

有没有更好的方法来实现这一点,或者只是像我所做的那样进行盲目测试和回溯?我通常通过使用作弊引擎搜索地址然后切换到 ollydbg 进行跟踪来工作。

我也一直在尝试找到按下某些按钮时触发的功能,但很难找到一个切入点,我应该如何尝试继续?

1个回答

一些提示/想法在流动时,抱歉弄乱了。也许我稍后会解决它。

一般提示:

如果您正在尝试更高级的任何东西然后更改值,恕我直言,CheatEngine(和调试)可能不是此任务的最佳工具。他们将在提供额外信息和验证您的假设(如果做得对,您将拥有大量的假设)方面发挥出色,但不能作为主要工具。一旦你找到了一些相关的功能,你最好真正去完全颠倒游戏的这些部分。也就是说,像地狱一样启动 IDA 和文档。

我首先为包含钱的对象创建一个结构,尝试花一些时间寻找该结构的其他低悬挂成员及其大小(仅由您看到的成员假设,并在需要时增加)。每当您看到某个成员时,您不知道它的用途是什么,请尽可能给它提供最好的信息名称(如果您不介意,则为 mFunc405020)或相关评论。当您第三次遇到成员时,您会惊讶于命名成员是多么容易。

方法也是如此。在你找到一些成员之后,就像你为成员所做的那样去寻找方法。从构造函数和继承树开始,它们提供了很多信息并且相对容易找到。绘制继承图并重命名函数并相应地创建结构。使用构造函数查找结构的更多实例,它们会为您提供更多信息。

如果/当您注意到您正在反转错误的结构时,请不要害怕放弃它以获得您发现的更有趣的结构,或者去寻找另一个结构。

找对象的具体提示:

由于您正在寻找创建特定对象(它可能有自己的类),您需要非常频繁地切换对象并使用调试/作弊引擎来验证您找到了相关的构造函数。

我什至会花更少的时间在成员/方法上,而将大部分时间花在构造函数和析构函数上。当您映射继承树时,您可以轻松找到专门为您的对象调用的构造函数。

编辑:对于 Daniel Filipe 题为“如何使用 Cheat Engine 查找实体/敌人数组指针”的问题,您可能还会发现我的旧答案很有帮助。