查找游戏的动画功能


1

我目前正在从2001年开始为一款旧游戏进行小型多人游戏修改。现在,我可以通过X,Y和Z坐标远程移动玩家扭转发现。但我不知道如何去玩家的动画功能。我如何从这一点开始?在反汇编中,我是否应该搜索类似于设置的状态(PlayerRun,PlayerTurnLeft等)的东西,还是应该尝试追溯coord的设置?

我有点卡住,不知道如何开始在这一点上。我正在与CheatEngine和OllyDBG合作。

编辑: 我终于找到了内存中的动画状态值与作弊引擎。将其改为“跳跃”动画效果很好,但不适用于“动画”动画。游戏可能会检查用户是否按下了向前移动玩家的按键。无论如何,我看了一下编写动画状态的反汇编。我玩过一些跳跃和比较,在某些情况下,动画不会显示,这意味着我基本上处于正确的功能。在这一点上,我有点卡住了,因为我不知道如何找出正确的功能(有多个)及其参数。

3

您是否正在寻找客户端本地修改的函数,或者您是否正在寻找一个处理传出坐标数据以远程移动播放器的函数?我将假设前者为这个答案。我也将坚持100%作弊引擎。这从任何方面来看都不全面,但是从动态分析的角度来看,它应该让你朝着正确的方向前进。

您发现的坐标数据可能通过您感兴趣的某个点的函数提供,但问题是当您的坐标数据通过指令传递时,潜在的子程序有多深。因此,您可以先查看哪些写入了您找到的三个坐标地址中的任何一个。

您可能有多个结果,并且在那里,任何给定的结果都可能是共享指令,因此请通过右键单击指令并选择查看指令写入的地址来检查该结果。如果在测试后只有一个地址弹出,那么你很好。

一旦在反汇编器中看到这条指令,就会出现某种可能与坐标数据相关的例程。它直接是你感兴趣的功能吗?这是你必须花费一些时间才能找到答案的地方。

几件事情,可以帮助你前进的道路如下:

  1. 枚举的DLL:在内存查看器窗口中,单击查看 - >枚举DLL和符号。 CE可以收集到的与功能名称有关的任何信息都将填充到那里,因此您可以搜索可能感兴趣的名称。可以查看演示此视频的视频here

  2. 剖析代码:在内存查看器窗口中,单击工具 - >剖析代码。这将会给你很多的附加信息如适用你扭转,就像它调用的调用程序,您可以在发现自己等

您还可以利用CE的中断/跟踪以查找参数传递到功能。我喜欢从被调用的函数/方法的粗略视图开始,导致我正在使用的函数/方法。为此,请在“中断和跟踪”窗口中选中“单步执行而不是单步执行”框。我也想检查“保存堆栈快照”,所以我可能会挑出一些东西。

最后,您可能需要考虑使用Ultimap或Ultimap 2,它位于Tools下的Memory Viewer窗口中。它们允许您记录功能呼叫,并过滤掉所有您认为不是您感兴趣的功能。有关讨论Ultimap的两个视频可以被查看herehere。如果你的目标是32位的,那么你可以使用一个叫做CDA: Code Dynamic Analysis(视频教程here)做同样的事情Ultimap一个真棒小工具,但以不同的方式(时间轴为主)和不添加头痛Ultimap需要DBVM才能工作(Ultimap 2不需要DBVM,但确实需要合适的CPU,因为它利用了Intel Processor Trace)。

+1

太棒了,谢谢你的详细解答!那正是我期待的!对你的问题;我想添加多人游戏的游戏只有单人游戏,因此我需要自己完全找到动画功能。我已经破解了游戏的所有文件格式,如模型,纹理和动画文件。从动画我知道,有关键帧动画存在。 28 12月. 172017-12-28 16:40:23