1672天 博客通用头像 Edwiin

本人熟练掌握linux,windows的开关机,擅长nfs,samba,ftp,dhcp,bind,apache,mail等各项服务的安装与卸载,精通shell,mysql,iptables,selinux等单词的拼写,了解虚拟化,存储,集群等相关汉字的书写。

今天我也来谈谈绝地求生的作弊与反作弊

发布于 5个月前 / 44 次围观 / 0 条评论 / 游戏相关 / Edwiin
本文最后更新于2020-4-21,已超过 1 个月没有更新,如果文章内容或图片资源失效,请【留言反馈】,我会及时处理,谢谢!

学习了2年多的逆向,调试过许多软件游戏,前段时间入坑绝地,看到盒友讨论最多的就是“外挂”,自己也想谈一点体会,我尽量说干货。因水平有限,不当之处还请盒友们批评指正。

一、外挂原理及应对方法

因为FPS追求快速响应而满足游戏体验感,因此许多关键数据都存放在本地,所以“外挂”程序可以通过逆向找到这些数据的内存地址(即基址和偏移),从而达到修改内存的目的。

并且开发人员在编写游戏程序的时候会将这些数据声明成结构体(struct),比如人物属,这是一个结构体,里面包含血量,坐标,速度等等,结构体的指针就是基址,血量,坐标等数据就可以通过基址加偏移很容易的得到,并且基址在程序编译完成的那一刻就已经是固定了,不管在哪台电脑上运行都不会变,只有再次编译才会发生变化,因此一旦游戏更新,“外挂”就得更新。找到了数据存放的地址,就可以通过对这个地址进行读写操作,来改变游戏内容,比如加速,锁血等等,透视原理也很简单,找到人物坐标的地址后,通过外部绘制(常见的d3d9,dx11,imgui等绘制)进行屏幕坐标转换,在游戏画面上画框或者骨骼达到透视效果,当然也有内部dll注入方式。

 

以上所说的都是在游戏没有保护的情况下很简单的实现的,但是目前绝大部分网络游戏包括绝地求生游戏保护非常多。

①驱动保护,这是反调试保护,可以让许多逆向软件无法正常附加游戏,也就无法找到数据,当然现在又专门的过游戏驱动保护,可以很轻松的调试游戏

②第三方反作弊,目前比较有名的第三方反作弊系统有BE,EAC,TP等,绝地求生使用的是BE反作弊系统,具有较强的主动攻击(当然跟国内的TP比起来就太弱了),BE可以有效防止未经授权的程序非法读取游戏内存并在关键代码段钩子处进行检测,因此,外挂都会使用驱动进入R0层进行数据读写,并与外挂程序进行通讯。BE也区分版本绝地求生使用的是普通版,逃离塔克夫使用的是BE高级定制版,因此绝地求生的BE还是挺容易绕过的;

③功能检测,这是游戏本身代码的检测,比如校验数据是否被改变,是否有第三方窗口覆盖等,由于绝地求生的BE比较容易绕过,因此目前大多数封禁为开发者封禁。

当然实际工作中,技术的对抗远不像上述所说的那么简单,技术的对抗也是永无止境的,作弊与反作弊之间的斗争或许会因为硬件的升级而消失,但在可遇见的将来,作弊手段并无法从技术上根本杜绝。

建议:①增加游戏成本,提高开挂成本;

②使用更高级别的第三方反作弊系统,比如EAC或TP;

③不定时远程更新游戏,提升数据加密手段。目前来看,蓝洞的前两点不容易做到,因为这会影响它的收益,定价98从经济学上来看,非常合理,吸引人的购买欲望,至于第三点,我想说,只要勤快一点,问题不大。

二、如何判别玩家使用了作弊软件

据我了解,目前绝地求生外挂种类还是比较多的,基本的是透视自瞄,变态一点的是追踪穿墙飞车等等,稍微轻一点的有热能透视,无后座,分屏雷达,压枪芯片等。追踪穿墙这些变态外挂很容易辨别,透视自瞄呢?如果别人演的好一点,怎么辨别呢?

①自瞄,最大特点就是跟枪,自瞄使用windows api函数mouse-event来实现,其跟枪十分精准,鼠标准心的移动是以屏幕像素点来算的,就像粘在敌人身上一样,所以除了一些职业选手或者确实是大神以外,一般人真的挺难做到的,哪怕是职业选手,也不可能每次都是一枪不漏,而自瞄就是可以保证每次都一枪不漏。

怎么办?游戏在枪械,人物数据段和调用CALL的代码段检测钩子,隐藏链表,对作弊者实施封禁,也可像现在一样加入人工检测,说是人工检测,其实是非正常人类操作检测,使用系统函数劫持鼠标,运动轨迹极有规律,如果发现大量极有规律的鼠标移动数据,基本可以判定为自瞄。

透视,包括绘制透视,分屏雷达,热能透视,除非他不演,演起来还真的挺难发现的,目前我不太清楚如何在游戏行为中发现纯透视玩家。

怎么办?绘制透视其实容易,扫描窗口句柄和特征或截图检测,对人物坐标实施多层加密。分屏雷达呢?在数据包里加入心跳包,并且是不规律的心跳包,发现有包被劫持,就判定有分屏操作。

③压枪芯片,这是大家讨论的最多的,压枪分为两种,一种是重定向驱动修改pak实现的无后座,特点非常明显,上下幅度极小,左右无偏移,无论何种倍镜,几乎都是一个点,当然无后座目前很难过检测,容易封号;另一种就是图色识别配合单片机的硬件压枪,常见的有飞易来,易键鼠等,压枪效果不是非常理想,但稳定。

对于压枪宏芯片怎么办?目前没有好办法,不是因为技术上的原因,是法律上的,国外的游戏公司虽说会扫描个人电脑进程,但并不彻底,可以跟企鹅厂一样,到内核层扫描,发现异常进程立即上传服务器

时间原因先写这么些,感兴趣的话有时间我再唠叨唠叨,这个游戏本身很好玩,开挂真的没意思。另外说一句,BE和开发者从来不会误封,也不会因为所谓的其他什么乱七八糟软件而封号(因为如果不是专门用来绝地求生软件,它是不会获取游戏进程和句柄的),只要你的账号一直是你在用,只要是出现BE或者开发者,你一定是开挂了或者用这个账号开过挂。

最后欢迎大家跟我组队,我很菜,但我很逗。

全站顶部广告位

  • 支付宝赞助图片
  • 微信赞助图片
  • QQ赞助图片
头像
描述: 还好有你,再见如初。

Press Space to start