个人游戏工作室头条号

你的位置:首页 >游戏工作室 >知己知彼吧,游戏公司是这样防止外挂程序的

知己知彼吧,游戏公司是这样防止外挂程序的

导读:团灭,封号,追封!是游戏打金工作室一直想克服的一个难题。游戏工作室使用外挂程序在游戏里疯狂刷金,也是游戏公司一直以来的重点打击对象,这场博弈一直没有停止,这种暗战将来还会继续!那么,作为游戏打金者,该如何与游戏公司战斗呢?今天逛某程序员论坛时,看到了一篇关于“游戏公司该如何防止游戏外挂程序”的贴子,转过来给大家看看,知己知彼吧,希望能给朋友们带来一点点防封灵感。

原文:在游戏研发中如何有效防止游戏外挂程序

总的说来,道高一尺魔高一丈,外挂不可能100%被杜绝,只能通过不同的手段来防止大部分的游戏外挂,具体可以从以下几个方面考虑:

1,协议层加密

以flash客户端为例,在与后端做数据通信时,可采用amf协议,它虽然也是基于http协议,但是对传输的内容做了加密。当然,amf协议是透明的,所以该方法只能干掉一部分只知道用httpwatch/firebug等查看明文http包传输工具的小白。如果需要继续增加门槛,可以自定义加密协议。但由于客户端需要知道解密方式,所以客户端本身也需要做好加密。关于flash本身格式的加密解密是另一个比较大的话题,在此就不展开赘述了。

2,checksum校验

客户端发送数据时增加一段checksum校验码,服务器端根据相应的算法进行校验,如果校验不通过则返回错误。与(1)一样,只要破解了客户端就可以知道checksum的校验算法。因此一方面需要注意客户端的安全,另一方面checksum生成算法需要不定期更换。

3,通过任务策划来防治

外挂主要是代替人工来做些重复性的工作,这样玩家可以不操作电脑也能在游戏中获得收益。外挂的出现一般都是和利益有关,最好的治理方式是引导而不是打压,因此我们可以在产品设计方面做些降低外挂的工作:

1)降低长时间重复性任务所获得收益,或同一种获得收益的任务随时间增加收益减少。

2)游戏本身提供一些类似外挂的功能:比如自动打怪等辅助工具。

4,定期检查数据。

通过排行榜等数据统计,可以通过发现一些异常的数据来检测是否有外挂存在。

5,深入内部,了解外挂行情。

这个是客服们的工作,与技术关系不大,但有时能起到意想不到的作用。

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

稳定周期性:外挂另外一个特点是周期性比较强,一般的设定是每隔XX秒执行XX操作,如果外挂是规律性的周期的话,有一个很容易抓捕的办法,就是每次同样的请求时都在session中记录下当前时间与上一次请求时间,两者的差值如果在多次请求中保持不变,基本上就能判定是外挂了,但是外挂现在很智能,周期是浮动的,比如周期设定为1分钟,浮动值设置为5秒钟,那么两次请求周期就是55秒-65秒,浮动值也可以手动设定,这样的话,这种方法就失效了。这种方法适用于基础级的外挂。

请求次数多:外挂为了定期监测一些数据变动,会频繁的发送一些请求,所以在请求数量上要比正常玩家的操作多很多倍,服务器端可以设置计数器,记录每个玩家每小时的请求次数,每小时筛选出来一批大于平均请求数N倍的玩家(N可以按实际需要设置),这些玩家记录为“疑似外挂”的情况。这也适用于单个某个请求的统计,比如getUserInfo这类查询类的请求。

设置外挂钓钩:外挂主要的特性是“自动化”,也就是按照预先指定的模拟指令来模仿客户端的操作。我们可以让游戏真实的客户端在每天的某几个时段在外挂常用功能的请求中加入特殊参数,服务器端通过判断是否有此参数或参数的值是否正确来判定此请求是否外挂发出,据此记录该玩家为“疑似外挂”。这种方法的特点是:钓钩参数(我起名叫“钓饵”)时有时无,外挂作者不容易捕捉到此钓饵数据,不容易被破解,但由于客户端和服务器端的时间会有不同步的情况,所以有一定误抓的可能性。

外挂的处理:处理外挂一定不能一发现就踢掉或提示验证码等等,这会让外挂捕捉到你的处理方式,应该是以记录+打分的方式,记录每一次“疑似外挂”的行为,每种行为按照疑似程度设置不同的分值,然后按照总的分值制定一个分值标竿,大于这个分值的,按运营手段处理,封禁也好、不定期弹出验证码也好。总的原则就是“非即时性”,让外挂作者不易察觉到你的抓捕机制,从而增加外挂升级更新难度。

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

在之前的工作中,认识不少专门做游戏外挂的朋友,也得知某些游戏外挂一年的销售额可以达到1200万人民币。

巨大商业利益的背后,是外挂团队极强的技术能力,对于网络协议加密,通过研读汇编语言去进行破解,是很常见的形态。从某种意义上说,与外挂的斗争,仅仅依靠技术手段,是无法取胜的。所以在各位所说的技术方案的基础上,应该制定一些策略。

外挂作为依附于游戏产品的衍生品,目前都有及其明确的商业目的,主要盈利模型:

1,通过收取玩家的月卡费用进行收费;

2,通过出售给游戏打金工作室进行收费。

而我们的游戏设计首先能够设法杜绝游戏工作室打金币的行为,使得第二个用途失效。这个做法是策划和运维的范畴,不同游戏类型有不同的做法,在此不做详细说明。

与外挂斗争,首先要确认几个关键的前提:

1,外挂的收入严重依赖一个前提,就是游戏外挂的长期适用性,若经常不能使用,则无法保证有付费用户。

2,外挂的利润率与外挂本身的更新难度、维护难度以及开发成本有直接的反比关系,因此当开发我们的外挂成本更高时,他们会倾向于去找一个难度更低的产品。

3,外挂团队一般小而精干,换言之,个人水平高,但人数有限;

4,外挂通常会降低用户的使用门槛并且尽量的做自动化。

5,外挂可能会利用游戏漏洞。

所以,与外挂斗争的有效办法有以下几类:

1,疲惫法。不断地用小版本更新,来更改通讯加密的密钥,使得外挂制作者需要不断的破解,而相应外挂也会随着其破解能力的不同产生长短不一的失效期;

2,内挂法:游戏设计中涵盖外挂的大部分能力,适用于强PK MMO游戏;

3,考试法:对于长期进行枯燥循环的玩家,强制要求输入验证码,这种方式相对设计难度低,对于小外挂团队有效(大的外挂团队会开发识别算法甚至使用客服人肉回答);

4,隐形惩罚法:对于判断出是游戏打金工作室使用的外挂,采取强制降低掉率的方式,使其很难盈利;

5,举报法:鼓励玩家举报外挂玩家,判断后加以惩罚。

老A感悟:虽然这篇“如何防止游戏外挂程序”的文章是3年前的了,但个人认为,许多原理与逻辑是不会变的。最后也建议朋友们,既然我们要一直研究防封,除了行为检测的避免,外挂本身还是至关重要的,没事时,多去一些程序论坛逛逛,虽然大部分人不懂程序!