# Android 应用加固-APK

## 方案简介

Android 应用加固提供专业安全的防护，可防止 APK 被逆向分析、反编译、二次打包，防止嵌入各种病毒、广告的恶意代码，从源头上保护数据安全和开发者的利益。

**Virbox Protector 2** 可以帮助应用开发者实现一键加固+自动签名等多种操作。

{% hint style="info" %}
:reminder\_ribbon:**温馨提示：**&#x5E94;用加固后，原有的签名信息会被破坏，需要重新签名，签名文件一般指的是后缀为 keystore 的文件。请开发者妥善保管。
{% endhint %}

### 操作流程

* 输入正确的账号&密码进行登录；
* 将需要保护的 APK 文件导入**Virbox Protector 2 Trial** 中；
* 输出路径设置；
* 配置加密方式；
* 签名设置；
* 执行加固；

## 登录

双击 **Virbox Protector 2 Trial** 快捷方式，启动应用，如果您尚未安装，请先下载。

{% content-ref url="../download" %}
[download](https://docs.aiot.virbox.com/download)
{% endcontent-ref %}

输入正确的账号&密码进行登录，如无账号，请先访问 <https://aiot.virbox.com/trail.html> 进行注册。

![登录账户](https://2533242127-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LpX-FkE6usysD6ERAdR%2F-MP7sgZ-XEGg-uH-60PU%2F-MP7tOfoHvzC-yCAHxfo%2Fimage.png?alt=media\&token=01d1efc0-35f8-4e06-83c8-b8c5716cbc97)

## 导入文件

将 APK 导入至 **Virbox Protector 2 Trial 中。**

## **基本信息**

![基本信息](https://2533242127-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LpX-FkE6usysD6ERAdR%2F-MP8AiwBTms7dfAgWCxE%2F-MP8Beo4FRV7MoYV1meU%2Fimage.png?alt=media\&token=e1374556-f4e7-46e0-92ab-3d92bb741647)

## 函数选项

Virbox Protector 可对 DEX 函数进行虚拟化保护。DEX虚拟化技术：对 DEX 中的 Dalvik 字节码进行虚拟化，转换为自定义的虚拟机指令，然后由 Native 层虚拟机解释执行。

添加函数可以多选，可参考：[添加函数的常用操作](https://h.virbox.com/vbp/docs/faqs/add_funtion_action)

<figure><img src="https://2533242127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpX-FkE6usysD6ERAdR%2Fuploads%2FBZqMjwmWVJ48TUiQDgN7%2Fimage.png?alt=media&#x26;token=e12f3fb4-2a1e-4b95-9f33-7671dd577080" alt=""><figcaption><p>添加函数保护</p></figcaption></figure>

<figure><img src="https://2533242127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpX-FkE6usysD6ERAdR%2Fuploads%2Fkq2HpUwRXLaQ6Z7qF0NC%2Fimage.png?alt=media&#x26;token=29a00d05-19c3-4613-98da-eaf475dce431" alt=""><figcaption><p>设置函数保护方式</p></figcaption></figure>

## 加密选项

### 路径设置

通过「路径设置」功能，对 APK 加固后文件的输出路径进行统一设置。

<figure><img src="https://2533242127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpX-FkE6usysD6ERAdR%2Fuploads%2FSKAikiMwHP8sG2IVsV5z%2Fimage.png?alt=media&#x26;token=65ad20b6-3ccf-4f41-bd1b-8116f7d84811" alt=""><figcaption></figcaption></figure>

#### **设置选项**

* DEX 加密是对 DEX 文件整体压缩加密（若在Google Play上架，不建议勾选dex加密，建议选择虚拟化方式保护dex文件里的函数）
* 勾选反调试按钮，则使用IDA等调试工具调试时，程序会直接退出。
* 勾选签名校验按钮，且进行签名设置，输入自己的 keystore 文件和密码（密钥别名和密钥密码选填）
* 勾选文件校验：检查APK内所有文件的完整性。
* 勾选反注入，可以防止其它进程对 apk 或 aab 进程附加调试或注入。
* 勾选模拟器检测，可以防止程序在“夜神”、“雷电”、"AVD"等模拟器中运行。
* 勾选 root 检测，可以防止程序在 root 过后的手机上运行。
* 勾选多开检测，可以防止程序多开分身。

**签名设置**

**启用签名：**

勾选启用签名，需要设置keystore路径和keystore密码，设置密钥别名和密钥密码，加密后会自动签名。

如果不勾选启用签名，加密后的 apk/aab 需要手动重新做签名。

{% hint style="info" %}
:reminder\_ribbon:**温馨提示：**&#x5982;果 APK 有且仅有一个秘钥别名，开发者可不录入，如果有多个秘钥别名，开发者需手动指定。如果您希望使用其他签名工具，可以不启用签名，同时需手动关闭签名校验功能。
{% endhint %}

{% hint style="info" %}
:reminder\_ribbon:**温馨提示：**&#x7B7E;名信息保存于本地电脑，不会上传到网络。
{% endhint %}

#### 术语解释

**重签名**： 加固会使原 APK 包的签名失效，加固后的 APK 包需要使用原应用的 keystore 文件进行重新签名后才可以正常安装使用。

**Keystore** **文件**： Keystore 文件是 java 的密钥库，用来进行通信加密和保存密钥对 。 Android 开发进行签名时会生成 Keystore 文件。

**秘钥别名**： Android 开发时生成 keystore 文件时会填写密钥库相关信息，例如密码、别名、姓名组织等。

## 资源加密

加密APK 中的assets下的文件，支持图片、配置、脚本等文件类型。

<figure><img src="https://2533242127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpX-FkE6usysD6ERAdR%2Fuploads%2F8R5a6WTlhbrrqV5I0Smf%2Fimage.png?alt=media&#x26;token=de7f6951-4c60-4654-80f9-791cea3a969c" alt=""><figcaption></figcaption></figure>

## 应用加固

选中要加固的 APK 文件，点击「保护选中项目」，**Virbox Protector 2 Trial** 会自动完成加固。

![应用加固](https://2533242127-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LpX-FkE6usysD6ERAdR%2F-MP8-VaLLJI7gmL4IC7x%2F-MP8-ZJ-E2eW1qDqSsV0%2Fimage.png?alt=media\&token=5ae4aa68-fbf7-4062-ac01-1324b2cbf5f5)

**Virbox Protector 2 Trial** 支持批量添加多个 APK 进行加固。您可在文件夹中直接选择多个需要加固的 APK 文件，或者直接将 APK 拖拽到加固窗口中，完成批量加固的操作 。

![批量加固](https://2533242127-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LpX-FkE6usysD6ERAdR%2F-MP8-VaLLJI7gmL4IC7x%2F-MP80QK3V_Z2NJdY6WwE%2Fimage.png?alt=media\&token=8c2f3fdc-c132-408e-8186-2d159407831e)

## so库保护

点击 so 保护 选项，点击选择文件，添加待保护的so库。 【注】此方式选择的so库只有压缩功能，若有函数保护等需求，需要单独对so库进行保护。

> 勾选“隐藏符号表”，so库需要全选，反之，so库若选择部分，“隐藏符号表”不建议勾选，否则运行可能会出问题。

## 生成文件

{% hint style="info" %}
:reminder\_ribbon:**温馨提示：**&#x8BBE;置完成后，点击【保护选中项目】，安装保护生成后的apk即可运行。 点击【保护选中项目】后，在 protected文件夹中的是加密后的apk文件。
{% endhint %}
