防山寨、防盗版、防黑客的六大策略

>>>  創業先鋒 眾人拾柴火焰高  >>> 簡體     傳統

         一、本文谈及的安全措施仅在你的游戏进入应用市场前予以执行方能奏效。这一点非常重要,下文会详述这个问题。

  二、本文不能保证一劳永逸,特别是鉴于移动平台的快速发展,以及许多人都希望通过复制或在你的游戏中作弊捞取利益。

  三、这些解决方案的主要目的并不在于创造不可逾越的障碍,而是减缓和打压黑客的嚣张气焰。所以突破应用安全系统的耗时越长,你的游戏在黑客面前的吸引力则更低。




以下是防山寨、防盗版、防黑客的六大具体策略

  I. 存档作弊防止机制

  例如,《愤怒的小鸟》的存档破解工具能读取和改变游戏的进度值。

  免费游戏通过内购进行盈利。内购的道具能够帮助玩家轻松绕开游戏设定的障碍和在游戏中的表现更为优异。存档破解能够区分储存和这些道具值的存放文件,并对它们进行修改,或让作弊者采用相同的方法获取无限金币/现金。以后就是这些作弊工具的原理:

  在大部分游戏中,当玩家执行某个行动,该行动的记录以及结果都会储存在本地文档(即移动设备中),并在上传至服务器前进行打包。由于一次性上传所有文件会严重阻碍网速和损害游戏体验,所以这些文档会进行分批上传。作弊工具就是在打包上传节点上获得作弊的机会,并对该等文件依附外部存档修改工具,以获取应用的存档,所以作弊者能够修改游戏的行动,包括获取游戏的付费道具。(这些存档作弊工具中有一些能够在游戏是否已经被反编译的情况下仍能起效,所以创建或使用第三方解决方案显得非常重要)。

  检测和组织任何外部存档修改的努力能够帮助预防这类作弊方式的发生。如果开发者对自己的创建存档作弊检测/防止措施有信心,那么也可以进行自主开发。反之,则在游戏中纳入商用解决方案。我的个人建议是进行全面的调研和选择一项商用解决方案。存档作弊程序在不断的发展和改善,而商用服务较普通游戏开发者在这方面更有资源。

  预计执行时间:这取决于解决方案是否通过二进制植入(耗时几分钟)、SDK(耗时数天乃至数周),或自主开发(数周乃至数月)。

  2. 源代码和字符代码混淆

  普通英文文本形式的源代码非常容易理解,但当以字符和数字代替文本时则不然。混淆式代码能够减慢黑客了解代码的速度,更不用说利用你的代码。

  预计执行时间:数分钟乃至数小时,取决于代码的复杂程度。例如,Second Wave Games工作室喜欢采用由谷歌提供的免费混淆代码/打包代码。通读整个文档以及相关的栈溢出(StackOverflow)仅需一小时,而执行这种代码也只需花一小时。

  3. 二进制级别的代码混淆和加密

  如果将源代码混淆比作为你的卧室上锁了的保险箱,二进制级代码混淆则相当于锁上你的前面和在你的房子安放防盗门,给盗贼设置多一层困难。由于这对应用本身的内容并无伤害,因此该方法不会对应用的体验构成任何影响。

  这种方法能够很好地防止反向工程,因为反向工程需要对二进制文件进行反编译,但很不幸,这是普通黑客的懂得技术之一。

  源代码能被轻易地复制,从而创造新的游戏。而OniixGames工作室(在波士顿和上海设点)却对此无能为力:“在一款我们近期发布的游戏中,我们遇到了一款在实质上反向变异了我们合作伙伴产品的游戏,还在我们合作伙伴的游戏全球发布一个月后成功登陆了应用商店。代码混淆和加密二进制文件则能防止这些情况的发生。”Oniix的Evrett Wallace如是说。

  预计执行时间:取决于采用何种解决方案。方案植入可能会耗时数月(对于需要与应用的初始开发进行深度融合的解决方案而言),采用SDK则需2-3周的时间。新近推出的解决方案能够将此耗时缩短至数分钟。例如近期我协助测试的一份样本文件上传/下载,以及整个流程仅需10分钟则可完成。

  4. 加密密钥使用动态密钥而非静态密钥

  我们发现使用静态和硬编码密钥的游戏非常多。而且这还不止局限于小型开发者。一些主流发行商的游戏和应用,以及一些知名的企业也在其游戏中采用单点登录的方式。

  不论你是否用于加密在设备上通信或储存的数据,对它们执行硬编码,这就意味着加密无法轻易地被破译。

  试想一下:大街上的车都不是一条钥匙即可打开,就如你不应该在所有网站的账户上只使用单个密码。或许更重要的是,你绝不能够让这个密钥或密码可供其他人使用或复制。

  加密密钥是保护互联网服务的基石,但必须使用得当。在可能的情况下,使用动态密钥,如果你得使用静态密钥,确保你加密。

  预计执行时间:数小时乃至数周,取决于你的游戏的开发周期,以及需要处理的密钥的数量。

  5. 实施支付验证

  在内购进行时,应用商店便会发放一个支付验证码。在游戏服务器追回内购并返还至应用商店的服务器予以确认前,付费验证码可被重复多次使用,有时候还能够在不同的应用中使用。

  由于银行的规定以及信用卡在票据交换所处理的方式,有时候会即时产生信用卡收费。而在其他时候,则会在一天或两天后才会完成费用“待处理”至“处理”整个流程。(验证有时候批量处理并每个数小时一次,或一天一次)。例如,Uber实施处理信用卡的支付,而Lyfy的处理时间却为24小时。这就给使用虚假信用卡,以及被盗信用卡进行内购有机可乘。

  这种黑客现象非常广泛。移动分析公司Appsalar报告称,“越狱设备的舞弊比例超过50%”。游戏平台开发者SOOMLA近期描述了内购舞弊的发生过程,并以其中一个客户(一家游戏开发者公司)为例,该公司本来在首天后应赚取超过1,000美元,但随后苹果的收入报告显示,该公司实际只赚了1-2美元。

  通过在服务器端执行实时支付验证,你可以防止对支付验证码的滥用,并减少使用无效信用卡信息的舞弊情况。

  预计执行时间:最多耗时数小时或数天。一旦你了解内购系统的运作模式,执行实时支付验证并不困难。在植入内购系统时,确保你的服务器收到购买请求时及时执行服务器端的检查。

  6. 实时监控应用安全

  门上锁了就安全了。有门的建筑更为安全。就更为有效的动态监测系统而言,在建筑被入侵前,向户主发出检测潜在威胁的警告非常关键。而应用分析工具的新兴领域似乎能让这种系统成为可能,让开发者可以跟踪他们的应用,检测潜在的黑客现象,并追踪他们的频率和始发点。尽管目前市面上的关于这方面的服务尚较为稀缺,但它们仍值得调查和考虑。

  服务器端的保护应加入防火墙和服务器安全软件;通信应采用SSL和其他更为安全的方法。现在我们应该在应用的客户端上采用相同的逻辑。尽管敏感数据储存于客户端,但黑客仍可通过客户端获取这些数据。回到我们刚刚的类比当中,通过密钥进入的系统是安全的,但如果配备指纹识别、热量探测和数字锁并配备监控摄像头的系统则更为安全。

  预计执行时间:市面上有多个解决方案,执行时间从数分钟至数周不等。实时监控要求持续的监控。有鉴于此,我认为应该在客户服务/游戏端加入这种服务,因为其他平台,包括MMORPG,也采用了这种跟踪功能。

  

