2006年8月26日星期六

与外挂的持续斗争中

自从采用了运行中抓查外挂使用者并处以罚款之后,就这几天的观察来看,在和外挂的较量中我们暂时处于上风。但是这种状态是通过杀敌一千,自损两千的手段来维持的,由于外挂也顺势更新,躲藏抓查,导致核查手段越发的诡秘,结果就是不够可靠,误抓率较高,导致普通用户也受害。

仔细思考下,虽然对自身伤害不轻,但是仍在可以接受的范围内,既然如此,就有必要坚持,只要把外挂扼杀在萌芽中,逼迫外挂的制作者转行,那么就达到目的了,解除了长期的隐患。

问题在于,如何尽量减少自己的损失呢?

仔细想来,关键在于减少更新,更新的次数越多,就越容易出错,而且自己的手段也将越匮乏。但是你一旦更新,外挂制作者也会跟着更新,然后停掉旧版本,号召大家更换新版本,这样就逼迫你也尽快更新。那么,我们该如何做?

首先,我们的目的是为了震慑外挂的使用者,惩罚这些人,所以,我们并没有必要时时刻刻检查,只需要随机抽几段时间进行检查就可以了,比如每次检查以后,隔random(60)分钟再进行检查,虽然检查的次数减少了,但是因为挂机是一个长时期的行为,所以你总是能抓到他们,一样可以进行处罚。而对于外挂制作者来说,他们很难获得检查手段,因为必须至少等待半个小时才有机会。因为逆向工程必须经过多次跟踪,测试,所以如果检查的频度少了,对手破解和验证的时间就加长了。另外,外挂制作者为了避免自己的客户遭到损失,所以可能在游戏更换了检查手段以后,暂停外挂的登录,此时,我们也可以相应的关闭服务器端的检查,让外挂制作者无从验证自己的反外挂手段是否生效。也就是说,他必须让自己的客户陪着自己一同冒险,这样,就能够使得他的客户动摇对制作者的信心,从而达到遏制外挂蔓延的目的。

但是,如果我们平时不检查,偶然才检查,那么外挂只要一遇到检查就立刻切断连接,等过了风头再登录不就可以绕过检查了么?为了避免这种情况的发生,我们可以平时依然做检查,但是只采用比较常规的,早已被外挂制作者破解的方法,而且这些代码都是随机打乱的,让外挂无法通过程序判断收到的检查方法是更新的,还是老方法的变种,这样,外挂就不能采用下线躲避的方法了。

总结说来,就是反外挂服务器时时刻刻都进行常规检查(这些检查稳定可靠,另外会不停的变种),每隔random(60)分钟进行一次强力检查(采用最新手段),如果外挂制作者关闭了验证,我们也关闭强力检查。

通过以上手段,我们可以使得外挂制作者需要更长的时间才能找到破解方法,并且在这段时间内,不能关闭外挂的登录,相当于我们挟持了所有的外挂用户,让他们承担破解期间的惩罚风险。

其次,我们还需要采用其他技术手段上避免外挂用户长时间挂机。目前,我们在内测区试验了汉字识别码的技术。这是所有中文游戏的一个优势,英文、阿拉伯数字识别即容易,实现方案也很多,而中国人相当于大脑里自带了一个庞大的字符集,可以进行更大范围的模式匹配,所以,我们就可以利用生成汉字图像,让用户来识别的手段避免外挂长时间自动挂机。汉字通过选择字体、旋转,变形的手段可以大大的增加程序识别的难度(普通的噪音一般没有必要,因为降噪技术是非常成熟的),另外,还有一种较为极端的手段,就是将两个汉字部分重叠在一起,需要用户识别其中某一个字(相当于强力噪音),因为某些地方有重叠,倘若试图分离它们,可以说,一般的程序员几乎没有足够的知识来做到这一点。

究竟效果如何,也许还要到两周以后才能知道了。

没有评论:

发表评论