知物由学 | iOS AssetBundle资源保护
在游戏的制作过程中,开发者都会考虑一个非常重要的问题,即如何在游戏运行过程中对资源进行动态下载和加载。为此,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资源保护相关推荐
- Unity(iOS)AssetBundle资源内存动态分块加密方案
一.背景 AssetBunlde资源包是unity引擎游戏对资源(声音.图片.脚本等)的压缩包,那我们为啥要保护AssetBunlde(以下简称AB包)?对于一般技术人员都清楚, 游戏逆向者(游戏外挂 ...
- 人物 | 游戏安全“痴汉”——FairGuard CEO 陈士留创业起步史
转载媒体对FairGuard CEO陈士留先生的报道 "你做技术的,就是一根筋."有几位前同事曾这么评价过陈士留,而他听及这些,只是腼腆地笑一笑,而后就技术细节和构想,进入新一轮的 ...
- 知物由学|游戏开发者如何从容应对Unity手游风险?
本文由 网易云 发布 "知物由学"是网易云易盾打造的一个品牌栏目,词语出自汉·王充<论衡·实知>.人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会 ...
- [小明爬坑系列]AssetBundle原理介绍
一.简介 Assetbundle 是Unity Pro提供提供的功能,它可以把多个游戏对象或者资源二进制文件封装到Assetbundle中,提供了封装与解包的方法使用起来很便利. 二.移动平台特点 A ...
- (转)Unity3D研究院之手游开发中所有特殊的文件夹(assetbundle与Application.persistentDataPath)...
这里列举出手游开发中用到了所有特殊文件夹. 1.Editor Editor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor就可以.比如目录:/xxx/xxx/Editor 和 /Edi ...
- 关于Unity中从服务器下载资源压缩包AssetBundle的步骤
AssetBundle 1: 在Unity中,能为用户存储资源的一种压缩格式的打包集合,他可以存任意一种Unity引擎可以识别的资源: 模型,音频,纹理图,动画, 开发者自定义的二进制文件; 2: 这 ...
- unity 异步加载网络图片_一个非常好用的AssetBundle资源加载器
Loxodon Framework Bundle是一个非常好用的AssetBundle加载器,也是一个AssetBundle冗余分析工具.它能够自动管理AssetBundle之间复杂的依赖关系,它通过 ...
- Unity iOS 使用 ASTC 格式纹理实践
引言 上一篇文章描述了如何在不修改自定义渲染组件的前提下使用 alpha 分离的纹理来提升 iOS 的透明压缩纹理质量(见这里:上一篇的链接). 在这个方案投入项目开始使用一段时间之后,UI 同学又来 ...
- 【小松教你手游开发】【unity系统模块开发】Unity5.5.2UI打包AssetBundle
之前已经有几篇文章写打包AssetBundle,但毕竟没有实际在项目中写过都写的比较浅. 刚好最近项目更新Unity5.5.2就顺便由我来更新ui打包流程 这里就把这次的经验写一下 这里还是稍微解释一 ...
最新文章
- 研究生实名举报深圳大学导师强迫学生延迟毕业,违规报销,各方回应
- 清华大学大数据能力提升项目三名学生斩获2017年中国高校SAS数据分析大赛亚军
- GD32定时器输入捕获例程
- 2018python培训-参加python培训要多少钱?
- redis主从架构宕机问题手动解决
- Java并发编程的基础-线程的生命周期
- Dungeon Master(三维bfs)
- 如何将markdown转换为wxml
- combinatorial_identities习题1.1分析与解答
- install texlive-full on ubuntu
- ElementUI自定义主题颜色
- docker快速安装nginx以及实现反向代理(上)
- LPC2478时钟模块详解
- centos7下安装zmap
- 《Java多线程编程核心技术》学习笔记(1)
- matlab double 取值,matlab定积分计算结果为表达式,我只想得到数值。用double(ans)也没用,不知道还有没有其他方法!...
- 分布式 | dble 读写分离场景下为什么普通的读 sql 发送到了 master 实例上
- C++11新特性内存模型总结详解--一篇秒懂
- 有哪些赚钱的软件?说说我是如何每天赚上千元的!
- 求一个3×3矩阵对角线元素之和。
热门文章
- rog主板php,强劲的扩展能力 - 华硕ROG Zenith Extreme主板评测:地表最强X399 - 超能网...
- 线性回归中的最小二乘法和梯度下降法比较
- python微博热点_50行Python代码,一键获取微博热点
- 五年级计算机课教什么东西,五年级信息技术下教案
- WARN Error while fetching metadata with correlation id 1 : {first=LEADER_NOT_AVAILABLE} (org.apache.
- 云服务的未来:下一个淘宝
- ubuntu系统vim常用命令学习以及ubuntu软件下载安装
- 吞下西甲英超中超成体育大胃王,PPTV还有哪些大招?
- iOS之音视频的理论和直播相关知识
- 联想小新air15 2021 16G版魔改加装固态硬盘