据2023年数据显示,Cocos引擎全球游戏市场的占有率约为20%,国内手游占有率约为40%,在国内手游市场中,不少热门游戏均为Cocos引擎研发,如《捕鱼达人》、《梦幻西游》、《剑与远征》等。
而在近年来国内火热的小游戏赛道,Cocos引擎占有率则高达64%。其内置的H5引擎、免费开源、轻量化等优势,得到众多小游戏开发者青睐,爆款小游戏《羊了个羊》就是由Cocos引擎研发。
与 Unity 相比,Cocos引擎的优势在2D画面渲染方面表现突出,更契合中小型游戏的需求。但同unity一样,Cocos引擎同样绕不开安全问题,由于其开源的特性,针对Cocos引擎的破解更为猖獗。
Cocos引擎的主要资源、代码文件位于包体中 assets/ 目录下,我们以 JavaScript 脚本为例,资源储存在 .JSC 文件中。由于文件无法直接打开进行编译,破解者会在引擎启动工程中找到 libcocos2djs.so 文件,这里储存着秘钥。
libcocos2djs.so文件储存着Cocos秘钥
随后,破解者会尝试将 .SO 文件放入 IDA 等工具中进行反汇编,通过搜索 applicationDidFinishLaunching ,即可找到秘钥,最后将秘钥进行编译即可得到资源、代码文件。
使用IDA工具查找Cocos引擎秘钥
此外,Cocos引擎中还有另一种脚本语言 Lua,相对于 JavaScript ,Lua 更适合制作非 h5 游戏,也同样面临着严重的破解风险。
由于 Lua 是一种解释型语言,所以 Lua 虚拟机可以直接解释执行 Lua 源代码,这就导致许多游戏开发者直接将 Lua 源代码打进 apk / ipa 中。
这种操作相当于直接泄漏了游戏源代码,大大降低了外挂制作门槛,更有可能被拿去做换皮肤二次开发。
FairGuard观察到,部分厂商采用了LuaJIT、自定义Lua等手段,但在面对专业的反编译器及黑灰产猛烈攻势,还是难逃被破解的命运。
反编译器luadec
资源文件作为游戏的重要资产,里面储存着图片、代码、音视频等重要资源,尤其是Cocos引擎中的lua文件,一旦泄露会造成竞品抄袭、知识产权受损、游戏内容剧透、篡改游戏资源制售外挂等一系列严重问题。
如何有效对Cocos引擎进行加密,提高破解门槛,成了游戏厂商的必修课。针对上述问题,FairGuard制定了一套针对Cocos引擎的加密保护方案:
◆ 引擎模块加固
使用业界独创的无导入函数SO加壳对游戏引擎模块进行加固,保护游戏代码不被分析,防止破解者的进一步操作。
FairGuard加固后IDA导出表中无SO函数
◆ JS脚本加密
使用高强度算法对JS脚本进行加密,并防止通过HOOK破解脚本。
◆ C++代码加密
对C编译后的动态库进行加固,防止被反编译。
◆ lua脚本加密
采用深度加密的方式,确保 Lua 脚本无法被直接解密,支持ulua/tolua/slua/xlua等不同 Lua 的脚本加密,同时对 Lua 解析模块进行加固。
正常的字节码:
我们保护后的字节码:
◆ 资源加密
FairGuard加密进行了特殊构造,加密方案只对核心关键位置做加密处理,对游戏加载速度、运行流程程度的几乎没有影响,实现了无感知。
◆ 反外挂
除了各类加密保护,FairGuard加固方案还提供行为检测手段及反修改器、反调试、反注入、反变速等反外挂功能,更好的保护游戏安全。
◆ 防破解
采用FairGuard业界独家技术「无API签名校验技术」,从底层出发,对游戏的引擎与代码进行加密处理,可以针对游戏包签名和文件完整性进行多重校验,防止游戏被植入恶意模块、剔除广告等。
此外,FairGuard Cocos引擎的加密保护方案还具备以下优势:
◆ 低性能开销
纯native方案,安全模块都是C++编写,效率很高。加解密算法使用私有混淆和精巧构造,极大减小性能开销,加固前后几乎感觉不到影响。
◆ 多端互通,支持热更
FairGuard Cocos引擎加密方案支持 Android / iOS / PC / H5平台,支持资源在线热更。
◆ 操作便捷,接入成本低
使用非常简单,只要运行一个命令行即可完成对整个游戏资源的加密。