欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Unity Assetbundle资源加密方案

程序员文章站 2022-03-22 10:12:31
独创了加密强度高,性能开销小的Assetbundle资源加密方案,支持Android/iOS双平台,支持在线下发的ab包加密,前网易易盾核心团队开发...

一、       Assetbundle资源被破解解密的危害

       Unit从5.x版本之后,Assetbundle资源使用越来越广泛,ab包里可以包含图片、视频或者脚本,都是游戏的知识财产,如果被破解者或者竞争对手解开,拿到里面的内容,对游戏是个很大的损失。

      Ab资源被解密抓取,除了知识财产损失外,也会对游戏运营产生很大影响。比如游戏包内的活动资源,被提前解开剧透,会大大影响活动效果。另外资源如果被修改还会产生外挂效果。

      比如下图,资源材质被修改成透明,产生了透视效果。

Unity Assetbundle资源加密方案

 

二、       Ab资源加密方案实现原理

      现在很多游戏都认识到Assetbundle资源加密的重要性,网上也能找到相关的加密文章,比如雨松mono提供的方案,对整个资源做加密。这种方法的缺点非常明显,Ab资源占到游戏很大体积的比例,如果全部这样做加密,对性能影响会非常大。

      如何对ab资源加密同时,解密消耗还很小,这个问题成为很多游戏的痛点。

      FairGuard手游加固研发团队,花费大量时间对unity引擎做黑盒分析,弄清楚了Assetbundle的加载机理以及其文件结构。

      制定了如下的加密方案:

     首先通过对Assetbundle文件进行结构解析,找到资源文件的核心文件块,对核心文件块进行加密,然后在游戏运行时,对unity引擎Assetbundle加载时机进行埋点,在埋点处对核心文件块进行解密。

三、       Ab资源加密方案的优点

      这个方案有如下优点:

1.       只有资源被加载的时候才会解密,不会增加启动延时

2.       加密强度很高,加解密算法进行了自定义混淆,让破解者无法分析出算法,算法流程图如下所示:

Unity Assetbundle资源加密方案

3.       兼容性高

通过Android SO加壳或iOS 静态hook导入的纯native方案,兼容所有32位和64位指令集

4.       解密速度非常快。

有如下两个原因

1)       因为核心文件块很小,不随整个资源文件大小而变化。使用主流手机测试,300个资源文件一次性解密,额外增加的解密时间不到10ms。

2)       加密算法虽然做了高强度自定义混淆,但是混淆都是经过精心设计,在增加复杂度的同时,兼顾了效率,运行开销很小

5.       支持资源在线更新

6.       支持Android/iOS双平台

两个平台ab资源加解密算法通用,即使在线下发2端通用的加密过的Ab资源,也可正常加载 

四、       Unity资源加密使用方法

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

Unity Assetbundle资源加密方案

这个命令行对游戏资源加密的同时,也会对游戏内的脚本做mono dll 加密或者il2cpp加密。同时也可根据配置选项,增加防破解、防外挂(反修改器、加速器、虚拟机、云手机)等功能。

另外也支持对单独的AB包加密,也是只要一条命令行即可。

结语:

FairGuard专注于unity游戏加固,深耕技术,致力于打造业界顶尖的游戏加固产品。公司开发团队都是来自于网易易盾的核心人员,创始人专注于安全领域10多年,前网易易盾手游保护负责人,从0到1主导了易盾手游保护项目。

本文地址:https://blog.****.net/qq_46702493/article/details/107316300