所以我正在尝试为游戏创建一个目标机器人,但是我在这里遇到了一些麻烦,我怎么才能找到玩家群呢?如果我找到球员基地,然后我可以得到所有需要的信息,如X,Y位置,当前货币,弹药,健康,装甲等。我使用的是CheatEngine 6.4。
发布于 2017-12-04 04:07:16
术语"PlayerBase“是指播放器对象的动态地址。像健康,护甲等变量。通常是player类的成员变量。像ammo这样的变量也可以是武器类的成员变量,所以不是所有的偏移量都是相对于玩家对象的地址的。但是您经常会在player对象中看到指向当前武器对象的指针。
在创建游戏时,编译器使用定义的类创建指令,通过地址和相对偏移量访问变量。您的目标是在访问这些变量时复制游戏逻辑。
要查找假定是player类成员的变量,请在cheat engine中扫描它,然后在变量的地址上使用"Find What Accesses“。这将列出访问该变量的所有指令。希望你能看到类似"mov eax ebx+14c“的东西。在本例中,ebx中保存的地址是player对象的地址,0x14c是health变量的偏移量。这通常是一个动态地址,每次运行游戏时都会有所不同。接下来,您需要找到指向此地址的指针,该指针将始终指向正确的地址。要做到这一点,您可以在代码中向后跟踪,希望看到ebx的值是从哪里获得的,或者在当前函数中,或者在调用堆栈中的前一个函数中。您将找到一个静态地址,它是一个全局变量,或者是一个可以在运行时计算的相对于模块(如DLL或exe)的基地址的地址。
我通常在每个游戏中都做同样的事情,并将其简化为:找到一个良好的健康指针并删除最后一个偏移量。这是一个指向"playerbase“的指针
发布于 2016-01-21 16:32:42
查找Y轴,搜索未知初始值,浮点型。走上梯子,寻找增加的价值。一直往下走,减少数值,一直这样做,直到找到你的Y地址。右击并按下“Memory View for this value”。选择新的数据结构。现在你应该有了结构,你已经有了一个内存地址数组,键入Y地址- 8,现在你应该得到所有的XYZ和地址,键入现在在顶部的x地址,然后"-“4.顶部的地址现在是你的PlayerBase。当你现在需要XYZ时,你取"PlayerBase + XOffset",因为你取了X - 4,所以X将是Base前面4个字节。Z将是X前面4个字节,所以PlayerBase + 8,Y将是"+“0x0C。Cheat Engine会显示地址后面的偏移量。
https://stackoverflow.com/questions/34090799
复制相似问题