> For the complete documentation index, see [llms.txt](https://docs.aiot.virbox.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.aiot.virbox.com/how-to-use/android-sdk.md).

# Unity3D 应用加固

### 技术背景

Unity3D 程序的核⼼程序集文件 Assembly-CSharp.dll 是标准的 .NET 文件格式，附带了⽅法名、类名、类型定义等丰富的元数据信息，使⽤ DnSpy 等⼯具可以轻易地将其反编译和篡改，代码逻辑、类名和⽅法名等⼀览⽆余。

Unity3D 程序在编译打包阶段会通过 Unity 编辑器将资源加包成 Asset Bundle 文件，Asset Bundle 是⼀种公开的压缩类文件格式，使⽤ Asset Studio 等⼯具可以对其解析、展⽰和提取。

Virbox Protector 通过加密程序集中的每个⽅法，每次仅有⼀个⽅法被解密，并且解密时解密到随机的内存地址，保证加密后的程序不可被 Dump，再通过独创的⼆进制指令块编译链接技术，将关键的代码逻辑动态地进⾏混淆或虚拟化保护，保证其安全性。

### 方案简述

#### :comet: 使用MONO格式编译的APK

{% hint style="info" %}
:reminder\_ribbon:**温馨提示：**&#x4F7F;用apktool将APK解压，查看lib目录下，是否包含libmono.so，如果包含，说明该APK在编译的时候为MONO格式，需要对整个APK加密
{% endhint %}

### 范例

| 项目   | 版本                 |
| ---- | ------------------ |
| 操作系统 | Windows 10 家庭中文版   |
| 演示程序 | angrybots5.5.3.apk |

### 导入APK <a href="#dao-ru-zheng-ge-mu-lu" id="dao-ru-zheng-ge-mu-lu"></a>

![将APK导入Virbox Protector](https://2533242127-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LpX-FkE6usysD6ERAdR%2F-MAPqEsYl4NsA_Xkn0Ge%2F-MAPuiTbYkYJalhWmlPK%2Fimage.png?alt=media\&token=0d5125f1-7222-43f0-afcc-821fbcbcb062)

### 配置加密选项 <a href="#pei-zhi-jia-mi-xuan-xiang-3" id="pei-zhi-jia-mi-xuan-xiang-3"></a>

![配置加密选项](https://2533242127-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LpX-FkE6usysD6ERAdR%2F-MAPqEsYl4NsA_Xkn0Ge%2F-MAPurvmUM98oemkepHO%2Fimage.png?alt=media\&token=e39cd8dd-5764-4ee1-aa3d-8b262818e65c)

{% hint style="info" %}
:reminder\_ribbon: 温馨提示：无需配置「函数选项」，采用默认配置
{% endhint %}

### 资源加密

![打开启动开关，保护资源文件](https://2533242127-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LpX-FkE6usysD6ERAdR%2F-MAPqEsYl4NsA_Xkn0Ge%2F-MAPv4fXKGSQ2MpVKV8x%2Fimage.png?alt=media\&token=dc044949-4497-41b2-a18f-d9a27b5f4cb4)

### 执行保护

![保护完成](https://2533242127-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LpX-FkE6usysD6ERAdR%2F-MAPqEsYl4NsA_Xkn0Ge%2F-MAPvNFU_EgY6W6WLj7k%2Fimage.png?alt=media\&token=a4b9f57b-dfee-4473-8b42-6ca39d320e50)

{% hint style="info" %}
:reminder\_ribbon:**温馨提示：**&#x52A0;壳后的程序会在同一目录下生成两个新文件：**angrybots5.5.3.apk.ssp**和**angrybots5.5.3.ssp.apk**
{% endhint %}

**angrybots5.5.3.ssp.apk**为保护后的程序，请备份好未经保护的angrybots5.5.3.apk，并将**angrybots5.5.3.ssp.apk**名称修改为angrybots5.5.3.apk。

{% hint style="info" %}
:reminder\_ribbon:**温馨提示：angrybots5.5.3.apk.ssp**为配置文件，保存了加密过程中的所有配置项目。
{% endhint %}

#### :sailboat: 使用IL2CPP格式编译的APK

{% hint style="info" %}
:reminder\_ribbon:**温馨提示：**&#x4F7F;用apktool将APK解压，查看lib目录下，是否包含libil2cpp.so，如果包含，说明该APK在编译的时候为IL2CPP格式，需要将APK内的SO文件加密
{% endhint %}

{% hint style="info" %}
:reminder\_ribbon:**温馨提示：**&#x4F7F;用IL2CPP格式编译的APK的方式请参照第一部分的「APK文件保护」
{% endhint %}
