## 功能介绍

### **js代码控制流混淆**

打乱函数执行流程，结合不透明表达式，引入多余控制流，插入无用代码、函数，同时进行扁平化处理，使得所有程序基本块看起来不能区分执行先后顺序，使JS代码可读性变差，进而达到防止代码被静态分析的目的。**。**

### **js禁止调试**

基于调试器特征，易盾在被保护的JS代码内插入调试检测代码，一旦发现调试行为，将会阻止被调试的JS继续运行。

### **高强度js禁止调试**

对于破解调试比较频繁的客户，可以配置高强度js禁止调试。

### **指定字符串加密**

将代码中使用的字符串进行加密处理，运行时动态解密，防止攻击者直接获取、使用这些明文的字符串信息，增加分析难度。

### **域名锁定**

将域名或子域名以规则形式写入代码中，在程序运行时，动态获取当前代码加载域名是否是预设定的来控制代码是否执行，防止代码盗用。

### **高强度字符串加密**

个别游戏需要对全量的字符串加密，脚本内默认的加密为50%，开启后会将字符串加密的百分比调整到100%。

### **unity引擎资源加密**

### **小游戏资源保护**

开启此配置则会进行资源加密的功能。

### **unityjs的ab资源加密**

开启后，会对webgl目录下的符合格式的ab资源进行加密。

### **unityjs的wasm资源加密**

开启后，会对当前目录下的wasmcode目录内的webgl.wasm.code.unityweb.wasm.br文件进行加固。

### **webdata加密**

webdata为untiy的首包资源文件，webgl.data.unityweb.bin.txt，首包内包含静态资源文件，metadata文件，以及ab资源文件，开启此配置后如果配置有unityjs的ab资源加密，则会直接对内部的ab资源进行加密。

### **对首包资源内静态资源进行加密**

开启后，会对webdata首包资源内的静态资源文件进行加固。

### **对首包资源内metadata进行加密**

开启后，会对webdata首包资源内的global-metadata.dat文件进行加固。

### **unity内部缓存加密**

开启后，会对web游戏的缓存进行加密，运行时进行解密。

### **wasm分包**

支持wasm分包的场景。wasm分包会对wasm文件进行拆分，拆分成wasmcode与wasmcode1等多个文件夹。

## **使用说明**

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

### 使用方式

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

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

1. 命令行模式参数
``````
java -jar NHPProtect.jar -h5protect -h5type wx -yunconfig -input xxx.zip
``````
ps：zip 内需要包含符号表文件。
1. 参数说明如下：

| 参数 	| 说明 	|
|---	|---	|
| -yunconfig 	| 必填项，表示自动从易盾后台获取加固参数,加固配置已经在后台部署，可以根据实际情况调整 。 	|
| -h5protect 	| 必填项，表示保护h5文件 	|
| -input 	| 必填项，参数后面跟待加固的文件的绝对路径 	|
| -output 	| 默认加固后的文件输出在原文件同路径，-output参数可以指定加固后文件的输出路径和文件名，示例：java -jar NHPProtect.jar -yunconfig  -h5protect -h5type wx -output E:\enc\test_enc.zip -input  E:\yiduntest\test.zip 	|
| -h5type 	| 可选参数，如果不输入 -h5type，默认是web游戏 wx: 微信小游戏、tt: 抖音 头条、ks: 快手、qq : qq、oppo : oppo、vivo : vivo、mt : 美团 	|

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

默认config.ini必须要跟NHPProtect.jar在同一目录下，如果需要指定config文件，可以执行-config 命令参数来处理：
``````
java -jar NHPProtect.jar -h5protect -h5type wx -config E:\\Desktop\\test\\config.ini -input E:\\yiduntest\\test.zip
``````
### **设置appkey**

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

\[appkey\]

key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx