12558网页游戏私服论坛

 找回密码
 立即注册
游戏开服表 申请开服
游戏名称 游戏描述 开服状态 游戏福利 运营商 游戏链接
攻城掠地-仿官 全新玩法,觉醒武将,觉醒技能 每周新区 经典复古版本,长久稳定 进入游戏
巅峰新版攻 攻城掠地公益服 攻城掠地SF 新兵种、新武将(兵种) 进入游戏
攻城掠地公 散人玩家的天堂 新开 进入游戏
改版攻城掠 上线即可国战PK 稳定新区 全新改版,功能强大 进入游戏
少年江山 高福利高爆率 刚开一秒 江湖水落潜蛟龙 进入游戏
太古封魔录 开服送10亿钻石 福利多多 不用充钱也可升级 进入游戏
神魔之道 签到送元宝 稳定开新区 送豪华签到奖励 进入游戏
神奇三国 统帅三军,招揽名将 免费玩新区 激情国战,征战四方 进入游戏
龙符 三日豪礼领到爽 天天开新区 助你征战无双 进入游戏
王者之师 免费领豪华奖励 免费玩新区 6元送6888元宝 进入游戏
三国霸业 战车-珍宝-觉醒-攻城掠地SF-全新玩法 免费玩新区 攻城掠地私服 进入游戏
手游私服盒子 各类免费游戏 0.1折送海量资源 各类手游私服 进入游戏
皇家MU2 《奇迹 2:传奇》韩国网禅公司《奇迹》正统续作。 3D锁视角Mmrpg 暗黑3+传奇+流放之路+奇迹 进入游戏
查看: 391|回复: 0

任鸟飞谈逆向----FPS自瞄锁头

[复制链接]

52

主题

52

帖子

114

积分

实习版主

Rank: 7Rank: 7Rank: 7

积分
114
发表于 2020-11-3 04:35:33 | 显示全部楼层 |阅读模式
从游戏安全的角度我们来看看FPS游戏,这种范例的游戏失常外挂总是层出不穷,如飞天、蹲地、无后座力、加速等等。

那么为什么总是“无法杜绝”这一类失常功能呢?FPS游戏注重游戏体验,游戏公司为了包管玩家的流通性和打击感,将很多重要数据放在本地客户端举行处置惩罚,这就给了外挂开辟者有机可乘。但是随着5G时代的到来,会得到很大的缓解,不过也要考虑到服务器压力。别的自瞄等算法类功能是永远无法完全制止的,因为他可以单纯的是把人类的算法自动化,精准化而已,固然看上去功能很BT,但实际上他并不是串改游戏代码或则利用什么BUG。

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

例如全屏爆头:

一个完整的失常功能,往往是由多个功能组合而成,假如想要检测它,不妨分析一下实现原理:



功能一:子弹加速,先前有文章详细讲授,有爱好的朋友可以翻看之前笔者的发文。功能二:无需换弹,先前有文章详细讲授,有爱好的朋友可以翻看之前笔者的发文。功能三:不难看出,该玩家明显打在空处,却有怪物不断死亡被爆头,应该修改了怪物受伤点相关的代码,或者通过明文发包发送了“打中怪物头部”的封包。
说到枪枪爆头,很多人第一反应想到的是自动瞄准。确实,自动瞄准已经司空见惯,几乎所有的fps范例游戏都不可制止受其毒害,也是我们最认识的一种恶性外挂。

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

正文:
认识fps游戏的朋友,应该都知道“击中部位”,比如击中腿部伤害略低,击中胸部伤害略高,而击中头部几乎就是满血秒杀。从逆向的角度出发,不难想象,游戏人物/怪物模型 在内存中存在着这样一些地址
例:头部受伤点地址胸部受伤点地址手部受伤点地址腿部受伤点地址等等。
而这些属性很大的大概是人物/怪物的某个下标,不妨在遍历出对象以后,在对象下举行仔细的观察,说不定故意外的惊喜。大概有的朋友会问,知道这些有什么用? fps特性在此不再重复,不明原理的童鞋可以简单粗暴的把fps想象成一个“单机游戏”,既然是“单机游戏”,是不是数据都在玩家电脑上?假如将胸部受伤点,强制锁定为头部,是不是击中玩家胸部以后,实际打中的是头部呢?假如将所有的受伤点都遍历出来,全部锁定为头部,是不是可以实现“枪枪爆头”?

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


