文档章节

游戏中有哪些作弊方法?

wier
 wier
发布于 2017/08/17 11:28
字数 1894
阅读 2439
收藏 44
点赞 3
评论 9

对于游戏开发者来说,外挂是深通恶绝的,它一方面破坏了游戏的公平性,造成大量玩家流失,另一反面又加快了游戏节奏和资源产出,让开发商利益受损。对于这种让玩家和开发商都不讨好的行为,一定要坚决打击。

但现实情况是,外挂很难彻底杜绝,特别是你的游戏火爆的时候,会有一大批外挂盯着你的游戏漏洞,让你防不胜防,你唯一能做的只能去不断的完善,做好安全预防和检测,和它做攻防斗争,或者从设计之初,就做好主要安全构筑,提升游戏的防外挂能力。

下面我们介绍几种常见的外挂形式,给一些简单的建议,供大家一起探讨。本篇不涉及具体的操作和作弊工具使用,下篇再聊。

 

常见的外挂分类

 

协议破解

 协议破解是一种常见的方式,主要是针对通信内容进行破解,对于采用hash加密的协议来说,会被彩虹表暴力破解。对于采用对称加密的算法来说,如果密钥被截获或者从文件破解,都会触发这种解密行为。若是采用非对称加密,对服务器的性能损耗太严重了,不值得,所以好的方式还自定义一种动态密钥,加大被破解的难度。

加速

加快游戏的时间或者帧率,让人物快速移动、快进技能CD等,或者遇到一些操作比较难的关卡,减慢游戏节奏,减低操作难度,从而影响游戏的帧率,加速过关,减速躲避技能等。

对于这种行为,一般是客户端和服务器做好心跳检测,检查客户端时间,防止篡改,另一方面做好客户端输入数据检查,做到验证数据以服务为准。

内存修改

修改内存数据,这个在以战斗逻辑主要客户端计算的游戏中,经常会出现。这类外挂通过分析游戏所使用的内存,找到内存中的变量去分析猜测变量是代表的什么含义。然后再去修改这个值,令玩家控制的角色战斗力爆棚,比如技能CD直接修改为0,或者攻击值修改变大等。这个一方面客户端要对内存数据做好加密,另一方面服务器得做好验证,不能以客户端为准,具体形式后面再讲。

重发、篡改

对于有些协议加密比较严谨的项目,协议数据破解会很难,作弊者破解不了,就重发或者篡改向服务器发的包,比如充值包,或者购买道具包,他们会采用WPE工具截取到发送的包之后,再次重发,如果服务器没有做好唯一认证或者逻辑严格检查,就会被这种重发包给攻击,造成大量道具的产出。 发放技能这种包也可以被重发,这样可以无限放技能。

模拟点击

这种常见的就是采用按键精灵,对于一些任务系统,或者采集系统,通过按键精灵来录入操作,模拟人手操作,加快收集过程,对于这种的就需要服务器进行分析了,不过影响不是很大,根据影响效果来看是否处理

逆向解密

这种比较高级了,一般会对没有加壳保护的客户端包进行逆向分析,比如把你的包加入外挂程序重新打包,或者逆向出你的加密函数,把自己的想要发出的数据,回溯到加密函数,执行加密再发送等,对外挂人员的要求比较高,对安全人员的要求也更高,一般就得做加壳加密,资源加密等一系列防护,防止程序被逆向。

fps外挂

fps外挂要被单拎出来,是因为这个被搞的太厉害也比较高端了,其中牵扯到内存修改,坐标定位,以及劫持系统渲染等。不过目前也有工具支持了。

FPS类游戏面临的两大外挂问题:透视和自瞄。这也是多数FPS游戏所遇到的问题,比如守望先锋和穿越火线等。

透视分为方框透视和人物透视,具体的方框透视,我没有仔细研究过,大概也是通过坐标系来定位的,而坐标系的数据也是通过内存数据读取出来的,所以说若是内存数据没有保护好,这个也是会被搞的。而人物透视就是采用劫持系统渲染的逻辑来实现的,简单粗暴。

自瞄是方框透视的附带功能,但是比方框透视更难以检测。因为自瞄从原理上来说仅仅是模拟了鼠标的移动,并没有实际对游戏进行干涉。所以这种方式想要验证,只能通过服务器来分析是否是输入设备的操作来处理了,相对比较困难。

 

带来的问题

服务器误杀

目前多数游戏为了做好用户的操作体验,大部分的运行和渲染逻辑都在客户端,再加上网络延迟的问题,服务器用来验证客户端输入的准确性难道越来越大,做的过于严谨会造成误伤,做的宽松又会被外挂利用,所以业内也采用了各种各样的方式来解决,并没有统一的方案,我讲一些我们自己的方式,比如会把关键战斗的操作数据保存下来,存入到一个分析库里面,让防作弊的机器用来分析处理。

做好关键资源报警监控,对于出现玩家爆出大量资源产出的时候,做好防范,一旦出现,及时处理和分析。

客户端加密

