-
-
[原创]FPS游戏完美无后坐力漏洞逆向原理和实践
-
发表于:
2019-4-12 12:09
11067
-
首先,这是个小白科普贴哦,不是大佬贴,还请各位大佬嘴下留情,引擎什么的小弟也不太会分析
静止状态,不开枪的时候,后坐力值为0:
按住鼠标左键开枪后可观察到后坐力的数据一直增加,迅速截图如下:
传统无后坐力方法:
锁定不开枪时候的数值0,但是锁定后发现无法实现完美的无后坐力,枪口的抖动程度和子弹射出的偏差依然很大.
因此,我们判断,后坐力的数据,应该还有其他的地址或者函数往该地址进行写入,
所以我们在该地址,下硬件写入断点:
通过观察,我们发现,存在ebp不停的往后坐力地址写入数据:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
先使用第一把步枪枪械断下的代码段:
防止例外,又使用另外一把步枪枪械断下的代码段:
发现有部分汇编指令是不同的,我们可以用?? 代替不同的字节,其他的字节照抄,构造无后坐力关键代码特征码:
特征码定位到0x1D8BD04E
特征码:
CE搜素特征码找到后,我们需要进行修改,通过分析,我们只需要把不用的nop调就可以了,然后让ebp的值为0,ebp为后坐力数据
修改方法:
通过测试,大部分枪械都实现了无后坐力,子弹完美汇聚在一个点上:
但是通过测试发现少部分枪械后坐力值仍然在改变,说明某部分枪械的后坐力写入代码来源自别的地方
在这里,不再继续寻找,有兴趣的朋友可以继续搞一下
另外,通过观察,某些枪械的后坐力不单单决定于0x100的指针
在指针0xB8和0xBC位置,我们依然寻找到了一些可以影响后坐力的数据,甚至可以极大的改变后坐力和射速
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2019-4-12 12:16
被小迪xiaodi编辑
,原因: 代码编辑