Unity 2019 Managed缓存机制

Unity 2019 Managed缓存机制

来源:fairguard 发布时间:2021-02-26 15:40:38 点击数:

在 il2cpp 模式下,对比 unity3d 2018 与 2019 版本,我们发现了一个有意思的小变化,分享给大家。

Unity3d app 运行时,会把 apk 包中的 assets/bin/Data/Managed 目录释放到 Application.persistentDataPath 下的 il2cpp 目录,根据 apk 权限 / 是否有 sdcard 等因素,该目录可能在外部存储上 /storage/emulated/0/Android/data/com.packagname.xxx/files, 也有可能在内部存储上 /data/data/com.packagename.xxx/files。

apk 中:

Unity 2019 Managed缓存机制

apk 运行后释放:

Unity 2019 Managed缓存机制

1. Unity3d 2018

在 unity3d 2018 中会直接释放,不会判断游戏是否已经运行过。即使游戏上一次运行已经释放过,第二次运行仍然会释放覆盖。逻辑在 libunity.so 中的 UnityInitApplication 函数:

2. Unity3d 2019

在 unity3d 2019 中会判断是否已经释放过,如果没有释放过,则执行释放; 如果已经释放过,会再判断版本信息是否一致,若一致,则不再释放,若不一致,则执行释放。

用于判断版本信息是否一致的这个 s_BuildData 来自哪里呢? 它主要来自 libunity.so 中的 BootConfig 类:

而 BootConfig 类中的初始化数据来自 assets/bin/Data/boot.config 文件,boot.config 文件内容:

Unity 2019 Managed缓存机制

Unity3d 2019 在导出 apk 时,会生成一个 buildDate 字段放到 boot.config 文件; 运行时, 使用此字段来判断是否需要释放 il2cpp 资源覆盖磁盘上的 il2cpp 资源内容。

3. 小结

1). Unity3d 2018 会直接释放 il2cpp 资源到 Application.persistentDataPath 目录。

2). Unity3d 2019 在释放 il2cpp 资源时,则会先判断是否已经释放过,如果 buildDate 一致,则使用缓存,如果不一致,则执行释放。

4. FairGuard 专注于 Unity 加密以及反外挂,为 Unity 提供全方位的保护方案,可以对 il2cpp 资源做全方面的加密处理,保护 il2cpp 资源。

丨结语

FairGuard 专注于游戏加固与反外挂,为 Unity / Cocos / UE 等引擎的游戏提供深度一体化加密保护方案。

目前产品已经被FunPlus、三七互娱、游族等多家头部公司采用。TapTap排行榜以及买量排行榜上亦有多个游戏使用。

产品咨询联系方式:

QQ:2079128588

微信:fairguard01

技术交流QQ群:1105310296

即刻体验FairGuard加固方案!

即刻体验FairGuard加固方案!

免费试用游戏游戏安全保护, 对接专业技术服务!

免费体验
首 页
产 品
方 案
客 服
帮 助