传奇sf,传奇私服发布网,新开一秒传奇
当前位置:网站首页 > 传奇私服 > 正文

游戏开发中防外挂的那些事儿

作者:admin发布时间:2021-09-02分类:传奇私服浏览:47评论:22


导读:1预防外挂的基础知识在做外挂预防工作之前,我们要先了解外挂有哪些。根据我的了解,市面上常见的外挂主要有以下几种:修改客户端的内存信息这类外挂通过分析游戏所使用的内存,找到内存中的变...

游戏开发中防外挂的那些事儿

1预防外挂的基础知识

在做外挂预防工作之前,我们要先了解外挂有哪些。根据我的了解,市面上常见的外挂主要有以下几种:

修改客户端的内存信息

这类外挂通过分析游戏所使用的内存,找到内存中的变量去分析猜测变量是代表的什么含义。由于客户端本身保存着很多游戏信息,比如技能cd、移动速度等。由于我们游戏技能的管理和发起是由客户端控制的,若外挂能去把技能cd改为了0,客户端就可以无限放此技能。

常见外挂工具:葫芦侠、八门神器

加速齿轮

加速齿轮可以加速某一个进程的时间流逝速度,通过加速齿轮,可以让游戏客户端进程的时间加速N倍。真实时间可能只过了1s,而客户端进程的时间已经过了Ns。通过加速齿轮,可以让人物移动速度加快、技能cd加速等。

常见外挂工具:加速齿轮

重发、篡改同步消息

此类外挂可以截获客户端发送给服务器的消息,然后进行篡改或者重发。比如可以截获一个释放技能消息,然后再无限重发给服务器,服务器若没有验证,就会无限执行技能。

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

脚本自动模拟点击

这类外挂对游戏破坏相对较小,但是也最常见。这种外挂比较普遍,对游戏的影响主要是看游戏机制。比如我一个哥们弄了20多台手机,用按键精灵刷传奇世界手游的金币,然后卖给其他玩家。但是对于不能自由交易的游戏,就不会出现这种问题,最多是导致玩家自己使用,从而可以24小时在线,缩短了游戏寿命。

常见外挂工具:按键精灵

(我感觉这东西都已经产生了一条产业链...

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

常见的外挂预防手段有以下几种:

进程检测

游戏开始时检测手机正在执行的进程,若发现某个进程在黑名单上,则不能进入游戏。这种方式可以预防市面上常见的外挂,对于不常见的或者新开发的外挂则束手无策。若游戏不火没人玩,这个手段就够了。希望大家都能遇到针对自己游戏专门开发的外挂,哈哈。

行为统计分析

把玩家的行为(常常是点击行为)记录下来并进行分析。这种方式可以辅助检测玩家是否使用按键精灵这种工具。

内存、通信加密

之前介绍了外挂可能修改内存或者篡改同步消息以达到他们的目的,若我们对客户端的内存信息和通信信息加密,外挂拿到了信息也不能分析,从而也就无从下手了。

举报

moba游戏或者fps这种对抗性的游戏中,玩家使用外挂对手能明显感知到。对于这种游戏,举报机制是一个很有用的防外挂手段。

验证码

梦幻就有这个模式。

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

在游戏逻辑实现中进行防外挂的基本方法是:

服务端保存验证信息

收到客户端发来的消息后,对消息的合法性进行验算。

在具体的游戏执行逻辑中增加防外挂机制的时候需要秉持一些原则:

保证外挂收益不抵支出

这个有两层含义,一层含义是要让外挂使用者无法获得收益;另一层含义是,若外挂使用者只能通过非常麻烦复杂的工作才获得一些小小收益,那么这种情况我们可以放过,也就是说不需要对所有的情况都需要增加防外挂逻辑。

不影响游戏性能

在增加防外挂逻辑的时候,需要考虑为了防外挂增加的性能开销。若因为防外挂增加了巨大的性能开销,那么往往是不值得的。这种情况可以考虑不要在逻辑里面放外挂,而且是通过其他方式。

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

可信的不需要验证,不可信的选择性验证。在我们游戏里面,所有客户端发送的消息都认为是不可信的,所有服务端发起的调用都是可信的。比如在下面介绍的移动模块防外挂机制,当服务端的其他模块比如机关模块通知我的移动模块瞬移,这种情况我不考虑机关模块是否可能是被外挂操作了,我认为都是可信的。当然这个机关可能是被客户端操作,那么这时候客户端是不是用了外挂应该是由机关模块来判断和验证。

下文以玩家在客户端操作自己的单位移动为例,介绍移动模块为了防外挂做了什么工作。

之前写过技能模块的防外挂内容,大家可以阅读技能模块的防外挂机制和同步机制优化-知乎专栏

2移动模块如何防外挂

我们游戏的移动同步逻辑的基本原理是:单位在主控端(玩家自己的客户端)根据玩家输入执行移动逻辑,然后将位置点以及时间信息以一定的频率发送给从端,服务端以及其他客户端根据主控端发来的移动同步信息模拟、预测、纠正单位的位置。

基于以上同步机制,移动模块需要考虑三种外挂情况:

1.主控客户端伪造或篡改瞬移消息。

2.主控客户端修改本地内存中的移动速度。

3.主控客户端使用加速器

2.1防止客户端发送非法瞬移消息

由于我们游戏所有的移动都是在主控客户端发起和执行,然后服务端跟随,所以瞬移也是客户端先执行,然后通知服务端。

为了保证客户端不能发送非法瞬移消息,我们将瞬移流程定义为:由服务端发起、客户端执行、服务端再验证。

瞬移逻辑如下图所示:


已有22位网友发表了看法:

欢迎 发表评论: