【游戏逆向】FPS游戏玩家对象数据分析

目标(Objective)

Ÿ Health

Ÿ Rifle Ammo

Ÿ Pistol Ammo

Ÿ Player Pointer

0x01 玩家健康

查找玩家健康值,玩家健康值是100,但是我们并不知道数值类型,我们可以使用精确搜索方式搜索100-所有类型
【游戏逆向】FPS游戏玩家对象数据分析_第1张图片
CE搜索
【游戏逆向】FPS游戏玩家对象数据分析_第2张图片
结果很多,我们可以使用手雷来减少血量
【游戏逆向】FPS游戏玩家对象数据分析_第3张图片
我们会得到两个结果

【游戏逆向】FPS游戏玩家对象数据分析_第4张图片
我们可以去尝试改变数值,最终发现一个是我们的客户端健康值,一个是服务器健康值,我们分析关注的重点在客户端这边,这是单机模式下修改服务端的可以达到无敌的效果但并不是分析的重点。
【游戏逆向】FPS游戏玩家对象数据分析_第5张图片
右键改地址选择寻找是什么改写了该地址,进入游戏继续让手雷改变健康值。
【游戏逆向】FPS游戏玩家对象数据分析_第6张图片
让我们记住这个地址,OD附加游戏然后转到该地址(很不幸游戏中途奔溃了,我们从头来了一遍,所以后面地址肯定不同了)
【游戏逆向】FPS游戏玩家对象数据分析_第7张图片
0x03 基地址与周边数据分析

现在我们开始寻找基地址,这样在下次打开游戏就不怕存放玩家健康值的地址改变啦。

[edx+0xF8]就是玩家健康值地址,edx来源于eax
【游戏逆向】FPS游戏玩家对象数据分析_第8张图片
eax来源于上面的call
【游戏逆向】FPS游戏玩家对象数据分析_第9张图片
call内运行逻辑还是比较多的,我们F2断点调试一下运行逻辑
【游戏逆向】FPS游戏玩家对象数据分析_第10张图片
根据调试分析,eax来源于[0x50F4F4]
【游戏逆向】FPS游戏玩家对象数据分析_第11张图片
最终表达式如下

[0x50F4F4+0xF8]

打开CE数据结构分析,我们填入0x50F4F4,第一个就很像我们玩家对象了
【游戏逆向】FPS游戏玩家对象数据分析_第12张图片
我们添加几个BOT
【游戏逆向】FPS游戏玩家对象数据分析_第13张图片
刚刚好七个对象指针
【游戏逆向】FPS游戏玩家对象数据分析_第14张图片
初步分析可能是地图玩家坐标
【游戏逆向】FPS游戏玩家对象数据分析_第15张图片
偏移150步枪弹药
【游戏逆向】FPS游戏玩家对象数据分析_第16张图片
偏移13C手枪弹药
【游戏逆向】FPS游戏玩家对象数据分析_第17张图片
偏移128步枪备用弹药

偏移114手枪备用弹药

到此整个数据分析差不多了,基本上都在附近。

你可能感兴趣的:(游戏)