游戏辅助 (一) | FPS游戏查找人物坐标

  • 游戏辅助
  • 2020-07-28 22:49:05
  • 浏览 84
简介使用一款经典FPS游戏,学习游戏分析的过程,边看教程边做,很多地方也不是很理解,慢慢学习吧~

在FPS游戏中,每个人物都有在3D世界中的坐标,称为世界坐标,这些坐标一般都是以浮点数存储的,所以不断改变这些数值,再进行内存扫描就可以找到,可以通过不断改变 z 轴的数值来获取 z 轴的数据,而游戏的坐标一般是连续存放的,z 轴附近的数据就是 x y 轴的。

本人坐标

如下图所示,先找到一个有高度差距的地方。

单浮点未知的初始值搜索一次游戏进程数据。

搜索得出的数据会非常多,然后改变游戏里人物所处位置的高度,使得所在位置高度变大。

再次扫描增加的数值

搜索得出的数据依然很多,继续改变游戏里人物所处位置的高度,所得所在位置高度变小。

再次扫描减少的数值

依次重复上述步骤,直到搜索到的数据比较少,或者怎么改变数据搜索出来的数据都不再变少了。

查找基址

经过不断的搜索,得到的数据已经在200多条且不会继续下降了,将这些数据添加到地址列表。

先选中一些数据锁定,地址列表上越靠下的数据,越可能是正确的地址,看看游戏人物是否还可以改变高度(跳一下就知道了)。

锁定了这些数据,还能跳,说明人物坐标不在这些地址里,右键删除记录。继续锁定其他地址数据,直到发现不能跳了。经过筛选,最终得出一个地址锁定了会影响人物的高度变化。但这个地址不是基址(CE里为绿色的地址),对该地址右键找出是什么改写了该地址

在弹出的附加进程窗口中显示一条汇编指令

汇编 fstp 指令是将寄存器 esi 加上 288 的偏移这个地址的数据出栈,双击该指令查看。

寄存器 ESI=33EB3160,搜索一下 33EB3160 看看是哪个地址存放了这个值。

搜索出现一些绿色的地址,显示为模块+偏移的格式。

验证是否为正确的基址,双击该地址加入到地址列表,在地址列表双击该地址,添加上面找到的偏移值。

重启游戏,重新附加进程,刚才找到的基址指向的数值依旧正确,确定该地址为正确的基址。

查找其他坐标

依照上述方法找到坐标 y 发现坐标 y 的偏移为 284 ,推理出 坐标 x 的坐标应该为偏移 280,至此,人物的 xyz 坐标地址已经得出。

文章评论