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