Cocos引擎加密方案解析

据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平台,支持资源在线热更。

◆ 操作便捷,接入成本低

使用非常简单,只要运行一个命令行即可完成对整个游戏资源的加密。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/728125.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

XGBoost算法详解

XGBoost算法详解 XGBoost(Extreme Gradient Boosting)是一种高效的梯度提升决策树(GBDT)实现,因其高性能和灵活性在机器学习竞赛中广泛使用。本文将详细介绍XGBoost算法的原理,并展示其在实际数据集上的应…

IO-LiNK简介

什么是IO-Link? IO-Link( IEC 61131-9 )是一种开放式标准串行通信协议,允许支持 IO-Link 的传感器、设备进行双向数据交换,并连接到主站。 IO-Link 主站可以通过各种网络,如现场总线进行传输。每个 IO-L…

北方高温来袭!动力煤却不涨反跌的原因分析

内容提要 北方高温而南方降雨偏多的格局或将继续,整体水力发电量增长可能继续明显增长,但火电增幅可能继续缩小。5月重点火电厂的发电量和耗煤量增速均呈现负增长,耗煤量月度同比下降7%,而重点水电同比大增近40%。我国电力行业绿…

蓝牙模块在智能城市构建中的创新应用

随着科技的飞速发展,智能城市的概念已经逐渐从理论走向实践。物联网技术作为智能城市构建的核心驱动力,正在推动着城市基础设施、交通管理、环境监测等领域的深刻变革。蓝牙模块,作为物联网技术的重要组成部分,以其低功耗、低成本…

档案数字化建设要点

目前,档案信息数字化的现状是档案标准化、规范化滞后和应用软件多乱,这些都严重影响了系统整体水平的提高。档案信息自动化的内涵包括档案工作的各个方面和各个环节,其中首要的是档案业务要规范,档案标准要建立健全和真正实施。档…

springboot弘德图书馆座位预约管理系统-计算机毕业设计源码07028

摘 要 在面对当今培育人才计划的压力,人们需要汲取更多的不同领域的知识来不断扩充自己的知识层面,因此他们对学习的欲望不断扩大,图书馆作为我们的学习宝地,有着不可替代的地位。但是在信息化时代,传统模式下的图书馆…

MySql 各种 join

MySql 定义了很多join的方式,接下来我们用一个例子来讲解。 用到的表 本文用到了两个表s1,s2: 内外连接 测试 1 1 1.select * from s1 inner join s2 on(s1.id s2.id);: -------- | id | id | -------- | 3 | 3 | | 4 | 4 | --------2…

MySQL数据库进阶笔记

第一章 存储引擎 1.1 MySQL体系结构 连接层 最上层是一些客户端和链接服务,主要完成一些类似连接处理、授权认证、及相关的安全方案。服务器也为安全接入的每个客户端验证它所具有的操作权限。 服务层 第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查…

靠这套车载测试面试题系列成功哪些20k!

HFP测试内容与测试方法 2.3 接听来电:测试手机来电时,能否从车载蓝牙设备和手机侧正常接听】拒接、通话是否正常。 1、预置条件:待测手机与车载车载设备处于连接状态 2、测试步骤: 1)用辅助测试机拨打待测手机&…

电商还存在错位竞争空间吗?

“上链接试了,十几分钟,成本5块的东西卖1块5了。”今年618前期,某个电商平台上线了自动跟价功能,有一个卖家尝试了一会儿之后赶紧关了。 又一个618,平台、商家、消费者们又迎来了一次狂欢。只是与往年不同的是&#x…

2024年,收付通申请开通流程

大家好,今天咱们来聊聊关于APP场景中开通微信收付通的一些实用小窍门。在如今的移动互联网时代,很多商家都选择通过APP来提供服务和产品,因此如何在APP中顺利集成微信收付通功能,让用户能够轻松完成支付,就显得尤为重要…

高考志愿选专业,文科生如何分析选择专业?

每到高考时节,学生们最关注的就是专业选择,以及未来职业发展问题,对于文科生来说,面对文科专业的众多选择,很多人都有些不知所措,如何选择适合自己兴趣爱好,又有良好就业前景的工作。从哪些方面…

每天写java到期末考试(6.20)--集合2--练习--6.20

练习1 package QM_Fx;import java.util.ArrayList;public class test{public static void main(String[] args) {//1.创建一个集合ArrayList<String> listnew ArrayList<>();//2.添加元素list.add("点赞了吗");list.add("投币了吗");list.add(…

项目六 OpenStack虚拟机实例管理

任务一 理解OpenStack计算服务 1.1 •什么是Nova • Nova是OpenStack中的计算服务项目 &#xff0c;计算虚拟机实例生命周期的所有活动都由 Nova 管理 。 • Nova 提供统一的计算资源 服务。 • Nova 需要下列 OpenStack 服务的 支持。 Keystone &#xff1a;为所有的 OpenSt…

企智汇:弱电智能化项目工程项目管理系统助力企业项目管理!

在当今数字化时代&#xff0c;弱电智能化项目的复杂性和挑战性日益增加&#xff0c;高效的项目管理变得尤为重要。企智汇弱电智能化项目工程项目管理系统凭借其业务流程化、流程数据化、数据可视化、业财一体化及成本精细化等特性&#xff0c;为项目全生命周期管理提供了全面而…

Mathtype插入word,以及mathtype在word上的卸载

1.Mathtype插入word 花了两个小时&#xff0c;最终得出的极品简单的安装方法&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; mathype下载地址&#xff1a;https://store.wiris.com/zh/products/mathtype/download/windows 下载完傻瓜式安装&#xff0c;不要…

车载测试系列:车载测试流程

车载测试流程是保证软件质量的重要支撑&#xff0c;优秀的团队都必须拥有规范的流程体系支撑&#xff0c;它能够约束测试人员的测试行为&#xff0c;约束测试环境的测试精度&#xff0c;提升测试的覆盖度&#xff0c;保证团队成员工作的协调性。 该测试流程建立的依据&#xf…

变长的时间戳设计

以前的时间戳有32位&#xff0c;以秒为单位&#xff0c;231秒≈68年&#xff0c;从1970年开始&#xff0c;到2038年会出问题。 后来出现的时间戳有64位&#xff0c;以纳秒为单位&#xff0c;263纳秒≈292年。 本次设计的变长时间戳&#xff0c;以32比特为单位&#xff0c;总共…

处理文本内容的命令和正则表达式

处理文本内容的命令 正则表达式匹配的是文本内容&#xff0c;linux的文本三剑客 都是针对文本内容 文本三剑客&#xff1a; grep 过滤文本内容 sed 针对文本内容进行增删改查 awk 按行取列 文本三剑客都是按行进行匹配。 grep grep的作用就是使用正则表达式来匹配文本内…

码蹄集 BD202401 补给

错误解法&#xff1a;简单将取半前后的综合排序后取最小值&#xff0c;这样没有考虑这样一种情况&#xff1a;取半的时机不对&#xff0c;也许取半某个大一点的P之后反而能进一步取一个补给点了呢&#xff1f;&#xff1f;对不对。这样简单排序只不过是“最省钱”的一种&#x…