【技术干货】手游拆包乱象丛生,客户端被玩家轻易破解的背后到底有多少隐患?
2018/02/23
从正月初五起至正月初九,我们每天将推送一个主题的“旧文回顾”,涉及运营、策划、美术、技术、营销等领域,今天为技术篇。 |
如今在很多手游的贴吧里,玩家除了等待官方的更新公告,还会期待着一部分“技术大佬”的资源更新。
这些玩家口中的大佬会对热门手游的客户端进行破解,将里面的素材扒出来,打包上传度盘云盘,甚至国外网盘里,并给出详细的指导教程,供玩家下载。这些素材,既包含玩家可能没见过的未解锁内容,也会包含一些游戏还没有开放的提前更新内容。由于这些资源基本通过简单拆解游戏包体就得到了,所以玩家都称这种做法为“拆包”。
在业内,拆包属于破解客户端的一种行为,在商业竞争当中也属于家常便饭的手段之一,几乎每家厂商都会去破解别家的客户端,一探究竟。只是与之不同的是,大批量玩家期待着游戏被破解的情况,在近两年才逐渐蔓延开来。
被拿到台面上的拆包乱象
从网上被曝光的数据来看,搜索关于游戏拆包的信息可以得到近230万条相关内容,缩小到手游领域则能找到45万条,2015年到现在是手游拆包事件发生最频繁的时间,总共能搜索到近33万条相关内容。
可以看到被拆包的手游,几乎覆盖了整个市场头部的重点产品,《王者荣耀》《阴阳师》《梦幻西游》当然不在话下,甚至一些源自海外的热门游戏如《皇室战争》《Pokemon GO》《炉石传说》都遭遇过类似的待遇。如今在淘宝上简单搜索,就能看到各种出售热门手游原素材的商品。
只是上述产品大多没有被拿到台面上来讨论。被讨论最多的是《火影忍者》《碧蓝航线》《龙之谷》这些游戏,而且很大的一个共通点,玩家对他们讨论最多,诉求最大的,大多集中在美术素材上。
仔细检索以往被拆包的游戏,还能发现更多类似的现象,而且多集中在二次元、动漫题材的产品中。
对于上线已久的游戏,诸如《战舰少女》《火影忍者》,拆包的诉求一直存在,经常有玩家催更,坐等新版本资源的流出。类似《战舰少女》等游戏还有专门的拆包吧。
比较典型的一例是《少女前线》,这款产品在今年初曾计划与《苍翼默示录》进行IP联动,而后有玩家自行破解客户端,提前获得了联动角色的美术素材,并进行了曝光。
随后少女前线官方给出了回应,由于活动还未上线内容就遭到提前曝光,于是官方认为该玩家的行为对游戏造成了侵权,并表示将采取法律手段追究责任。
而且这种情况并不仅此一次,《少女前线》的游戏内容曾被多次拆解,相关美术、声优语音资源也被散布在网络中。
这不仅仅暴露了拆包事件本身的问题,因此带来的观点对立,也一直是部分玩家争执的话题。
除了《少女前线》,同样声势浩大的还有《钢铁少女》的被拆包的事件。《钢铁少女》推出以后,由于UI和玩法上让玩家感到与《战舰少女》雷同,于是有玩家指出可能存在抄袭的嫌疑,并进行了代码层面的详细对比,进一步论证其在数据上抄袭的可能性。
自从二次元游戏火了以后,这个领域基本所有热门产品都被拆包,被拆出的素材也在玩家间有着不同程度的传播度,比如最近热门的《碧蓝航线》,米哈游的力作《崩坏3》,此前市场动作频繁的《Love Live!》,以及早先成绩不错的《乖离性百万亚瑟王》。
对于拆包这个事件的本身,不同人群表现出的态度可以说完全不一样。
从大部分玩家的角度而言,拆包并不是自己做出的行为,只是看到网上有新的资源,便拿来使用,原则上是处于局外人的立场。但对于喜欢的游戏,他们必然会积极关注并参与讨论,结果上看他们的需求推动了一直以来的拆包行为。
然而对很多厂商来说,这件事情其实非常令人困扰。首先活动素材的提前曝光会打乱宣传推广的节点,其次游戏内素材流出后存在被盗用、甚至商用的风险,比如非官方授权制作的周边等等,最后也是最重要的,对于凭借原创素材盈利的产品来说,素材的流出会直接导致内容的贬值。
在玩家和厂商中间一直处于舆论风口的,还有一批对拆包资源进行推广的人。他们可能是吧友,可能是技术大佬,也有可能是一些公众号、自媒体,出于满足玩家期待的理由,会定期更新相关的拆包资源,甚至有的公众号会借此吸粉。
也有一部分纯粹为了技术研究和兴趣爱好而拆包的人。
在一位曾拆解过《战舰少女》《碧蓝航线》《乖离性百万亚瑟王》的用户看来,拆包只是满足自己的收藏欲,以及对技术的兴趣。“我有一个原则,绝不发布完全完成的解密方法与解密图片,都会保留最后一步,”这位用户向葡萄君强调这一点,他还向葡萄君分享了一些技术研究的博客,里面公开了一些拆包工具,也有其他用户针对拆包思路进行讨论。
透过这些现象能看出,玩家、厂商的利益很难维系到一起,玩家的内心永远追求的是新鲜感,追求更快的内容,而官方需要一步步放出内容,并不能全盘托出。拆包者成了两者之间端盘子的人,自然会有嗷嗷待哺的玩家不停催更,拆包也就成了常态。
但就像一位不愿意公开自己拆包成品的用户担忧的:“总有人是为了偷盗素材,不是吗?”厂商总会担心这样的问题,从而封禁删帖,限制素材的传播,反过来也激起了一些拆包者的不满,促使他们继续拆包、公开资源,甚至引起激烈的争执。
导致拆包乱象的两大问题
促成这些现象的根本原因有两个:一是二次元产品的技术软肋。二是游戏价值向内容迁移时产生的新矛盾。
一方面,从技术层面讲,拆包本身不是一个复杂的事情,随着工具的发展、网络教程的增多,很多游戏包体都可以被轻易拆开。一位用户告诉葡萄君,卡牌收藏类游戏都非常容易拆,他自己所用的工具都是网上能搜到的,唯一用到的技术是图像处理。
尤其是采用了成熟引擎的手游,由于它们的资源格式都是固定的,所以很多游戏都能被简单破解。比如使用Unity引擎研发的游戏,在UnityStudio环境下就能导出游戏里的图片、模型等资源。
对于一些防范意识不强的厂商来说,底层代码也存在不小的风险。“老一点的使用Unity引擎的游戏,还可以用 NET_Reflector 反编译代码来看游戏里的机制,比如去看游戏里伤害计算公式、武器实际参数等。”在这位会拆包的用户看来,拆包本身并不是高技术难度的事情。
而我们知道,二次元产品一直以来都存在技术软肋,这些问题可不仅存在于功能实现方面。在程序加密方面,使用已有解密方法的公开技术的产品存在很大的风险。
“我曾经试过一款游戏,用网上的工具可以提取出图片,然后连反编译都不用,直接用编辑器搜索就可以拿到异或字符串,”在这位拆包者看来, 很多时候游戏被解密的原因,完全在于厂商的安全意识薄弱 :“这和把钥匙放在小偷眼前有什么分别?”
另一方面,手游产品的变化,让需要被保护的核心内容也产生了变化。对于二次元游戏来说,题材和素材本身就是最大的卖点。比如原画、立绘和配音,这些都是邀请了知名画师,或者知名声优来制作的,除了本身投入的资金价值外,这些内容还起到支撑运营、营收的重要作用。
在传统手游当中,大多数产品的题材都采用了三国、西游等通用IP,在UI设计上也沿用了很多成熟模式,使得皮相本身远远不及系统架构、玩法设计、数值体系那么有价值。再加上很多量产游戏采用了换皮的套路,更是弱化了表象本身的价值。
而随着内容时代的到来,题材的新颖、品相的包装、内容的设计,反而更能吸引用户的东西。比如《阴阳师》的题材创新带动了强劲的社交话题,《碧蓝航线》对内容的包装,也在一个老品类中做出了新的高度。
只是被拆包以后,这些本能为产品带来更多价值的东西,变成了提前被用户消费的资源,甚至有可能沦为话题炒作、商业吸睛的道具。于是,传统手游中未被高度关注的素材资源,在如今的市场中有了更大的价值,其被非正常曝光所带来的问题也就更突出了。
安全意识薄弱带来的隐患
不仅局限在二次元领域,对于整个手游行业来说,拆包所暴露出来的问题还有很多。
从小的方面来看,游戏原创的素材被盗用几乎已经成为常态,游戏本身享有著作权的产品总是存在被盗用的风险,如果仅作为玩家自己使用,风险相对小一些,但更恶劣的情况是被用作商业目的,比如广告营销、直接贩售,或是盗用生产相关周边产品,诱导用户消费。对于重视IP培养,以及游戏衍生价值的产品来说,这一点的风险可小可大。
进一步来看,拆包还会带来核心内容泄露的风险,而这对产品的影响是更加直接,极其巨大的。核心代码的泄露,直接会导致数据被竞品复用,代码本身也容易被模仿和抄袭。游戏行业内的破解竞争虽然几乎不在公开场合被提及,但竞争一直异常激烈。
葡萄君也咨询了很多资深技术从业者,了解到通常大厂都有很强的防范意识,类似腾讯网易的产品,几乎很难通过反编译获得其源代码。
而拆包现象的存在,也会带来一些厂商之间的纠纷。
例如曾有媒体质疑乐动卓越《我叫MT3》盗用《神雕侠侣》资源、数据的事件,甚至详细指出,在当时《我叫MT3》的游戏版本中,简单解压后就能得到与《神雕侠侣》命名规则相同的大量素材文件,且素材的MD5校验码也是相同的。虽然事件没有得出最终的结果,但这样的质疑已经对游戏造成了巨大的影响。
此外玩家质疑《钢铁少女》盗用《战舰少女》游戏数据的事件也引起了大量讨论,甚至有玩家详细对比二者在代码层面的异同。
再往大的方面考虑,底层代码泄露更严重的是导致各种外挂、黑科技的出现,这对游戏本身的伤害更加直接。比如破解游戏以后,他们利用漏洞修改客户端参数和代码,改动技能效果、做智能施法,或者无限刷钻石等,制成功能性外挂吸引玩家购买。还有通过破解,进而制作比如反和谐版等一系列非官方正式版本的包体等等。
中小团队仍须提高防范拆包的安全意识
对于如今游戏行业的大型厂商来说,防范破解已经是家常便饭,而在一些中小团队当中,厂商的防范意识并不强烈。毕竟如果真的有专业破解人员来拆包,加密再好也会存在被破解的风险。
但做和不做的区别依然非常巨大,简单的加密能过滤掉很多不专业的拆包行为,也就能在很大程度上减轻前文中很多产品遇到的问题,而且进行加密本身的成本并不高,加密的方法也很多。
针对中小团队可以采用的加密方法,一些资深从业者也给出了他们的建议:
1. 包体本身来看,首先是可以直接加密资源本身,比如做资源校验,但这个方式对文件的完整性要求很高,可能在打渠道包的时候,会遇到修改后校验失效的问题。其次是按文件校验,但这属于比较消耗的方式,每个文件都拆出来做校验,工作量很大,会影响到游戏性能。
2. 代码层面来看。首先是利用引擎自带的加密功能,比如Unity3D引擎是有一些措施去防拆包的,可以在工程设置里面设置加密,这样游戏的C#代码就不会被轻易破解了。其次是直接在底层加密,很多大厂都选择用这样的做法,把Unity底层动态链接库的代码改掉,写入加密算法。
3. 对于更新内容的加密,原则上加密方式与包体本身是一样的。比如如果采用热更新技术比如Lua,可以直接把Lua代码做一个加密算法,由于Lua在更新中也是以文本资源的形式存在的,除非别人知道你的加密方式,否则就很难破解。
4. 对于内存方面的修改行为,主要需要通过服务器校验来规避。
5. 可以尝试借助第三方的免费加密工具,但这些工具没有付费版功能齐全,存在一定的风险。另外可以考虑和第三方安全厂商合作。
6. 如果能力足够,可以尝试自研引擎。自研引擎本身就是一种加密的状态,别人不知道你的引擎如何定义资源的格式,肯定也就没法轻易拆开游戏的包体。
只是这里的方案也不是十全十美的。对于注重资源的游戏而言,如前文提到的绝大多数二次元产品来说,加密资源是一件消耗非常大的事情,如果每个资源都需要在客户端运行解密算法,那么游戏运行就会变得非常吃力。而对于这些游戏来说,资源的重要程度并不亚于代码,所以很多时候必须在加密上采取一些折中的方案。
有些时候,厂商需要对游戏更新内容进行更严格的规划,以避免提前泄露资源的问题。也可以从从游戏外围着手,正确引导玩家获取想要的资源,比如定期推出一些壁纸,素材包,表情等等,这也能在营销推广、刺激用户活跃度、引导二次创作内容等方面,带来更正向的效果,让玩家逐渐脱离对拆包内容的依赖性。
来源:游戏葡萄 阅读原文
叶子猪每日行业播报系叶子猪游戏网出品的资讯栏目,仅作于汇聚互联网游戏行业的每日资讯,如需查看文章出处可点击阅读原文。