# [工具下载](https://clienttool.dun.163.com/api/v1/client/jarTool/download)
## 功能介绍

### 引擎保护

对于游戏引擎中的核心代码逻辑混淆保护，增大攻击者去逆向分析的难度，支持自定义配置。

### **global-metadata.dat保护方案**

易盾unity加固方案默认加密global-metadata.dat，防止Il2cppDumper等破解工具。

### **Ab资源加密**

ab资源作为unity引擎中的核心资源，将所有的资源形式打包成了UnityFS的格式，部分资源的暴露可能带来资源被窃取，被修改，以及游戏内存在剧透的风险。为了防止对于资源的分析以及拷贝，易盾提供了ab资源的加密，并且边运行边解密。有需要请勾选后台加固设置内的ab 资源加密选项。

### **il2cpp-lua保护**

提供对于unity引擎中会使用lua文件进行热更的加密保护，以xlua、tolua为代表的lua热更框架，易盾支持对于热更lua文件的加密保护。

### **il2cpp-dll保护**

提供对于unity-il2cpp中热更dll文件的加密保护，包括dll的整体加密和dll的函数加密保护，支持il2cpp中的主流热更框架：比如**ILRuntime、hybridclr等。**

## **使用说明**

该加固工具为jar包文件，适用于Windows、Linux以及Mac系统，以下均以Windows环境下描述，其他系统环境使用方法类似。下载地址[点击下载](https://clienttool.dun.163.com/api/v1/client/jarTool/download)。

### 使用方式

注意：加固项由易盾后台进行配置，请联系易盾技术支持人员。

命令行模式（注意，第一次使用需要配置config.ini文件）

1. 命令行模式参数
``````
java -jar NHPProtect.jar -iOS -nobitcode -yunconfig -input /Users/ios_app.xcarchive
``````
1. 参数说明如下：

| 参数       | 说明                                      |
| ---------- | ----------------------------------------- |
| -yunconfig | 必填项，表示自动从易盾后台获取加固参数,加固配置已经在后台部署，可以根据实际情况调整 。 |
| - iOS | 必填项，标记iOS加固平台 |
| -nobitcode | 必填项 |
| -input | 必填项，参数后面跟待加固的文件的绝对路径 |
| -output | 默认加固后的文件输出在原文件同路径，-output参数可以指定加固后文件的输出路径和文件名，java -jar NHPProtect.jar -nobitcode -iOS -yunconfig -input /Users/ios_app.xcarchive -output /Users/Projectsxcarchive_encrypted.zip |

### **config.ini文件配置说明**

默认config.ini必须要跟NHPProtect.jar在同一目录下，如果需要指定config文件，可以执行-config 命令参数来处理：
``````
java -jar NHPProtect.jar -nobitcode -iOS -yunconfig -config E:\\Desktop\\test\\config.ini -input /path/path/test.xcarchive
``````
config的配置

### **设置appkey**

用户需要将appkey填写在该配置文件中，格式如下所示。appkey请在官网登录账号后加固服务-服务管理获取。
``````
[appkey]

key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

``````

### **AB资源加密**

#### 配置方法

若需要ab加密，则在加固时候需要加上以下配置
加固命令加上-iosU3dastenc功能参数或在后台开启 ab 加密功能
``````
java -jar NHPProtect.jar -nobitcode -iOS -yunconfig -iosU3dastenc  -input /path/path/test.xcarchive
``````
ab加密时需要在加固工具config.ini配置如下字段参数，包体加固和资源单独加密都需要
``````
[u3dabmode]

mode=5
``````
### 单独ab资源加密（热更ab包）

1. ab加密时需要在加固工具config.ini文件配置如下字段参数
``````
[u3dabmode]

mode=5
``````
1. 单独加固命令参数

**热更资源配置对应 Android 端的 appkey 进行单独资源加密**

对一个zip包/文件夹内的所有 assetbundle 文件进行加密
``````

Java -jar NHPProtect.jar  -SingleAstEnc -input E:\\NHPtest\\raw.zip
``````

1. 单独加密过的资源需要在有ab加密功能配置的加固包体上才可以解密加载，且需要config的mode参数配置一致，没有ab加密功能的加固包或者未加固包无法加载已加密过的ab资源文件。未加密的资源文件读取没有限制。

注意事项：若加固对象是.ipa包，请在 config 内配置对应工程的符号表路径。

``````
[SymbolPath]
path=

``````


**更新和支持**

Jar工具会定期进行新版本检测，客户端网络正常的情况下触发更新时会自动升级到最新版本。也可手动通过更新命令进行升级。示例:
``````
Java -jar NHPProtect.jar -update
``````
也可以通过config 内的增加如下配置来设置加固工具是否更新，以及更新检测频率。
``````
[update]

u=1 // u=1 更新 u=0 不触发自动更新

t=1 //更新检测频率，单位 day，表示每 1天执行时候都会进行最新版本更新检测
``````
加固脚本由易盾在服务器部署，为保证线上包体方案的稳定性，非功能优化和问题修复不会改变后台的加固版本。建议有大版本更新迭代时候可以考虑升级到易盾新版本，并根据版本排期提前测试。