Posted on 2008-02-26 16:04
Fox 阅读(2599)
评论(10) 编辑 收藏 引用 所属分类:
G游戏编程
Author: Fox
//-----------------------------------------------------------------------------------------------------
此篇仅是对反脱机外挂的一点思考,其他安全问题如登录验证、消息验证等更多的是涉及逻辑功能。
//-----------------------------------------------------------------------------------------------------
春节刚回来的时候,回公司去和Soft聊到了自己的毕业论文的问题,因为专业的关系,我必须给出一些安全方面的考虑,正是因为这一点,我当时开题时就立足对安全的无缝游戏世界进行思考。只是在游戏本身的安全性上,一直也没有一个好的出发点,这两周还是在考虑这个问题。
这一点,有我入行时间不长,对于游戏本身、玩家与开发者(含游戏及外挂、木马开发者)之间的关系并没有一个很好的把握,更多的是由于我对游戏中的可用的安全技术不了解,尤其是对应用层安全协议不了解,对破解技术也不了解,导致无所适从。
《游戏编程精粹1》中Andrew Kirmse在《在线游戏的网络协议》一文中对常见的篡改报文、报文重放和逆向工程有讲述。预防报文篡改的有效防御是哈希校验,现在大多游戏是使用MD5算法,而且网上开源的MD5代码也很多。对于报文重放,Andrew提到了使用线性叠加随机数的状态机,具体原理和实现方式因为没有提到太详细,还要针对实际应用继续学习L。然而,由于客户端既是报文的接收者也是发送者,因此,客户端包括了完整的加解密算法。一旦客户端被逆向,上述措施就变成了破解者背后的烟雾弹,完全失去意义。
提到反外挂,Joe的看法也是说这个东西和具体某一个技术关系不大,还是要从机制上去看。加不加密对于普通玩家没有意义,对于专业从事逆向的人更是也没有意义,所有单纯考虑加密是没有效果的。对于免费游戏,外挂往往是打钱公司的工具,你封他的号,他再建就是了,代价几乎为0,而一般付费游戏(像魔兽世界)一个帐号对应一个CDKey,一个CDKey就要几十块钱,这个封起来就有点咬牙了。
说到这里,不妨换个思路:为免费游戏加入CDKey。我一款游戏从内测、封测到公测,让玩家充分参与体验,在被逆向且外挂横行之前,按正常逻辑运营。进而假定我这一款游戏在公测之后,让玩家感觉魅力十足。引导玩家并实施CDKey,一个CDKey大约会需要玩家付出些许Money以示诚意,在玩家游戏过程中,会阶段性向玩家赠送部分增值道具。老玩家在进入新区时,需要申请继续使用原CDKey。这样一来,外挂就不会肆无忌惮了。
BTW,这个思路没有从技术角度解决问题,下面再来看一种略微关乎技术实现的解决方案:动态验证。在游戏运行期间,会不定期的向玩家发送验证码,客户端在收到消息后,必须在一定时间内响应,向服务器确认收到的验证码,否则将被强制下线,再次登录后将更加频繁的收到验证码,直到用其良好的回复次数累积消除其不良记录为止。为了尽量减少因此给玩家造成的不友好体验,在任务场景、重要PK场景或者高等级玩家活动场景,验证码的发送和确认可适当放宽。
当然,如果外挂中加入了图形识别,这一招也未必奏效。
不知是道高还是魔高,可以肯定的一点是:大家都是在利益的驱动下绞尽脑汁。
//-----------------------------------------------------------------------------------------------------
春节回来之后,一直比较忙(确切的说是比较懒),没有更新,宜更加勤奋。
最近工作涉及到数据库编程,一点点对数据库的读写居然耗掉我3天时间,汗!
//-----------------------------------------------------------------------------------------------------