防游戏外挂

来源:互联网 发布:snh48直播软件 编辑:程序博客网 时间:2024/05/16 09:48

防治外挂,首先要了解外挂,知道它有哪些主要功能,具体是怎样运作的,然后针对外挂的一般特性做抓捕脚本,我自己的经验大致总结有以下几点:

  1. 稳定周期性:外挂另外一个特点是周期性比较强,一般的设定是每隔XX秒执行XX操作,如果外挂是规律性的周期的话,有一个很容易抓捕的办法,就是每次同样的请求时都在session中记录下当前时间与上一次请求时间,两者的差值如果在多次请求中保持不变,基本上就能判定是外挂了,但是外挂现在很智能,周期是浮动的,比如周期设定为1分钟,浮动值设置为5秒钟,那么两次请求周期就是55秒-65秒,浮动值也可以手动设定,这样的话,这种方法就失效了。这种方法适用于基础级的外挂。
  2. 请求次数多:外挂为了定期监测一些数据变动,会频繁的发送一些请求,所以在请求数量上要比正常玩家的操作多很多倍,服务器端可以设置计数器,记录每个玩家每小时的请求次数,每小时筛选出来一批大于平均请求数N倍的玩家(N可以按实际需要设置),这些玩家记录为“疑似外挂”的情况。这也适用于单个某个请求的统计,比如getUserInfo这类查询类的请求。
  3. 设置外挂钓钩:外挂主要的特性是“自动化”,也就是按照预先指定的模拟指令来模仿客户端的操作。我们可以让游戏真实的客户端在每天的某几个时段在外挂常用功能的请求中加入特殊参数,服务器端通过判断是否有此参数或参数的值是否正确来判定此请求是否外挂发出,据此记录该玩家为“疑似外挂”。这种方法的特点是:钓钩参数(我起名叫“钓饵”)时有时无,外挂作者不容易捕捉到此钓饵数据,不容易被破解,但由于客户端和服务器端的时间会有不同步的情况,所以有一定误抓的可能性。
  4. 外挂的处理:处理外挂一定不能一发现就踢掉或提示验证码等等,这会让外挂捕捉到你的处理方式,应该是以记录+打分的方式,记录每一次“疑似外挂”的行为,每种行为按照疑似程度设置不同的分值,然后按照总的分值制定一个分值标竿,大于这个分值的,按运营手段处理,封禁也好、不定期弹出验证码也好。总的原则就是“非即时性”,让外挂作者不易察觉到你的抓捕机制,从而增加外挂升级更新难度。

其他针对游戏设计以及游戏生态的外挂功能也有相应的抓捕方式,不过还是那句话“道高一尺魔高一丈”,外挂做的越来越像客户端,原生的客户端一升级版本也有可能被误抓为外挂,所以我认为,抓外挂的手段中,辨别请求来源是很难的,这是游戏中外挂不好处理的主要原因。