# 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="/pages/-MOnlIe2dI6lbh6JkQSo" %}
[下载](/download.md)
{% endcontent-ref %}

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

![登录账户](/files/-MP7tOfoHvzC-yCAHxfo)

## 导入文件

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

## **基本信息**

![基本信息](/files/-MP8Beo4FRV7MoYV1meU)

## 函数选项

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

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

<figure><img src="/files/CRS3D2PozRm5fdk1JZuK" alt=""><figcaption><p>添加函数保护</p></figcaption></figure>

<figure><img src="/files/kKeOFgRhrpKCT1G4nDzu" alt=""><figcaption><p>设置函数保护方式</p></figcaption></figure>

## 加密选项

### 路径设置

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

<figure><img src="/files/mdfAHccjdfu2Vyx92CsY" 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="/files/SiFeMERcMRMSSeDW006Q" alt=""><figcaption></figcaption></figure>

## 应用加固

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

![应用加固](/files/-MP8-ZJ-E2eW1qDqSsV0)

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

![批量加固](/files/-MP80QK3V_Z2NJdY6WwE)

## so库保护

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

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

## 生成文件

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.aiot.virbox.com/how-to-use/androidprotection.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
