腾讯游戏安全与Unity合作打造安全方案 游戏一键加密

  5月12日,在上海举办的Unite Shanghai 2019全球开发者大会上,全球领先的游戏引擎巨头Unity和腾讯游戏安全宣布合作,双方正联手打造一款简单易用的游戏加密安全方案——UPS,全称Unity Protect Solution,Unity保护解决方案。它是一款跨平台的游戏保护方案,能够根据游戏的不同编译方式提供不同的保护方案。不仅如此,UPS被集成到了Unity开发环境中,开发者只需要在UnityEditor中勾选保护选项,就可以在构建时加密游戏,真正做到了一键加密。该方案旨在为游戏开发者提供更加专业和更高防护等级、并且简单易用的游戏安全保护手段,为游戏保驾护航。

  腾讯游戏安全作为腾讯游戏公共研发运营体系中专注于游戏安全的团队,自2006年开始,就投身于外挂对抗和保护游戏的最前线,有着十余年的安全技术对抗和运营经验,多年来,保障了像LOL、CF、DNF、王者荣耀、刺激战场等千万活跃量级端手游的安全运营。

  腾讯游戏安全客户端保护负责人陈小虎在Unity大会上的分享

  Unity引擎是全球知名游戏、VR/AR开发平台,为全球超过990万的注册开发者提供服务和解决方案,如:Unity Asset Store资源商店、Unity Analytics分析、Unity Ads广告服务、Unity Connect 等。

  Unity游戏的安全风险

  对广大的Unity游戏开发者而言,游戏安全是一个尤其需要被关注的问题。使用Unity-Mono模式编译的游戏,会将C#脚本代码编译为IL中间码,发布到游戏客户端,这种中间码容易被反编译出源代码,被一些不法分子破解,从而导致外挂或者盗版游戏的出现。

  而对于Unity-IL2CPP编译的游戏而言,使用IL2CPPDumper等符号解析工具可以解析出游戏包中的global-metadata.dat包含的符号信息,包括类名、方法名以及方法对应的偏移。这些信息容易被攻击者利用。

  global-metadata.dat保护的符号信息

  在此背景下,Unity和腾讯游戏安全的合作,无疑是广大Unity游戏开发者的福音,通过UPS,开发者将能够更加便捷和低成本地打造出色的游戏,极大地提升游戏的安全防护等级。

  对Unity-Mono游戏,目前市面上主流的保护方案是对脚本文件进行加密,在游戏加载时进行解密,这种加密方式的破解门槛较低。UPS在当前方案的基础上,增加了方法加密,实现了运行时动态解密,即使攻击者在内存中获取到脚本文件,也无法反编译。

  l 方法加密

  使用方法加密后ilSpy无法反编译

  由于脚本文件将所有的字符串以明文形式保存在一个明确的结构中,攻击者能够通过这些字符串轻易获取代码中的敏感信息。基于此,UPS采用字符串加密,使得反编译出的类名、方法名为乱码,进一步提高了代码破解难度。

  l 字符串加密

  使用字符串加密后反编译软件解析出的名称乱码

  除此之外,UPS还使用了指令加密。加密之后的指令不再是Mono引擎能够识别的标准opcode,如果没有执行解密过程,Mono引擎将不能正确的解释和执行这些指令。

  l 指令加密

  以下图为例

  使反编译软件失效

  可以看到,每次加密后的指令表都是随机的,并且反编译出来的代码也是错误的,能够使市面上所有主流反编译器失效。

  而对Unity-IL2CPP游戏,通过对global-metadata.dat文件进行文件加密和字符串加密,可以让通用工具无法解析,这样攻击者就无法拿到游戏的敏感信息。

  此次Unity和腾讯游戏安全联合打造的保护方案,无需对游戏引擎打热补丁,不会在游戏代码工程文件中导入第三方资源包,对游戏影响小,稳定性高,兼容性强且同时支持文件级、方法级、指令级等多级别加密,保护强度高。

  UPS集成到Unity开发环境,随着Unity版本发布。用户只需要勾选Security Settings页面中的Enable Security Build复选框,即可在构建游戏时加密,无需重新签名,并且同时支持Windows 和Android双平台保护,方便易用。

  一键部署

网友评论