吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 15013|回复: 60

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

  [复制链接]
机智聪明的小迪 发表于 2019-4-13 10:12
首先,这是个小白科普贴哦,不是大佬贴,还请各位大佬嘴下留情,引擎什么的小弟也不太会分析

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


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


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


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


后坐力的规律:


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



1.png

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


2.png

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



通过观察,我们发现,存在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


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

但是通过测试发现少部分枪械后坐力值仍然在改变,说明某部分枪械的后坐力写入代码来源自别的地方
在这里,不再继续寻找,有兴趣的朋友可以继续搞一下
另外,通过观察,某些枪械的后坐力不单单决定于0x100的指针
8.png

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

9.png


在这里没有继续深入分析,分析方法大致如此,就不做赘述了
望大家提出宝贵意见和建议!

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

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

免费评分

参与人数 21威望 +1 吾爱币 +32 热心值 +18 收起 理由
沐春 + 1 + 1 热心回复!
zyh666 + 1 楼下那个1天66,一打就封号的秀的一批
汝甚屌令尊知否 + 1 + 1 用心讨论,共获提升!
caowod + 1 可以的
Zafkiel + 1 + 1 用心讨论,共获提升!
lsz7575 + 1 + 1 用心讨论,共获提升!
a42010316 + 1 + 1 这是不是传说中66块一天刚打开就封号的那种
langer123 + 1 + 1 我很赞同!
Fanzy峰 + 1 + 1 谢谢@Thanks!
HackerWen + 1 + 1 谢谢@Thanks!
言为心声 + 1 我很赞同!
chenhaiping1435 + 1 + 1 用心讨论,共获提升!
willJ + 1 + 12 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
测可2335 + 1 + 1 热心回复!
星猫 + 1 谢谢@Thanks!
DDOSS + 1 + 1 用心讨论,共获提升!
明月照何处 + 1 + 1 请问射偏了是什么意义呀
吾i南 + 1 + 1 谢谢@Thanks!
Honey丶Linux + 2 + 1 我很赞同!
多幸运遇见baby + 1 + 1 用心讨论,共获提升!
52loli + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

  • · 好帖|主题: 109, 订阅: 10

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

L15263458908 发表于 2019-9-10 23:27
对于CS1.6, 想写一个地爆天星的功能,把敌人都升到天上,准备CTF战队逆向方向纳新的时候用,坐标啥的都分析完了,目前自己也能实现瞬移,无限子弹啥的,,,但是不会区分机器人是敌人还是友军,请问大佬当时研究的时候有没有研究这一块。
头像被屏蔽
SGmod 发表于 2019-4-14 14:00
13925622740 发表于 2019-4-13 10:22
charming8088 发表于 2019-4-13 10:27

厉害厉害
yzzsdz 发表于 2019-4-13 10:27
高手果然强
爱啦花花牛 发表于 2019-4-13 10:33
这个厉害了,提高了游戏体验,
kavin666 发表于 2019-4-13 10:35
高手果然强
道凡尘 发表于 2019-4-13 10:36
走走看看
多幸运遇见baby 发表于 2019-4-13 10:44
热心回复!
吾i南 发表于 2019-4-13 11:15
不错,学习了
张晟邦 发表于 2019-4-13 11:24
确实有用   
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:禁止回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2019-9-22 20:18

Powered by Discuz!

© 2001-2017 Comsenz Inc.

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