FPS游戏->无后坐力功能分析

游戏后坐力的设计方法:

 

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

 

FPS游戏->无后坐力功能分析_第1张图片

 

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

 

FPS游戏->无后坐力功能分析_第2张图片

 

 

传统无后坐力方法:

 

锁定不开枪时候的数值0,但是锁定后发现无法实现完美的无后坐力,枪口的抖动程度和子弹射出的偏差依然很大

 

因此,我们判断,后坐力的数据,应该还有其他的地址或者函数往该地址进行写入,

 

所以我们在该地址,下硬件写入断点:

 

FPS游戏->无后坐力功能分析_第3张图片

 

 

通过观察,我们发现,存在ebp不停的往后坐力地址写入数据:

 

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

 

1D8BBAF9 |. 8BAE 00010000 mov ebp, dword ptr [esi+100] ; esi+100

 

特征码定位到该处:

 

8B AE 00 01 00 00 C6 86 EC 00 00 00 ?? ??

 

寻找到数据修改值:

 

修改BD 00 00 00 00 90 90 90 90 90 90 90 90 90

 

 

使用第一把枪械断下的代码段:

 

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

 

 

使用另外一把枪械断下的代码段:

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

 

 

 

 

 

 

通过测试,大部分枪械都实现了无后坐力,少部分枪械后坐力值仍然在改变,说明某部分枪械的后坐力写入代码来源自别的地方

 

 

在这里,不再继续寻找,有兴趣的朋友可以继续搞一下,

 

另外,通过观察,某些枪械的后坐力不单单决定于0x100的指针

FPS游戏->无后坐力功能分析_第4张图片

在指针0xB8和0xBC位置,我们依然寻找到了一些可以影响后坐力的数据,甚至可以极大的改变后坐力和射速

 

在这里没有继续深入分析,分析方法大致如此,就不做赘述了

 

FPS游戏->无后坐力功能分析_第5张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(FPS游戏->无后坐力功能分析)