|
@@ -672,7 +672,7 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
- **9. decryptProjectPathPrefix值如何指定?**
|
|
- **9. decryptProjectPathPrefix值如何指定?**
|
|
|
-
|
|
|
|
|
|
|
+``
|
|
|
> 请确保先看过了上面【解密参数】里对此参数的说明及示例
|
|
> 请确保先看过了上面【解密参数】里对此参数的说明及示例
|
|
|
|
|
|
|
|
decryptProjectPathPrefix指定的值,将以前缀匹配的形式匹配要解密的文件。
|
|
decryptProjectPathPrefix指定的值,将以前缀匹配的形式匹配要解密的文件。
|
|
@@ -680,7 +680,7 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
|
|
|
- 如果你是war包,那么你可以指定war包解压后对应的war目录
|
|
- 如果你是war包,那么你可以指定war包解压后对应的war目录
|
|
|
- 如果你是jar包(all-in-one),那么无需指定此参数
|
|
- 如果你是jar包(all-in-one),那么无需指定此参数
|
|
|
- 如果你是jar包(lib外置),那么直接指定对应需要解密的lib文件即可
|
|
- 如果你是jar包(lib外置),那么直接指定对应需要解密的lib文件即可
|
|
|
- - 如果你没有任何头绪,那么你可以先不指定decryptProjectPathPrefix,直接debug启动项目,当因解密失败启动报错时,会debug输出形如**Exist projectPath -> xxx**的信息,该`xxx`即为当前解密失败的文件路径,你可以根据这个路径去反推你的decryptProjectPathPrefix值,然后配置该decryptProjectPathPrefix值再启动即可
|
|
|
|
|
|
|
+ - 如果你没有任何头绪,那么你可以先不指定decryptProjectPathPrefix,直接debug启动项目,当因解密失败启动``报错时,会debug输出形如**Exist projectPath -> xxx**的信息,该`xxx`即为当前解密失败的文件路径,你可以根据这个路径去反推你的decryptProjectPathPrefix值,然后配置该decryptProjectPathPrefix值再启动即可
|
|
|
|
|
|
|
|
- **10. 不解密,直接调用加密包中类的方法时,部分类会有报错形如`java.lang.ClassFormatError: Illegal local variable table start_pc 33 in method 'int xxx.yyy.zzz.IOUtil.copy(java.lang.String)'`?**
|
|
- **10. 不解密,直接调用加密包中类的方法时,部分类会有报错形如`java.lang.ClassFormatError: Illegal local variable table start_pc 33 in method 'int xxx.yyy.zzz.IOUtil.copy(java.lang.String)'`?**
|
|
|
|
|
|
|
@@ -688,7 +688,7 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
|
|
|
- 原因猜测1:javassist加密后字节码的本地变量表、字面量和jvm优化后的本地变量表、字面量存在差异,进而导致此问题
|
|
- 原因猜测1:javassist加密后字节码的本地变量表、字面量和jvm优化后的本地变量表、字面量存在差异,进而导致此问题
|
|
|
- 原因猜测2:class-winter中的保留原始参数名清空方法体`JavassistUtil#clearMethodBodyKeepOriginArgName`方法存在问题(P.S.本人水平有限,没有从这个方法中找到问题)
|
|
- 原因猜测2:class-winter中的保留原始参数名清空方法体`JavassistUtil#clearMethodBodyKeepOriginArgName`方法存在问题(P.S.本人水平有限,没有从这个方法中找到问题)
|
|
|
|
|
|
|
|
- - 解决方案1:设置加密参数`keepArgName=false`,加密清空方法体时不保留方法原参数名(即:不保留方法原参数名)
|
|
|
|
|
|
|
+ - 解决方案1:设置加密参数`keepArgName=false`,加密清空方法体时不保留方法原参数名
|
|
|
- 解决方案2:根据报错信息,找到对应的方法;1. 检查该方法,去掉多余的局部变量; 2.将该方法中的复杂写法改为简单写法
|
|
- 解决方案2:根据报错信息,找到对应的方法;1. 检查该方法,去掉多余的局部变量; 2.将该方法中的复杂写法改为简单写法
|
|
|
- 解决方案3:根据报错信息,找到对应的方法;将该方法单独提取到其它类中,这样虽然该方法会报错,但是调用原类中的其它方法就不会报错了
|
|
- 解决方案3:根据报错信息,找到对应的方法;将该方法单独提取到其它类中,这样虽然该方法会报错,但是调用原类中的其它方法就不会报错了
|
|
|
|
|
|