0

我试图在游戏中找到正确的健康补偿,我的问题是我找到了 14 个地址,当我更改我的健康地址时这些地址会发生变化。我已经尝试更改健康值并更新 10 次并推送“下一次扫描”,但我无法获得低于这 14 个地址的任何值。

我是否需要对所有这 14 个地址进行指针扫描,或者是否有任何简单的方法来检测其中哪一个是正确的?

在此处输入图像描述

4

1 回答 1

2

您必须使用反复试验并检查每个地址。逆向工程就是反复试验。您正在寻找灵丹妙药,但没有。

如果您已经知道偏移量,则可以右键单击每个地址并执行“查找访问内容”,有时还执行“查找写入内容”,您将获得涉及这些地址的指令列表以及用于到达那里的偏移量。如果偏移量与您的“已知”偏移量不匹配,则忽略该地址。

如果变量是您作为客户端具有写入权限的变量,例如您的姓名字符串,您可以采用分而治之的方法。将所有地址添加到您的表中。选择其中的一半,按 Enter 并更改您的姓名。如果您在 GUI 中的姓名发生更改,则您的地址在选择中,因此您将删除另一半。然后你再次分而治之,这种技术在每一步消除了 50% 的地址。如果您的姓名没有更改,则删除您选择的姓名,并对另一半地址执行相同的技术。

我将与您分享的最后一个技术是使用 ReClass 或其他工具,它可以为您提供 RTTI 或运行时类型信息。当您“查找访问内容”时,您将获得播放器对象的地址和相对偏移量。将 ReClass 附加到进程,输入播放器对象的地址。虚拟方法表指针(偏移量 0x0)将与 RTTI 一起显示,它会告诉您类的名称及其父类。请注意,这仅适用于使用 Visual Studio 编译且仍嵌入 RTTI 的二进制文件。

总之,逆向工程没有立竿见影的成功。有技巧,但只有经验才能让您获得更快逆转所需的洞察力。随着你的进步,它会变得更容易。

于 2019-01-05T20:29:13.680 回答