一、背景

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资源内存动态分块加密方案相关推荐

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

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

  2. 【Unity】AssetBundle简单的加密解密

    Unity游戏如果不加密的话资源就能用AssetStudio轻易破解出来,如果用Mono方式打包连代码也可以轻易反编译. 好在Unity出了IL2CPP方案,既提升了性能又解决了代码安全问题.Unit ...

  3. Unity骚操作:Spine动画打包成AssetBundle资源到安卓平台时,材质丢失的问题解决方案

    目录 Spine动画打包成AssetBundle资源到安卓平台时,材质丢失. 如果真的特别需要在u3d编辑器中显示为正常,可以手动在编辑器中的右边Inspector面板重新选择一下材质球的shader ...

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

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

  5. 知物由学 | iOS AssetBundle资源保护

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

  6. Unity 3D中的内存管理与优化游戏运行性能的经验

    Unity3D在内存占用上一直被人诟病,特别是对于面向移动设备的游戏开发,动辄内存占用飙上一两百兆,导致内存资源耗尽,从而被系统强退造成极差的体验.类似这种情况并不少见,但是绝大部分都是可以避免的.虽 ...

  7. unity 打包AssetBundle

    unity提供了assetbunlde机制,下面介绍一种方法将指定目录下的所有文件打包成AssetBundle 先说明步骤,再上代码. 步骤一.选择要打包成assetbundle的目录,本案例使用as ...

  8. 全面理解Unity加载和内存管理

    转载自:http://www.ceeger.com/forum/read.php?tid=4394 最近一直在和这些内容纠缠,把心得和大家共享一下: Unity里有两种动态加载机制:一是Resourc ...

  9. 【Unity3D日常开发】Unity中的资源加载与文件路径

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有 ...

最新文章

  1. “ static”关键字在课程中做什么?
  2. linux下面的chrome总是跳出xdg-open怎么办
  3. 策略模式在jdk Arrays 中使用
  4. s3c6410 jpeg编码 linux,S3C6410 裸机硬件JPEG解码
  5. 文本分类(下) | 卷积神经网络(CNN)在文本分类上的应用
  6. 8.4. Socket 方式
  7. tf.transpose()个人理解,高纬度的变换,可以将部分维度看成黑盒(整体)
  8. 轻量级服务器与云服务器的区别
  9. 个人站长 你必须注意的域名细节
  10. nginx 逻辑运算
  11. 快速突破面试算法之栈与队列结构篇
  12. mysql数据库管理与开发pdf_深入浅出mysql数据库开发、优化与管理维护.pdf
  13. 中兴新支点Linux国产操作系统安装windows字体的方法
  14. java操作word转换pdf加水印
  15. c语言写长方形体积公式是什么,长方体的体积公式 长方体的体积公式是什么
  16. 互联网专家资源分享(二)
  17. A Self-paced Multiple-instance Learning Framework for Co-saliency Detection文章阅读
  18. VirtualBox如何添加ISO文件
  19. Chrome浏览器整个网页截图
  20. linux centos rar解压,Centos解压rar压缩文件

热门文章

  1. 培智 计算机 教研活动,“感受 创意 表达”以学生为中心的课堂教学研讨——北京市培智教研组走进“海景门昌”特教联盟开展教研活动...
  2. 程序员称子弹短信存在抄袭,罗永浩回复:感谢知乎蠢萌科学家们!
  3. Android防止截屏
  4. “windows无法连接到打印机”问题的解决
  5. 笔记本计算机无法启动怎么解决,笔记本突然无法开机的原因_笔记本突然关机无法开机怎么解决-win7之家...
  6. matlab中round函数的使用方法(四舍五入)
  7. vue3 + wow + animate
  8. 原始部落题材的2.5D角色扮演MMO回合制手游——最后的原始人
  9. http代理时选择静态IP好还是动态ip好
  10. Excel删除空白行(亲自实践)