12558网页游戏私服论坛

 找回密码
 立即注册
游戏开服表 申请开服
游戏名称 游戏描述 开服状态 游戏福利 运营商 游戏链接
攻城掠地-仿官 全新玩法,觉醒武将,觉醒技能 每周新区 经典复古版本,长久稳定 进入游戏
巅峰新版攻 攻城掠地公益服 攻城掠地SF 新兵种、新武将(兵种) 进入游戏
攻城掠地公 散人玩家的天堂 新开 进入游戏
改版攻城掠 上线即可国战PK 稳定新区 全新改版,功能强大 进入游戏
少年江山 高福利高爆率 刚开一秒 江湖水落潜蛟龙 进入游戏
太古封魔录 开服送10亿钻石 福利多多 不用充钱也可升级 进入游戏
神魔之道 签到送元宝 稳定开新区 送豪华签到奖励 进入游戏
神奇三国 统帅三军,招揽名将 免费玩新区 激情国战,征战四方 进入游戏
龙符 三日豪礼领到爽 天天开新区 助你征战无双 进入游戏
王者之师 免费领豪华奖励 免费玩新区 6元送6888元宝 进入游戏
查看: 224|回复: 0

FPS游戏【完美无后坐力】逆向原理和实践

[复制链接]
发表于 2020-5-11 10:20:22 | 显示全部楼层 |阅读模式
首先,这是个小白科普贴哦,不是大佬贴,还请各位大佬嘴下留情,引擎什么的小弟也不太会分析

进入主题,FPS的后坐力的逆向.


众所周知呢,FPS游戏就是用来“打炮”的,所以右手持枪,压“枪”很重要,后坐力稍微控制不好就“射”偏了。


那么,我们在逆向过程中应该如何去逆向后坐力的数据呢,首先,我们要知道后坐力的变化规律。


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


后坐力的规律:


静止状态,不开枪的时候,后坐力值为0:





按住鼠标左键开枪后可观察到后坐力的数据一直增加,迅速截图如下:




传统无后坐力方法:锁定不开枪时候的数值0,但是锁定后发现无法实现完美的无后坐力,枪口的抖动程度和子弹射出的偏差依然很大.因此,我们判断,后坐力的数据,应该还有其他的地址或者函数往该地址进行写入,
所以我们在该地址,下硬件写入断点




通过观察,我们发现,存在ebp不停的往后坐力地址写入数据:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
先使用第一把步枪枪械断下的代码段:



[Asm] 纯文本查看 复制代码1D8BBAF9 |. 8BAE 00010000 mov ebp, dword ptr [esi+100] ; esi+100 1D8BBAFF |. C686 EC000000>mov byte ptr [esi+EC], 1 1D8BBB06 |. 45 inc ebp 1D8BBB07 |. 8BC5 mov eax, ebp 1D8BBB09 |. 89AE 00010000 mov dword ptr [esi+100], ebp ; 硬件写入断下关键代码处 1D8BBB0F |. 8BC8 mov ecx, eax 1D8BBB11 |. 0FAFC8 imul ecx, eax 1D8BBB14 |. 0FAFC8 imul ecx, eax 1D8BBB17 |. B8 1F85EB51 mov eax, 51EB851F


防止例外,又使用另外一把步枪枪械断下的代码段:


[Asm] 纯文本查看 复制代码1D8BD04E |. 8BAE 00010000 mov ebp, dword ptr [esi+100] 1D8BD054 |. C686 EC000000>mov byte ptr [esi+EC], 1 1D8BD05B |. 45 inc ebp 1D8BD05C |. 8BCD mov ecx, ebp 1D8BD05E |. 89AE 00010000 mov dword ptr [esi+100], ebp


发现有部分汇编指令是不同的,我们可以用?? 代替不同的字节,其他的字节照抄,构造无后坐力关键代码特征码:
特征码定位到0x1D8BD04E
特征码:


[Asm] 纯文本查看 复制代码        8B AE 00 01 00 00 C6 86 EC 00 00 00 ?? ??

CE搜素特征码找到后,我们需要进行修改,通过分析,我们只需要把不用的nop调就可以了,然后让ebp的值为0,ebp为后坐力数据
修改方法:
[Asm] 纯文本查看 复制代码        BD 00 00 00 00 90 90 90 90 90 90 90 90 90

通过测试,大部分枪械都实现了无后坐力,子弹完美汇聚在一个点上:




但是通过测试发现少部分枪械后坐力值仍然在改变,说明某部分枪械的后坐力写入代码来源自别的地方
在这里,不再继续寻找,有兴趣的朋友可以继续搞一下
另外,通过观察,某些枪械的后坐力不单单决定于0x100的指针在指针0xB8和0xBC位置,我们依然寻找到了一些可以影响后坐力的数据,甚至可以极大的改变后坐力和射速在这里没有继续深入分析,分析方法大致如此,就不做赘述了
望大家提出宝贵意见和建议!

另外补充,本后坐力是基于本地数据实现的:
只修改了客户端的弹道

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

来源:http://www.12558.net
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
楼主热帖
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|12558网页游戏私服论坛 |网站地图

GMT+8, 2024-5-18 19:14 , Processed in 0.274414 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表