从上面的作弊方式可以看到,很多作弊方式已经出现在客户端了,所以客户端除了做好协议加密意外,还得对包加壳加密,防止逻辑被反编译,对资源做好加密,防止资源被盗取,对内存做好加密和混淆,防止被篡改等。

游戏的防作弊是一件不易的事情,要想做到全面的安全提升, 需要做很多细节上延伸和加强,目前很多一线的大厂已经做出了自己的一套防作弊系统,包含客户端程序的打包加密,以及服务器的防作弊分析,期待能够开放出来,也方便一些工作室和没有这部分精力研发的小厂使用,收费也好,起码是节省出研发成本。

 

具体的加密和破解工具的使用方式,下篇再聊,还原持续关注。

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

想看更多有趣原创的技术文章,扫描关注公众号。

关注个人成长和游戏研发,推动国内游戏社区的成长与进步。

 

 

 

© 著作权归作者所有

共有 人打赏支持
wier
粉丝 657
博文 46
码字总数 122193
作品 0
东城
高级程序员
加载中

评论(9)

cassia_
cassia_
当年寝室几个一起破解植物大战僵尸,发现他一个金币数据和好几个long字段有关,金币增减一几个字段一起变,只有一起更动才会成功。这个是什么原理?线性组合?
xforgchen
xforgchen
有没有用程序登录微信刷票的方法?就是通过微信用户名密码用程序登录微信,然后访问某个投票链接
MZHS
MZHS

引用来自“wier”的评论

引用来自“MZHS”的评论

内存修改可以用备份字段加密处理,get时对比解密后值是否一样,如果不一样必然是被改动了

回复@MZHS : 不错不错

引用来自“北极心”的评论

服务器备份内存,不过对服务器啥的影响就大了
可以采用多级备份,不同加密方式,一般来说只有写程序的人知道去改哪几个值,客户端加密,不能放到服务器,影响性能,服务器端可以做log,很多游戏初期反外挂都是一天或者几小时后发现问题,不过现在云服务器反推数据合法性这点计算量都小case。
北极心
北极心

引用来自“wier”的评论

引用来自“MZHS”的评论

内存修改可以用备份字段加密处理,get时对比解密后值是否一样,如果不一样必然是被改动了

回复@MZHS : 不错不错
服务器备份内存,不过对服务器啥的影响就大了
北极心
北极心

引用来自“wier”的评论

引用来自“MZHS”的评论

内存修改可以用备份字段加密处理,get时对比解密后值是否一样,如果不一样必然是被改动了

回复@MZHS : 不错不错
那找到备份的一起改呗,只是加大了破解难度
wier
wier

引用来自“北极心”的评论

fps游戏狙击枪用笔在屏幕中间画个准心,你在牛的作弊检测系统都没发,不过还好影响不大

回复@北极心 : 服务器很难验证,现在都走举报官机制了
wier
wier

引用来自“MZHS”的评论

内存修改可以用备份字段加密处理,get时对比解密后值是否一样,如果不一样必然是被改动了

回复@MZHS : 不错不错
MZHS
MZHS
内存修改可以用备份字段加密处理,get时对比解密后值是否一样,如果不一样必然是被改动了
北极心
北极心
fps游戏狙击枪用笔在屏幕中间画个准心,你在牛的作弊检测系统都没发,不过还好影响不大
用人工智能剿灭“挂逼”:Valve动用深度学习技术来识别CSGO的外挂作弊

外挂作弊向来是FPS第一人称射击游戏的顽疾,极大地破坏了游戏的平衡性,毁掉用户体验甚至一个伟大的产品,从FPS上古神作CS反恐精英到近来火遍全球的吃鸡游戏都深受其害。有效打击不断升级的外...

CashCat ⋅ 03/28 ⋅ 0

[ZZ]变速齿轮作者的文章--绝杀反外挂方案

  自从网络游戏诞生以来外挂就一直是网络游戏厂商头痛的问题。由于网络游戏服务器端的负荷很重,不能进行太多计算,只能把大量检测外挂的工作放在网络游 戏的客户端进行。但是外挂也总是可...

RyaneLuo ⋅ 2012/05/21 ⋅ 0

分享一下,如何防止工具(八门神器)进行内存修改!

Android内存修改器有很多。拿其中的比较出名的八门神器来说,该应用通过修改正在运行的游戏的内存数据,可以非常方便地修改游戏的HP、MP、生命数等等参数。辛辛苦苦开发的游戏或应用被修改器...

科技创造 ⋅ 2014/09/10 ⋅ 0

C语言游戏外挂(四):简单 DLL 注入游戏

通过C语言编写一个DLL文件和一个EXE文件,其中DLL包含作弊功能,运行EXE后将DLL注入游戏,使得游戏仅靠自身进程便可以实现作弊功能。 对象分析 要用的API函数简单介绍 编写测试效果 总体评价...

小辰GG ⋅ 2017/12/04 ⋅ 0

哪些情况是友情链接作弊?总结了11种方法!

相信大多数SEO人员都知道有友链这么一个名词,那么如何做友链? 如何做好友链却很少有人知道。做友链有很多渠道,使用的比较多的有两个。 第一个渠道是友链交换平台:(爱链)(换链神器) 第二个...