P.S. 为什么游戏发行后的解决方案代价更高

  正如本文开头所说的,这些安全政策只有在应用进入市场前方能奏效。这点非常重要。我再次重申:如果你尝试对已经进入应用商店的应用施加保护,那么恐怕已经是亡羊补牢,为时已晚。一旦游戏已经发布,这需要数周的开发时间对游戏的代码进行修改。

  而在这段时间,黑客可能已经完成了他们需要做的工作了。盗版游戏甚至能在原版游戏进入某个区域前便进行发布。在中国(Google Play被禁),市面上有数百个安卓的应用商店,开发者有时候会发现他们与自己的多个克隆游戏进行竞争。所以,要在开发周期的初期阶段便开始执行安全措施。

  我明白这可能与手游,特别是免费游戏的一般开发方法背道而驰。手游是持续更新和优化的产品。就此,大部分的游戏初始发布时都是MVP(可行性最低的产品)版本,并在随后的时间进行迭代。受到开发时间的限制,开发者需要与时间竞赛,甚至他们还会面临是加入所有计划的功能或是按期发行的选择。在这种情况下,安全通常都不受待见。

  不幸的是,盗版仍相当猖獗。手游行业产值数十亿美元,甚至一款游戏的年收入便能达到十亿美元,而且手游还在高速发展。考虑到涉及如此庞大的经济利益,花上几个小时或是几天执行安全防御措施是必须的。

来源:手游那点事


上方网 2015-08-23 08:55:12

[新一篇] 游戲開發中 UI 是由誰來完成的?

[舊一篇] 如何隱藏自己的程序猿氣息
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表