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

### 引擎保护

易盾团结加固保护方案，默认保护引擎so文件：libil2cpp.so文件，通过易盾独创的so加壳方案，兼容鸿蒙系统的前提下，极大的提高so文件的保护强度。

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

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

### **dll保护方案**

易盾团结引擎支持对于dll主流热更框架Hybrld、ILRuntime的保护，包括dll的整体加密、dll函数加密等高强度的保护方案。

### **lua保护方案**

易盾团结引擎保护支持对于 以xlua、tolua为代表的lua热更框架的保护，包括对于lua源码、luac等形式的加密保护

### **ab资源加密**

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

### **abc文件保护**

易盾团结引擎保护支持对于HAP包中的abc文件保护，对于关键的类进行了混淆处理保护；

## 使用说明

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

### 使用方式

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


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

1. 命令行模式参数
``````
java -jar NHPProtect.jar -yunconfig -harmony  -hapsign -input E:\\yiduntest\\test.hap
``````
1. 参数说明如下：

| 参数 	| 说明 	|
|---	|---	|
| -yunconfig 	| 必填项，表示自动从易盾后台获取加固参数,加固配置已经在后台部署，可以根据实际情况调整 。 	|
| -harmony 	| 必填项，标记鸿蒙平台 	|
| -input 	| 必填项，参数后面跟待加固文件的绝对路径,支持.hap或者.app 	|
| -hapsign 	| 选填项，表示加固后对包进行签名，需要配置 config 内签名参数 	|
| -output 	| 默认加固后的文件输出在原文件同路径，-output参数可以指定加固后文件的输出路径和文件名，示例：java -jar NHPProtect.jar -yunconfig -harmony -hapsign -output E:\enc\test_enc -input E:\yiduntest\test.hap  	|

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

默认config.ini必须要跟NHPProtect.jar在同一目录下，如果需要指定config文件，可以执行-config 命令参数来处理：
``````
java -jar NHPProtect.jar -yunconfig -harmony -hapsign -config E:\\Desktop\\test\\config.ini -input E:\\yiduntest\\test.hap
``````
config的功能主要有以下三点：

### **设置appkey**

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

key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
``````
### **配置签名相关信息**

注：**签名请加上-hapsign参数。**
``````
java -jar NHPProtect.jar -yunconfig -harmony -hapsign -input E:\\yiduntest\\test.hap
``````
config.ini中配置如下：
``````
[hapsign]

keystoreFile=C:\\test\\haptest.p12

keystorePwd=xxxxx

keyAlias=xxxxx

keyPwd=xxxxxx

appCertFile=C:\\test\\haptest.cer

profileFile=C:\\test\\test.p7b

mode=localSign

signAlg=SHA256withECDSA
``````
签名参数说明如下：

| 参数 	| 说明 	|
|---	|---	|
| keystoreFile 	| 密钥库文件，JKS或P12格式，使用绝对路径表示 	|
| keystorePwd 	| 密钥库口令 	|
| keyAlias 	| 签名别名 	|
| keyPwd 	| 密钥口令 	|
| appCertFile 	| 应用签名证书文件（证书链，顺序为实体证书-中间CA证书-根证书），使用绝对路径表示 	|
| profileFile 	| 签名后的Provision Profile文件名，使用绝对路径表示 	|
| mode 	| 签名模式，必填项，包括localSign，remoteSign，remoteResign 	|
| signAlg 	| 签名算法，根据实际签名填写 	|


### **单独AB资源加密**
``````
java -jar NHPProtect.jar -SingleAstEnc2 -input E:\\yiduntest\\test.zip
``````
ps：只有包体有 ab 加密功能的配置才可以解密单独加密的资源。

## 安全和使用体验

建议对线上历史未加固包体的代码和资源进行修改后再加固，以防历史包体被用于分析业务逻辑。

**更新和支持**

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

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

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