|
@@ -1,12 +1,27 @@
|
|
|
-### <font face="幼圆" color = "#F53B45">**郑重声明**</font>
|
|
|
|
|
|
|
+# 代码混淆之class-winter
|
|
|
|
|
|
|
|
-  class-winter是本人在学习完[**class-final(v1.1.9)**](https://gitee.com/roseboy/classfinal) 后,仿照class-final进行编写的,整体思路与class-final一致,代码部分(约20%~30%)复用了class-final中的代码。可将class-winter看作是class-final的一个分支。
|
|
|
|
|
|
|
+- [代码混淆之class-winter](#代码混淆之class-winter)
|
|
|
|
|
+ - [<font face="幼圆" color = "#3399EA" >功能与特性</font>](#font--face幼圆-color--3399ea-功能与特性font)
|
|
|
|
|
+ - [<font face="幼圆" color = "#3399EA" >加密</font>](#font--face幼圆-color--3399ea-加密font)
|
|
|
|
|
+ - [<font face="幼圆" color = "#3399EA" >加密参数</font>](#font--face幼圆-color--3399ea-加密参数font)
|
|
|
|
|
+ - [<font face="幼圆" color = "#3399EA" >解密(启动)</font>](#font--face幼圆-color--3399ea-解密启动font)
|
|
|
|
|
+ - [<font face="幼圆" color = "#3399EA" >解密参数</font>](#font--face幼圆-color--3399ea-解密参数font)
|
|
|
|
|
+ - [<font face="幼圆" color = "#3399EA" >相关资料</font>](#font--face幼圆-color--3399ea-相关资料font)
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+<font face="幼圆" color = "#F53B45">**郑重声明**</font>
|
|
|
|
|
+
|
|
|
|
|
+  [**class-winter**](https://gitee.com/JustryDeng/class-winter) 是本人在学习完 [**class-final(v1.1.9)**](https://gitee.com/roseboy/classfinal) 后,仿照class-final进行编写的,部分思路与class-final一致。
|
|
|
|
|
+
|
|
|
|
|
+## <font face="幼圆" color = "#3399EA" >功能与特性</font>
|
|
|
|
|
|
|
|
-### <font face="幼圆" color = "#3399EA" >功能与特性</font>
|
|
|
|
|
- 支持war加密。
|
|
- 支持war加密。
|
|
|
-- 支持jar(普通jar+可执行jar)加密。
|
|
|
|
|
|
|
+- 支持jar(普通jar+可执行jar)加密。
|
|
|
|
|
+- 支持xml加密(掩耳盗铃版)。
|
|
|
|
|
+
|
|
|
|
|
+## <font face="幼圆" color = "#3399EA" >加密</font>
|
|
|
|
|
|
|
|
-### <font face="幼圆" color = "#3399EA" >加密</font>
|
|
|
|
|
- #### <font face="幼圆" ><font face="幼圆" color = "#86CA5E">**方式一**</font>:通过maven插件自动加密。</font>
|
|
- #### <font face="幼圆" ><font face="幼圆" color = "#86CA5E">**方式一**</font>:通过maven插件自动加密。</font>
|
|
|
```xml
|
|
```xml
|
|
|
<!--
|
|
<!--
|
|
@@ -23,6 +38,9 @@
|
|
|
<!-- <finalName></finalName>-->
|
|
<!-- <finalName></finalName>-->
|
|
|
<includePrefix>加密范围</includePrefix>
|
|
<includePrefix>加密范围</includePrefix>
|
|
|
<!-- <excludePrefix></excludePrefix>-->
|
|
<!-- <excludePrefix></excludePrefix>-->
|
|
|
|
|
+ <!-- <includeXmlPrefix></includeXmlPrefix>-->
|
|
|
|
|
+ <!-- <excludePrefix></excludePrefix>-->
|
|
|
|
|
+ <!-- <toCleanXmlChildElementName></toCleanXmlChildElementName>-->
|
|
|
<!-- <password></password>-->
|
|
<!-- <password></password>-->
|
|
|
<!-- <includeLibs></includeLibs>-->
|
|
<!-- <includeLibs></includeLibs>-->
|
|
|
<!-- <alreadyProtectedLibs></alreadyProtectedLibs>-->
|
|
<!-- <alreadyProtectedLibs></alreadyProtectedLibs>-->
|
|
@@ -42,7 +60,7 @@
|
|
|
```
|
|
```
|
|
|
注:不必担心信息泄漏问题,使用此方式生成混淆的jar包时,会擦除pom.xml中关于class-winter-plugin的信息。
|
|
注:不必担心信息泄漏问题,使用此方式生成混淆的jar包时,会擦除pom.xml中关于class-winter-plugin的信息。
|
|
|
|
|
|
|
|
-- #### <font face="幼圆" ><font face="幼圆" color = "#86CA5E">**方式二**</font>:通过[**class-winter-core.jar**](https://gitee.com/JustryDeng/class-winter/raw/master/class-winter-core/src/test/resources/class-winter-core-2.0.0.jar) 主动加密。</font>
|
|
|
|
|
|
|
+- #### <font face="幼圆" ><font face="幼圆" color = "#86CA5E">**方式二**</font>:通过 [**class-winter-core.jar**](https://gitee.com/JustryDeng/class-winter/raw/master/class-winter-core/src/test/resources/class-winter-core-2.1.0.jar) 主动加密。</font>
|
|
|
|
|
|
|
|
```bash
|
|
```bash
|
|
|
java -jar class-winter-core-${version}.jar originJarOrWar=${要加密的项目.jar或.war包} includePrefix=${加密范围} [k3=v3 k4=v4 ...]
|
|
java -jar class-winter-core-${version}.jar originJarOrWar=${要加密的项目.jar或.war包} includePrefix=${加密范围} [k3=v3 k4=v4 ...]
|
|
@@ -53,7 +71,8 @@
|
|
|
java -jar class-winter-core-${version}.jar k1="v1" k2="v2"
|
|
java -jar class-winter-core-${version}.jar k1="v1" k2="v2"
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
-### <font face="幼圆" color = "#3399EA" >加密参数</font>
|
|
|
|
|
|
|
+## <font face="幼圆" color = "#3399EA" >加密参数</font>
|
|
|
|
|
+
|
|
|
<table>
|
|
<table>
|
|
|
<tr align="center">
|
|
<tr align="center">
|
|
|
<td>参数</td>
|
|
<td>参数</td>
|
|
@@ -86,6 +105,39 @@ includePrefix=com,org</td>
|
|
|
<br/>
|
|
<br/>
|
|
|
注:excludePrefix优先级高于includePrefix。</td>
|
|
注:excludePrefix优先级高于includePrefix。</td>
|
|
|
<td>excludePrefix=com.example.service,com.example.util.StrUtil.class</td>
|
|
<td>excludePrefix=com.example.service,com.example.util.StrUtil.class</td>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ <tr align="center">
|
|
|
|
|
+ <td>includeXmlPrefix</td>
|
|
|
|
|
+ <td>否</td>
|
|
|
|
|
+ <td>通过打出来的包中条目的entryName前缀匹配的形式定位要加密的xml
|
|
|
|
|
+ <br/>
|
|
|
|
|
+注:多个通过逗号分割。</td>
|
|
|
|
|
+ <td>includeXmlPrefix=BOOT-INF/classes/
|
|
|
|
|
+ <br/>
|
|
|
|
|
+includeXmlPrefix=BOOT-INF/classes/com/demo/mapper/,BOOT-INF/classes/com/demo/dao/</td>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ <tr align="center">
|
|
|
|
|
+ <td>excludeXmlPrefix</td>
|
|
|
|
|
+ <td>否</td>
|
|
|
|
|
+ <td>通过打出来的包中条目的entryName前缀匹配的形式排除xml,不对其加密
|
|
|
|
|
+ <br/>
|
|
|
|
|
+注:多个通过逗号分割。</td>
|
|
|
|
|
+ <td>excludeXmlPrefix=BOOT-INF/classes/com/demo/mapper/
|
|
|
|
|
+ <br/>
|
|
|
|
|
+excludeXmlPrefix=BOOT-INF/classes/com/demo/mapper/,BOOT-INF/classes/com/demo/dao/UserDao.xml</td>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ <tr align="center">
|
|
|
|
|
+ <td>toCleanXmlChildElementName</td>
|
|
|
|
|
+ <td>否</td>
|
|
|
|
|
+ <td>加密xml中的哪些一级元素
|
|
|
|
|
+ <br/>
|
|
|
|
|
+注:默认值为resultMap,sql,insert,update,delete,select
|
|
|
|
|
+ <br/>
|
|
|
|
|
+注:多个通过逗号分割。</td>
|
|
|
|
|
+ <td>toCleanXmlChildElementName=select,delete,resultMap</td>
|
|
|
</tr>
|
|
</tr>
|
|
|
<tr align="center">
|
|
<tr align="center">
|
|
|
<td>finalName</td>
|
|
<td>finalName</td>
|
|
@@ -129,7 +181,7 @@ includePrefix=com,org</td>
|
|
|
<br/>
|
|
<br/>
|
|
|
alreadyProtectedLibs=a.jar,b.jar:pwd123
|
|
alreadyProtectedLibs=a.jar,b.jar:pwd123
|
|
|
<br/>
|
|
<br/>
|
|
|
-alreadyProtectedLibs=a.jar:pwd1,b.jar:2</td>
|
|
|
|
|
|
|
+alreadyProtectedLibs=a.jar:pwd1,b.jar:pwd2</td>
|
|
|
</tr>
|
|
</tr>
|
|
|
<tr align="center">
|
|
<tr align="center">
|
|
|
<td>supportFile</td>
|
|
<td>supportFile</td>
|
|
@@ -162,7 +214,9 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
|
|
|
</table>
|
|
</table>
|
|
|
|
|
|
|
|
|
|
|
|
|
-### <font face="幼圆" color = "#3399EA" >解密(启动)</font>
|
|
|
|
|
|
|
+
|
|
|
|
|
+## <font face="幼圆" color = "#3399EA" >解密(启动)</font>
|
|
|
|
|
+
|
|
|
通过-javaagent指定代理进行解密启动。
|
|
通过-javaagent指定代理进行解密启动。
|
|
|
- #### <font face="幼圆" color = "#86CA5E" >jar解密(启动)</font>
|
|
- #### <font face="幼圆" color = "#86CA5E" >jar解密(启动)</font>
|
|
|
```bash
|
|
```bash
|
|
@@ -218,7 +272,8 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
|
|
|
set JAVA_OPTS="-javaagent:D:/class-winter-core-1.0.0.jar"
|
|
set JAVA_OPTS="-javaagent:D:/class-winter-core-1.0.0.jar"
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
-### <font face="幼圆" color = "#3399EA" >解密参数</font>
|
|
|
|
|
|
|
+## <font face="幼圆" color = "#3399EA" >解密参数</font>
|
|
|
|
|
+
|
|
|
<table>
|
|
<table>
|
|
|
<tr align="center">
|
|
<tr align="center">
|
|
|
<td>参数</td>
|
|
<td>参数</td>
|
|
@@ -238,4 +293,10 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
|
|
|
<td>是否开启debug模式</td>
|
|
<td>是否开启debug模式</td>
|
|
|
<td>debug=true</td>
|
|
<td>debug=true</td>
|
|
|
</tr>
|
|
</tr>
|
|
|
-</table>
|
|
|
|
|
|
|
+</table>
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## <font face="幼圆" color = "#3399EA" >相关资料</font>
|
|
|
|
|
+
|
|
|
|
|
+- [官网](https://gitee.com/JustryDeng/class-winter)
|