首页
社区
课程
招聘
[原创]FPS游戏完美无后坐力漏洞逆向原理和实践
发表于: 2019-4-12 12:09 11067

[原创]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编辑 ,原因: 代码编辑
收藏
免费 2
支持
分享
最新回复 (10)
雪    币: 506
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
附加调试器检测,csol。
2019-4-12 12:40
1
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
3
1、这个无后座力并不完美,您只修改了客户端的弹道

CS的客户端后坐力是本地武器预测系统自己加上去的
然后服务器和客户端使用同一个随机种子以同样的算法同时计算弹道
如果你只修改客户端的任何参数
那么最终的结果就是把无后座意淫给自己看
你看到并且你以为你打中目标了,实际上你并没有
最终导致————你看到的弹孔的位置都是假的

本地弹道预测系统+画弹道代码如下
https://github.com/CKFDevPowered/CKF3Alpha/blob/deddd3c2d4c1532620dd01631eb1e733445d07bb/src_ckf/CaptionMod/event.cpp#L388

2、我觉得这并不算游戏的漏洞,恰巧这是Valve设计优秀的一个地方
最后于 2019-4-12 13:01 被hzqst编辑 ,原因:
2019-4-12 13:00
1
雪    币: 5836
活跃值: (1918)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
4
hzqst 1、这个无后座力并不完美,您只修改了客户端的弹道CS的客户端后坐力是本地武器预测系统自己加上去的然后服务器和客户端使用同一个随机种子以同样的算法同时计算弹道如果你只修改客户端的任何参数那么最终的结果就 ...
受教了!
2019-4-12 13:09
0
雪    币: 10967
活跃值: (2930)
能力值: ( LV5,RANK:71 )
在线值:
发帖
回帖
粉丝
5
表哥牛逼,理解深入。
2019-4-12 13:11
0
雪    币: 25
活跃值: (506)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
厉害了
2019-4-12 16:12
0
雪    币: 9941
活跃值: (2143)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
hzqst 1、这个无后座力并不完美,您只修改了客户端的弹道CS的客户端后坐力是本地武器预测系统自己加上去的然后服务器和客户端使用同一个随机种子以同样的算法同时计算弹道如果你只修改客户端的任何参数那么最终的结果就 ...
表哥厉害了, 表哥就是一个活体GITHUB库
所有类型的代码信手拈来 
2019-4-12 18:19
0
雪    币: 615
活跃值: (590)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
8
表哥厉害了,楼主也厉害的,
2019-4-12 21:36
0
雪    币: 4128
活跃值: (869)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
9
楼主威武
2019-4-13 13:20
0
雪    币: 160
活跃值: (209)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
讲真,我可能太菜了。分析很简单,确实菜鸟级的,如何定位数据点没讲,我觉得这应该是关键吧?比如吃鸡无后座力
2019-4-13 14:17
0
雪    币: 3836
活跃值: (4142)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
cnlife 讲真,我可能太菜了。分析很简单,确实菜鸟级的,如何定位数据点没讲,我觉得这应该是关键吧?比如吃鸡无后座力
并不是  最重要的 就是 找数据,但是他只字未提,这文章没啥用
2019-5-25 10:51
0
游客
登录 | 注册 方可回帖
返回
//