1. 首页>
  2. 腾讯云代理

浅谈 FPS 游戏“自瞄”“锁头”外挂

腾讯云 2019年06月06日 浏览171

    腾讯云代理 腾讯云新闻 腾讯云代理 腾讯云直播申请 游戏上云

摘要:

 从游戏安全的角度我们来看看FPS游戏这种类型的游戏变态外挂总是层出不穷如飞天、遁地无后座力加速等等



那么为什么总是无法杜绝这一类变态功能呢?FPS游戏注重游戏体验游戏公司为了保证玩家的流畅性和打击感将许多重要数据放在本地客户端进行处理这就给了外挂开发者有机可乘


但是随着5G时代的到来会得到很大的缓解不过也要考虑到服务器压力


另外自瞄等算法类功能是永远无法完全避免的因为他可以单纯的是把人类的算法自动化精准化而已虽然看上去功能很BT,但实际上他并不是串改游戏代码或则利用什么BUG。



如果在关键处修改一些逻辑代码即可实现多样性的变态功能夸张的说只有你想不到没有做不到如下图变态功能



例如全屏爆头


一个完整的变态功能往往是由多个功能组合而成如果想要检测它不妨分析一下实现原理


不难看出该玩家明明打在空处却有怪物不断死亡被爆头应该修改了怪物受伤点相关的代码或者通过明文发包发送了打中怪物头部的封包



说到枪枪爆头很多人第一反应想到的是自动瞄准确实自动瞄准已经司空见惯几乎所有的fps类型游戏都不可避免受其毒害也是我们最熟悉的一种恶性外挂



然而观上面动态图的效果并非自动瞄准可以看出明明打在了空处却有怪物不断死亡明显修改了客户端逻辑代码那么今天就跟随笔者一起深入分析爆头实现的可能性

        



正文



熟悉fps游戏的朋友应该都知道击中部位”,比如击中腿部伤害略低击中胸部伤害略高而击中头部几乎就是满血秒杀


从逆向的角度出发不难想象游戏人物/怪物模型 在内存中存在着这样一些地址 。



头部受伤点地址

胸部受伤点地址

手部受伤点地址

腿部受伤点地址

等等



而这些属性很大的可能是人物/怪物的某个下标不妨在遍历出对象以后在对象下进行仔细的观察说不定有意外的惊喜



可能有的朋友会问知道这些有什么用?  fps特性在此不再重复不明原理的童鞋可以简单粗暴的把fps想象成一个单机游戏”,既然是单机游戏”,是不是数据都在玩家电脑上?  


假如将胸部受伤点强制锁定为头部是不是击中玩家胸部以后实际打中的是头部呢如果将所有的受伤点都遍历出来全部锁定为头部是不是可以实现枪枪爆头”?



明白了枪枪爆头原理那么这个全屏打怪又是什么原理真的是所谓的子弹追踪这么厉害吗其实原理非常简单人物/怪物模型每个受伤点都有一个区域”,而这个区域有着大小属性而击中模型这块区域决定着你打中的是哪里



头部受伤点地址

下标之一  范围:20


胸部受伤点地址

下标之一  范围:50


手部受伤点地址

下标之一  范围:10


腿部受伤点地址

下标之一  范围:30



知道了区域大小这个属性的存在以后是不是很容易就明白了头部区域改为特别大的数值列入原先20,将其改为200,2000甚至更高是不是不管指哪里都可打中目标配合前边分析的枪枪爆头原理即使修改的是其他区域大小”,也可实现所谓的全屏追踪爆头”。



那么应该寻找这个受伤点和区域大小cf打中人物模型之后无论是何部位准星都会变成红色以此为突破口



分析工作完毕接下来就是实践笔者一项信奉实践是唯一的真理。fps内存数据变化较快还是老套路先保存内存



OpenProcess ()  //取得游戏句柄

ZwSuspendProcess()  //通过句柄将其挂起保存内存状态

ZwResumeProcess()  //通过句柄恢复挂起还原内存状态

CloseHandle ()  //释放句柄



首先击中人物/怪物的一瞬间也就是准星变成红色的时候将游戏挂起保存内存状态搜索未知的初始值如下两图



阅读精彩原文

相关文章

在线客服
淘宝购买
腾讯云直播申请 title=
+成为腾讯云VIP客户 腾讯云直播申请 客服电话

15818558013

0755-33940501-803

0755-33940501-808