总的说来,道高一尺魔高一丈,外挂不可能100%被杜绝,只能通过不同的手段来防止大部分的游戏外挂,具体可以从以下几个方面考虑:
1,协议层加密
以flash客户端为例,在与后端做数据通信时,可采用amf协议,它虽然也是基于http协议,但是对传输的内容做了加密。当然,amf协议是透明的,所以该方法只能干掉一部分只知道用httpwatch/firebug等查看明文http包传输工具的小白。如果需要继续增加门槛,可以自定义加密协议。但由于客户端需要知道解密方式,所以客户端本身也需要做好加密。
2,checksum校验
客户端发送数据时增加一段checksum校验码,服务器端根据相应的算法进行校验,如果校验不通过则返回错误。与(1)一样,只要破解了客户端就可以知道checksum的校验算法。因此一方面需要注意客户端的安全,另一方面checksum生成算法需要不定期更换。
3,定期检查数据。
通过排行榜等数据统计,可以通过发现一些异常的数据来检测是否有外挂存在。
4,深入内部,了解外挂行情。
这个是客服们的工作,与技术关系不大,但有时能起到意想不到的作用。
与外挂斗争,首先要确认几个关键的前提:
1,外挂的收入严重依赖一个前提,就是游戏外挂的长期适用性,若经常不能使用,则无法保证有付费用户。
2,外挂的利润率与外挂本身的更新难度、维护难度以及开发成本有直接的反比关系,因此当开发我们的外挂成本更高时,他们会倾向于去找一个难度更低的产品。
3,外挂团队一般小而精干,换言之,个人水平高,但人数有限;
4,外挂通常会降低用户的使用门槛并且尽量的做自动化。
5,外挂可能会利用游戏漏洞。
所以,与外挂斗争的有效办法有以下几类:
1,疲惫法。不断地用小版本更新,来更改通讯加密的密钥,使得外挂制作者需要不断的破解,而相应外挂也会随着其破解能力的不同产生长短不一的失效期;
2,内挂法:游戏设计中涵盖外挂的大部分能力,适用于强pk mmo游戏;
3,考试法:对于长期进行枯燥循环的玩家,强制要求输入验证码,这种方式相对设计难度低,对于小外挂团队有效(大的外挂团队会开发识别算法甚至使用客服人肉回答);
4,隐形惩罚法:对于判断出是游戏打金工作室使用的外挂,采取强制降低掉率的方式,使其很难盈利;
5,举报法:鼓励玩家举报外挂玩家,判断后加以惩罚。
既然我们要一直研究防封,除了行为检测的避免,外挂本身还是至关重要的,没事时,我们可以多去一些程序论坛逛逛,增长知识。