Unity(iOS)AssetBundle资源内存动态分块加密方案
一、背景
AssetBunlde资源包是unity引擎游戏对资源(声音、图片、脚本等)的压缩包,那我们为啥要保护AssetBunlde(以下简称AB包)?对于一般技术人员都清楚, 游戏逆向者(游戏外挂制作者)一般通过游戏资源修改工具(AssetStudio、UABE)修改之后重打包实现某种程度正常游戏达不到的功能,例如射击类修改资源后可以透视,等等,下面是某作者技术文章就说的很明白怎么破解AB包。
那市面上iOS端有没有比较好的加解密方案呢?通过调研,发现有些是Unity源码级别的,但是第一、这对开发者的技术要求比较高,第二、这种加解密只能做到整体加解密(会在内存中某个时间断暴露解密后资源),所以说目前还没发现针对iOS端的“AB包内存动态分块加解密技术”,在此背景下,fariguard研发出了针对iOS端AB包资源独家内存动态分块加解密方案(此方案在不影响游戏的运行效率下极大程度保护了AB资源安全,且支持在线更新)
二、iOS侧技术难度
有些同学就会问,为啥iOS端相比安卓端就难实现呢?有如下几点原因:
1、 iOS整个系统是闭源状态,APP运行时权限限制严格,代码段只能执行、数据段只能读取
2、 iOS APP唯一上架渠APP Store,所有APP上架到APP Store之前都会受到苹果的严格审核。
那么FairGuard通过独家静态HOOK技术,通过解析AssetBundle文件格式进行Patch关键位置实现了内存动态分块加解密方案,这样就避开了由于苹果闭源导致App运行时权限不足以及上架问题。
三、具体实现方案
3.1 内存动态加解密方案
3.2.1、 概述-寻找最佳Patch函数
通过寻找最终定位在libiPhone-lib.a里面的ArchiveStorage类,所有的上层加载AB资源的接口都会调用这个函数并把ab资源加载到内存。
3.2.2、 实现思维图导图如下
3.2.3、 方案优点
四、加密前后对比
4.1、 加密前后AssetBundle资源效果
4.2、 加密后APP启动效果
Unity(iOS)AssetBundle资源内存动态分块加密方案相关推荐
- unity 异步加载网络图片_一个非常好用的AssetBundle资源加载器
Loxodon Framework Bundle是一个非常好用的AssetBundle加载器,也是一个AssetBundle冗余分析工具.它能够自动管理AssetBundle之间复杂的依赖关系,它通过 ...
- 【Unity】AssetBundle简单的加密解密
Unity游戏如果不加密的话资源就能用AssetStudio轻易破解出来,如果用Mono方式打包连代码也可以轻易反编译. 好在Unity出了IL2CPP方案,既提升了性能又解决了代码安全问题.Unit ...
- Unity骚操作:Spine动画打包成AssetBundle资源到安卓平台时,材质丢失的问题解决方案
目录 Spine动画打包成AssetBundle资源到安卓平台时,材质丢失. 如果真的特别需要在u3d编辑器中显示为正常,可以手动在编辑器中的右边Inspector面板重新选择一下材质球的shader ...
- Unity iOS 使用 ASTC 格式纹理实践
引言 上一篇文章描述了如何在不修改自定义渲染组件的前提下使用 alpha 分离的纹理来提升 iOS 的透明压缩纹理质量(见这里:上一篇的链接). 在这个方案投入项目开始使用一段时间之后,UI 同学又来 ...
- 知物由学 | iOS AssetBundle资源保护
在游戏的制作过程中,开发者都会考虑一个非常重要的问题,即如何在游戏运行过程中对资源进行动态下载和加载.为此,Unity使用了AssetBundle这一技术来满足开发者的需求.那么,什么是AssetBu ...
- Unity 3D中的内存管理与优化游戏运行性能的经验
Unity3D在内存占用上一直被人诟病,特别是对于面向移动设备的游戏开发,动辄内存占用飙上一两百兆,导致内存资源耗尽,从而被系统强退造成极差的体验.类似这种情况并不少见,但是绝大部分都是可以避免的.虽 ...
- unity 打包AssetBundle
unity提供了assetbunlde机制,下面介绍一种方法将指定目录下的所有文件打包成AssetBundle 先说明步骤,再上代码. 步骤一.选择要打包成assetbundle的目录,本案例使用as ...
- 全面理解Unity加载和内存管理
转载自:http://www.ceeger.com/forum/read.php?tid=4394 最近一直在和这些内容纠缠,把心得和大家共享一下: Unity里有两种动态加载机制:一是Resourc ...
- 【Unity3D日常开发】Unity中的资源加载与文件路径
推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有 ...
最新文章
- “ static”关键字在课程中做什么?
- linux下面的chrome总是跳出xdg-open怎么办
- 策略模式在jdk Arrays 中使用
- s3c6410 jpeg编码 linux,S3C6410 裸机硬件JPEG解码
- 文本分类(下) | 卷积神经网络(CNN)在文本分类上的应用
- 8.4. Socket 方式
- tf.transpose()个人理解,高纬度的变换,可以将部分维度看成黑盒(整体)
- 轻量级服务器与云服务器的区别
- 个人站长 你必须注意的域名细节
- nginx 逻辑运算
- 快速突破面试算法之栈与队列结构篇
- mysql数据库管理与开发pdf_深入浅出mysql数据库开发、优化与管理维护.pdf
- 中兴新支点Linux国产操作系统安装windows字体的方法
- java操作word转换pdf加水印
- c语言写长方形体积公式是什么,长方体的体积公式 长方体的体积公式是什么
- 互联网专家资源分享(二)
- A Self-paced Multiple-instance Learning Framework for Co-saliency Detection文章阅读
- VirtualBox如何添加ISO文件
- Chrome浏览器整个网页截图
- linux centos rar解压,Centos解压rar压缩文件
热门文章
- 培智 计算机 教研活动,“感受 创意 表达”以学生为中心的课堂教学研讨——北京市培智教研组走进“海景门昌”特教联盟开展教研活动...
- 程序员称子弹短信存在抄袭,罗永浩回复:感谢知乎蠢萌科学家们!
- Android防止截屏
- “windows无法连接到打印机”问题的解决
- 笔记本计算机无法启动怎么解决,笔记本突然无法开机的原因_笔记本突然关机无法开机怎么解决-win7之家...
- matlab中round函数的使用方法(四舍五入)
- vue3 + wow + animate
- 原始部落题材的2.5D角色扮演MMO回合制手游——最后的原始人
- http代理时选择静态IP好还是动态ip好
- Excel删除空白行(亲自实践)