卢松松博客 ⋅ 2017/11/02 ⋅ 0

担心 AI「造反」,把它扔进游戏中测试的方式靠谱吗?

摘要 我们既渴望通用人工智能,又担心它如《机械姬》中的「艾娃」一样「造反」。 看过电影《机械姬》的人都知道,人工智能机器人「艾娃」在获得独立的思考能力后,通过精湛的演技,最终骗过并...

geekerdeng ⋅ 2017/12/12 ⋅ 0

棋牌游戏唯有公平公正,才能稳定长久赚钱。

  不少运营商反馈,玩家在游戏当中存在不公平游戏行为:联合报牌打牌,看牌打牌,玩家怀疑产品存在外挂等,玩家都觉得游戏不公平,自然不会再玩。如何让玩家玩游戏玩起来公平公正呢?上海傲...

棋牌游戏开发 ⋅ 2017/10/25 ⋅ 0

Kaleidoscope: 一个安全的密码学扑克协议

译者:黄毅 译文:src="http://yi-programmer.com/2018-03-04kaleidoscope.html" style="font-size: 16px; text-indent: 28px; white-space: normal; color: rgb(0, 112, 192);">http://yi-......

admin ⋅ 04/16 ⋅ 0

请教游戏服务器的反作弊日志收集和展示

我们现在的游戏是有一些数值检测的手段在游戏后台里,当检查到异常时会打印日志到日志文件里,平时我们人工的去目录下检查日志文件来看玩家作弊的情况和看我们定的数值检测会不会过严。我想请...

Vek_lip ⋅ 2017/04/27 ⋅ 5

私人定制你的“棋牌游戏”

葛优最新贺岁大片《私人定制》上映后,网上虽然骂声一片,但私人定制的概念,却深入人心,各行各业纷纷以此作为广告词,掀起了一股私人定制的浪潮,定制产品瞬间高端大气上档次了。小编也来扯...

杰米网络科技 ⋅ 2014/03/14 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

解决CentOS6、7,/etc/sysconfig/下没有iptables的问题

一、Centos 6版本解决办法: 1.任意运行一条iptables防火墙规则配置命令: iptables -P OUTPUT ACCEPT 2.对iptables服务进行保存: service iptables save 3.重启iptables服务: service ...

寰宇01 ⋅ 28分钟前 ⋅ 2

数据库备份和恢复

备份:mysqldump -u root -p 数据库>磁盘路径 恢复:mysql -u root -p 数据库<sql脚本的磁盘路径

anlve ⋅ 今天 ⋅ 0

发生了什么?Linus 又发怒了?

在一个 Linux 内核 4.18-rc1 的 Pull Request 中,开发者 Andy Shevchenko 表示其在对设备属性框架进行更新时,移除了 union 别名,这引发了 Linus 的暴怒。 这一次 Linus Torvalds 发怒的原...

问题终结者 ⋅ 今天 ⋅ 0

在树莓派上搭建一个maven仓库

在树莓派上搭建一个maven仓库 20180618 lambo init 项目说明 家里有台树莓派性能太慢。想搭建一个maven私服, 使用nexus或者 jfrog-artifactory 运行的够呛。怎么办呢,手写一个吧.所在这个...

林小宝 ⋅ 今天 ⋅ 0

Spring发展历程总结

转自与 https://www.cnblogs.com/RunForLove/p/4641672.html 目前很多公司的架构,从Struts2迁移到了SpringMVC。你有想过为什么不使用Servlet+JSP来构建Java web项目,而是采用SpringMVC呢?...

onedotdot ⋅ 今天 ⋅ 0

Python模块/包/库安装(6种方法)

Python模块/包/库安装(6种方法) 冰颖机器人 2016-11-29 21:33:26 一、方法1: 单文件模块 直接把文件拷贝到 $python_dir/Lib 二、方法2: 多文件模块,带setup.py 下载模块包(压缩文件zip...

cswangyx ⋅ 今天 ⋅ 0

零基础学习大数据人工智能,学习路线篇!系统规划大数据之路?

大数据处理技术怎么学习呢?首先我们要学习Python语言和Linux操作系统,这两个是学习大数据的基础,学习的顺序不分前后。 Python:Python 的排名从去年开始就借助人工智能持续上升,现在它已经...

董黎明 ⋅ 今天 ⋅ 0

openJdk和sun jdk的区别

使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的OpenJDK, 那么到底什么是OpenJDK,它与SUN JDK有什么关系和区别呢? 历史上的原因是,Ope...

jason_kiss ⋅ 今天 ⋅ 0

梳理

Redux 是 JavaScript 状态容器,提供可预测化的状态管理。 它是JS的状态容器,是一种解决问题的方式,所以即可以用于 react 也可以用于 vue。 需要理解其思想及实现方式。 应用中所有的 stat...

分秒 ⋅ 今天 ⋅ 0

Java 后台判断是否为ajax请求

/** * 是否是Ajax请求 * @param request * @return */public static boolean isAjax(ServletRequest request){return "XMLHttpRequest".equalsIgnoreCase(((HttpServletReques......

JavaSon712 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部