头部受伤点地址下标之一范围:20
胸部受伤点地址
下标之一范围:50手部受伤点地址下标之一范围:10
腿部受伤点地址下标之一范围:30

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

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

分析工作完毕,接下来就是实践,笔者一项信奉实践是唯一的真理。fps内存数据变化较快,还是老套路,先保存内存,看过先前文章的童鞋此处自动忽略:

OpenProcess () //取得游戏句柄ZwSuspendProcess() //通过句柄将其挂起,保存内存状态。ZwResumeProcess() //通过句柄恢复挂起,还原内存状态。CloseHandle () //释放句柄

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

在此状态下将其挂起。



恢复内存状态,再次击中(别和上次同一个部位,如上次击中胸部,此时可以选择击中腿部)将其挂起。保存内存状态,搜刮变动的数值,由于需要搜刮多次,发起拿手枪或者威力较小的枪,或者直接在血量较多的模式下搜刮,否则容易将对象打死。

再次挂起,保存内存状态。

来回重复搜刮后,发现某个地址,在击中不同的部位下,数值都不同,且平时为0(空)。直接改这个地址是否可行?其实仔细想想,以这种方式搜刮出来的地址,只是击中瞬间读到的“受伤点”而已,修改他并没有什么效果,真正的受伤点地址,是不会因为被打中而发生变化(猜测:大概会因为人物移动 跳跃下蹲等发生变化),那我们这么幸苦的搜刮,有何意义? 得到了这个“受伤点相关”的值以后,是不是给他举行范围搜刮?先遍历出当前人物/怪物的对象,在对象地址一定范围内举行搜刮,效果一幕了然,搜刮出的地址就一个,不妨大胆猜测,是不是就是上面分析的“区域大小”呢?

如实行的怪物对象名称是“古代老鼠”,地址处于对象下标(值得注意,怪物和人物不处于同一遍历下) 0x354 处,原有值为 15(float),将其修改为200(float),发现在游戏中并没有实际效果,说明该地址也不是真正的“受伤点”,而用CE查看访问代码的时候,却发现在不绝的访问,证明与其他地方有关联。

那么尝试去去OD中下硬件写入断点,来到了一个类似于“数组”的地方,如下图,eax泉源于[esp+0x3954],esp泉源于一个基地址(防止他人恶意用途,基址不举行截图)。

且在该地址+4,+8等处,都是相似的(float)值,如下图:

那么再次尝试将其修改锁定为200(float),这次终于了有实际效果。(注意:截图中是以人物模型为例,怪物模型方法同上)

只要准星在该范例怪物附近(不用瞄准),都可打中怪物,且枪枪爆头,说明该处为怪物的“头部受伤区域”,而在+4的位置修改为200,也可打中怪物,不过失去了原有的爆头效果,猜测大概为胸部或腿部“受伤区域”。而一个图内,不大概只有一种怪物,也会有BOSS和其他一些小怪,想要实现枪枪爆头,必须每种怪物都修改“受伤区域大小”,仔细观察该地址附近,寻找是否有(float)值(从正向角度出发,一般坐标范例的,以浮点可以表达的更加精准),都举行一个尝试性的修改,如地址附近 [基址]+0x35690 的位置,发现的类似的浮点,修改后发现为“滚球”的怪物头部受伤点区域,而要将每一种怪物都找出来,就需要一定的时间和耐烦了。

多观察附近地址,说不定故意外惊喜。单浮点十六进制多以0x4开头


小结:该游戏将模型“受伤点区域大小”这一属性,存放到了相同的遍历下,通过ID在某处举行了一个关联,而不是在对象之下。


游戏安全防护和反外挂发起:1.对容易被串改的代码举行CRC验证以及CRC的CRC。
2.除了本地加一定的检测(CRC之类的)之外,服务器可以判定爆头率和子弹射速,虽说fps实时检测会影响玩家体验,但却可以举行数据回扫,如玩家打完一局之后,举行该对局数据回扫,判定其战绩(检测爆头),以及流量监控(加速类功能会大量给服务器发包)。
3.检测鼠标轨迹和鼠标速度,没有哪个失常家伙是可以每次都瞬间直线滑动鼠标举行精准爆头的。
4.通过玩家的举报举行精准确认。


本文到此竣事。下次同笔者一起分析FPS最大的毒瘤——透视自瞄原理。


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

本帖子中包含更多资源

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

x
楼主热帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 23:29 , Processed in 0.078125 second(s), 32 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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