首先,这是个小白科普贴哦,不是大佬贴,还请各位大佬嘴下留情,引擎什么的小弟也不太会分析
进入主题,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
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |