在游戏的制作过程中,开发者都会考虑一个非常重要的问题,即如何在游戏运行过程中对资源进行动态下载和加载。为此,Unity使用了AssetBundle这一技术来满足开发者的需求。那么,什么是AssetBundle呢?

AssetBundle是Unity中的一种资源包,这种资源包可以是Unity游戏内要用到的几乎所有资源,例如:模型、贴图、纹理、预设、场景、脚本等。它是资源的一种集合,可以理解为资源的一种压缩包。开发者,通过AssetBundle的方式将游戏中所需要的各类资源打包压缩并上传到网络服务器上,当游戏运行时再从服务器下载该资源,从而实现资源的动态加载与运行。基于它的压缩(缺省)、动态加载等特征,很容易解决以下问题:

(1)实现资源的热更

(2)减少包体大小,方便游戏做分包处理

一、AssetBundle资源安全性

对于游戏开发者来说,游戏内的资源是重要的资产,保护游戏资源变得越来越重要。原始的AB文件,可以通过工具(比如:AssetStudicGUI)直接查看游戏中的资源,如下:

这样的话,游戏资源就容易被盗取,造成不可预估的损失。更重要的是,未加密的AB资源同样会被游戏外挂作者利用,给游戏带来致命性的打击,影响游戏的平衡。例如:

○修改图片资源可以达到透视的目的

○修改游戏脚本可以打出更高的伤害

○脚本暴露,遭遇外挂开发者的破解,影响游戏数值平衡等

○资源暴露,存在剧透、竟品分析风险

由此可见,AB资源让我们在获得便利的同时,也带来了一系列的安全问题,这使得针对AB资源的保护显得越来越重要。

二、AssetBundle资源保护方案

尽管AB资源的保护迫在眉睫,但是市面上的依然缺乏完美的加密方案。iOS闭源的特性,也使得iOS的AB资源保护方案难以入手,使开发难度直线上升。相比Android,iOS APP获取到的权限更低,在非越狱环境下能使用的方案十分有限。使用整体加密方案,解密性能低,影响游戏的启动速度、画面流畅感。面对开发环境和黑灰产的双重压力下,网易易盾全新一代的AB资源加密方案也应运而生。

方案整体逻辑如下:

Unity 不同的版本提供了不同的接口以供调用,在实现上也有些许差异。而且不同的开发者也有不同的使用习惯,所以需要开发通用方案来兼容各种情形。通过对底层的函数进行操作,以达到通用的目的,从而实现AB资源的动态加载和解密。

我们的资源加密方案有以下特点:

三、AssetBundle资源保护效果

AssetStudicGUI可以直接查看AssetBundle文件,通过它可以轻易获取任何脚本、图片等资源信息。如下:

但是,对AB文件加密后,我们再次打开,可以发现不仅加密了资源文件,还对目录进行了隐藏。这样就能更加有效的防止资源被窃取,最大限度的保护AB文件不被破解。

我们直接以一个图片文件为例,在AB文件中标志为:CAB-1b46b1b14dfb14fbe428b0ff40abfaca

加密前的二进制数据如下:

加密后如下:

通过二进制对比,可以看到图片里的数据已经加密:

四、总结

AB资源让开发者获得了极大的便利,但其本身存在的安全问题,也使得对AB资源的保护变得越来越重要。网易易盾AB资源加密经过长久的技术沉淀,已经能够有效的应对AB资源破解,在保证安全的前提下,几乎不影响游戏本身的启动时间以及运行效率。同时,Android和iOS做到极致兼容,同一套加密后的AB资源,可以同时热更给Android和iOS两个平台。

网易易盾通过多年技术深耕,在安全加固、手游反外挂、安全检测、设备指纹、安全组件等方面已经具有相当的优势。为了给我们的客户提供最高质量的服务,我们也将持续完善各项保护功能,为开发者保驾护航。

知物由学 | iOS AssetBundle资源保护相关推荐

  1. Unity(iOS)AssetBundle资源内存动态分块加密方案

    一.背景 AssetBunlde资源包是unity引擎游戏对资源(声音.图片.脚本等)的压缩包,那我们为啥要保护AssetBunlde(以下简称AB包)?对于一般技术人员都清楚, 游戏逆向者(游戏外挂 ...

  2. 人物 | 游戏安全“痴汉”——FairGuard CEO 陈士留创业起步史

    转载媒体对FairGuard CEO陈士留先生的报道 "你做技术的,就是一根筋."有几位前同事曾这么评价过陈士留,而他听及这些,只是腼腆地笑一笑,而后就技术细节和构想,进入新一轮的 ...

  3. 知物由学|游戏开发者如何从容应对Unity手游风险?

    本文由 网易云 发布 "知物由学"是网易云易盾打造的一个品牌栏目,词语出自汉·王充<论衡·实知>.人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会 ...

  4. [小明爬坑系列]AssetBundle原理介绍

    一.简介 Assetbundle 是Unity Pro提供提供的功能,它可以把多个游戏对象或者资源二进制文件封装到Assetbundle中,提供了封装与解包的方法使用起来很便利. 二.移动平台特点 A ...

  5. (转)Unity3D研究院之手游开发中所有特殊的文件夹(assetbundle与Application.persistentDataPath)...

    这里列举出手游开发中用到了所有特殊文件夹. 1.Editor Editor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor就可以.比如目录:/xxx/xxx/Editor  和 /Edi ...

  6. 关于Unity中从服务器下载资源压缩包AssetBundle的步骤

    AssetBundle 1: 在Unity中,能为用户存储资源的一种压缩格式的打包集合,他可以存任意一种Unity引擎可以识别的资源: 模型,音频,纹理图,动画, 开发者自定义的二进制文件; 2: 这 ...

  7. unity 异步加载网络图片_一个非常好用的AssetBundle资源加载器

    Loxodon Framework Bundle是一个非常好用的AssetBundle加载器,也是一个AssetBundle冗余分析工具.它能够自动管理AssetBundle之间复杂的依赖关系,它通过 ...

  8. Unity iOS 使用 ASTC 格式纹理实践

    引言 上一篇文章描述了如何在不修改自定义渲染组件的前提下使用 alpha 分离的纹理来提升 iOS 的透明压缩纹理质量(见这里:上一篇的链接). 在这个方案投入项目开始使用一段时间之后,UI 同学又来 ...

  9. 【小松教你手游开发】【unity系统模块开发】Unity5.5.2UI打包AssetBundle

    之前已经有几篇文章写打包AssetBundle,但毕竟没有实际在项目中写过都写的比较浅. 刚好最近项目更新Unity5.5.2就顺便由我来更新ui打包流程 这里就把这次的经验写一下 这里还是稍微解释一 ...

最新文章

  1. 研究生实名举报深圳大学导师强迫学生延迟毕业,违规报销,各方回应
  2. 清华大学大数据能力提升项目三名学生斩获2017年中国高校SAS数据分析大赛亚军
  3. GD32定时器输入捕获例程
  4. 2018python培训-参加python培训要多少钱?
  5. redis主从架构宕机问题手动解决
  6. Java并发编程的基础-线程的生命周期
  7. Dungeon Master(三维bfs)
  8. 如何将markdown转换为wxml
  9. combinatorial_identities习题1.1分析与解答
  10. install texlive-full on ubuntu
  11. ElementUI自定义主题颜色
  12. docker快速安装nginx以及实现反向代理(上)
  13. LPC2478时钟模块详解
  14. centos7下安装zmap
  15. 《Java多线程编程核心技术》学习笔记(1)
  16. matlab double 取值,matlab定积分计算结果为表达式,我只想得到数值。用double(ans)也没用,不知道还有没有其他方法!...
  17. 分布式 | dble 读写分离场景下为什么普通的读 sql 发送到了 master 实例上
  18. C++11新特性内存模型总结详解--一篇秒懂
  19. 有哪些赚钱的软件?说说我是如何每天赚上千元的!
  20. 求一个3×3矩阵对角线元素之和。

热门文章

  1. rog主板php,强劲的扩展能力 - 华硕ROG Zenith Extreme主板评测:地表最强X399 - 超能网...
  2. 线性回归中的最小二乘法和梯度下降法比较
  3. python微博热点_50行Python代码,一键获取微博热点
  4. 五年级计算机课教什么东西,五年级信息技术下教案
  5. WARN Error while fetching metadata with correlation id 1 : {first=LEADER_NOT_AVAILABLE} (org.apache.
  6. 云服务的未来:下一个淘宝
  7. ubuntu系统vim常用命令学习以及ubuntu软件下载安装
  8. 吞下西甲英超中超成体育大胃王,PPTV还有哪些大招?
  9. iOS之音视频的理论和直播相关知识
  10. 联想小新air15 2021 16G版魔改加装固态硬盘