反外挂如何维护游戏权益?

一款游戏要上线,就要防外挂。历史上因为外挂导致大量玩家输球的游戏数不胜数。随着游戏研发技术的发展,业界对外挂的防范其实已经越来越好了。下面总结一下防外挂的基础知识,以及我们的移动模块做了哪些防外挂的工作。

1插件防范基础知识

在做外挂防范工作之前,首先要了解什么是外挂。据我了解,市面上常见的外挂主要有以下几种:

修改客户端的内存信息

这种插件分析游戏使用的内存,找到内存中的变量并分析猜测变量代表什么。因为客户端本身存储了很多游戏信息,比如技能cd,移动速度等等。由于我们游戏技能的管理和启动都是由客户端控制的,如果插件能把技能cd改成0,客户端就可以无限期的玩这个技能。

常用外挂工具:葫芦娃,八门神器

加速齿轮

加速档可以加速某个进程的时间流逝,游戏客户端进程的时间通过加速档可以加速n倍。真实时间可能只有1s,而客户端进程的时间已经过了Ns。通过加速档位,可以加快人物移动速度,加快技能cd。

常用插件工具:加速齿轮

同步消息的重传和篡改

这种插件可以拦截客户端发送给服务器的消息,然后篡改或者重发。例如,您可以截取技能释放消息,然后无限期地将其重新发送到服务器。如果服务器不验证它,它将无限期地执行技能。

常用外挂工具:WPE三件套(eg+wpe+ccp)

脚本自动模拟点击。

这种外挂对游戏的伤害相对较小,但也是最常见的。这种外挂比较常见,对游戏的影响主要取决于游戏机制。比如我的一个哥们弄了20多部手机,用按钮精灵刷传奇世界手游的金币,然后卖给其他玩家。但是对于不能自由交易的游戏,这种问题就不会出现,最多会导致玩家自用,让他们24小时在线,缩短游戏寿命。

常用插件工具:按键精灵(感觉这个东西已经产生了产业链。...

反外挂是一个系统工程,需要不同模块的配合。而且对于不同的游戏,对外挂的防范要求也是不一样的,具体游戏需要具体分析。

常见的外部预防措施如下:

过程检测

在游戏开始时,检测手机正在执行的进程。如果发现黑名单上有进程,则不能进入游戏。这种方法可以防止市面上常见的插件,但是对于不常见的或者新开发的插件却无能为力。如果游戏不火,没人玩,这个手段就够了。希望大家能遇到专门为自己游戏开发的插件,哈哈。

行为的统计分析

记录并分析玩家的行为(经常是点击行为)。这种方法可以帮助检测玩家是否使用了按键向导。

存储和通信加密

之前介绍过,插件可能会修改内存或者篡改同步消息来达到自己的目的。如果我们对客户端的内存信息和通信信息进行加密,那么插件在获取到这些信息的时候是无法对其进行分析的,所以无从下手。

报告

Moba游戏或者fps这种对抗性游戏,玩家使用外挂对手也能清晰感知。对于这类游戏来说,举报机制是非常有用的防止外挂的手段。

验证码

梦有这种模式。

上面介绍的通用方法并不能解决所有的外挂问题,所以我们需要在游戏的逻辑实现过程中做相应的反外挂机制。

游戏逻辑实现中防止外挂的基本方法有:

服务器保存验证信息。

从客户端收到消息后,检查消息的合法性。

在具体的游戏执行逻辑中加入反外挂机制需要坚持一些原则:

确保外挂收入不抵支出

这有两层意思,一层意思是让外挂用户无法获得利益;另一层意思是,如果外挂用户只能通过非常麻烦和复杂的工作获得一些小的好处,那么我们可以放过这种情况,也就是说,我们不需要在所有情况下都加入反外挂逻辑。

不影响游戏性能。

当添加反插件逻辑时,我们需要考虑反插件增加的性能开销。如果插件防范增加了巨大的性能开销,往往是不值得的。在这种情况下,可以考虑不在逻辑中放插件,而且是通过其他方式。

区分什么不可信,什么可信。

可信的不需要验证,不可信的选择性验证。在我们的游戏中,客户端发送的所有消息都被认为是不可信的,服务器发起的所有呼叫都是可信的。比如下面介绍的移动模块的反外挂机制,当服务器上的其他模块比如机制模块通知我的移动模块瞬移时,我不考虑机制模块是否可能被外挂操作,我认为是可信的。当然,这个器官可能是客户端操作的,所以客户端此时是否使用插件,要通过器官模块来判断和验证。