我试图在游戏中找到正确的健康偏移量,我的问题是我发现了14个地址,当我更改健康地址时,这些地址会发生变化。我已经尝试更改健康值和更新10次,并按下“下一次扫描”,但我不能得到任何低于这14个地址。
我是否需要对所有这14个地址进行指针扫描,或者有什么简单的方法可以检测出其中哪一个是正确的?
发布于 2019-01-06 04:29:14
您必须使用试错法并检查每个地址。逆向工程就是不断尝试和犯错。你在寻找一颗银弹,但并没有。
如果你已经知道了偏移量,你可以右键单击每个地址,然后“查找访问内容”,有时还可以“查找写入内容”,这样你就会得到一个涉及这些地址的指令列表,以及用于访问这些地址的偏移量。如果偏移量与您的“已知”偏移量不匹配,则忽略该地址。
如果变量是您作为客户端具有写访问权限的变量,例如您的名称字符串,则可以采用分而治之的方法。将所有地址添加到您的表中。选择其中的一半,按enter键并更改您的姓名。如果您在GUI中的姓名发生更改,则您的地址将在选择中,因此您需要删除另一半地址。然后再分而治之,这种技术在每一步消除了50%的地址。如果你的名字没有改变,那么删除你选择的地址,并在另一半的地址上执行相同的技术。
我要与您分享的最后一项技术是使用ReClass或其他工具,这些工具可以提供RTTI或运行时类型信息。当你“找到什么访问”的时候,你会得到播放器对象的地址,以及相对偏移量。将ReClass附加到进程中,输入播放器对象的地址。虚方法表指针(偏移量0x0)将与RTTI一起显示,它将告诉您类及其父类的名称。请注意,这只有在使用Visual Studio编译的二进制文件中才有可能,并且RTTI仍然嵌入其中。
总而言之,逆向工程不会立即取得成功。有一些技巧,但只有经验才能给你更快逆转所需的洞察力。随着你的进步,它会变得更容易。
https://stackoverflow.com/questions/54047556
复制相似问题