springBoot 混淆加密

202 阅读2分钟

ClassFinal

介绍****

ClassFinal是一款java class文件安全加密工具,支持直接加密jar包或war包,无需修改任何项目代码,兼容spring-framework;可避免源码泄漏或字节码被反编译。

Gitee: ClassFinal: Java字节码加密工具****

项目模块说明****

· classfinal-core:  ClassFinal的核心模块,几乎所有加密的代码都在这里;

· classfinal-fatjar:  ClassFinal打包成独立运行的jar包;

· classfinal-maven-plugin:  ClassFinal加密的maven插件;

功能特性****

· 无需修改原项目代码,只要把编译好的jar/war包用本工具加密即可。

· 运行加密项目时,无需求修改tomcat,spring等源代码。

· 支持普通jar包、springboot jar包以及普通java web项目编译的war包。

· 支持spring framework、swagger等需要在启动过程中扫描注解或生成字节码的框架。

· 支持maven插件,添加插件后在打包过程中自动加密。

· 支持加密WEB-INF/lib或BOOT-INF/lib下的依赖jar包。

· 支持绑定机器,项目加密后只能在特定机器运行。

· 支持加密springboot的配置文件。

环境依赖****

JDK 1.8 +

使用说明****

加密****

执行以下命令

java -jar classfinal-fatjar.jar -file yourpaoject.jar -libjars a.jar,b.jar -packages com.yourpackage,com.yourpackage2 -exclude com.yourpackage.Main -pwd 123456 -Y

 

参数说明

-file        加密的jar/war完整路径

-packages    加密的包名(可为空,多个用","分割)

-libjars     jar/war包lib下要加密jar文件名(可为空,多个用","分割)

-cfgfiles    需要加密的配置文件,一般是classes目录下的yml或properties文件(可为空,多个用","分割)

-exclude     排除的类名(可为空,多个用","分割)

-classpath   外部依赖的jar目录,例如/tomcat/lib(可为空,多个用","分割)

-pwd         加密密码,如果是#号,则使用无密码模式加密

-code        机器码,在绑定的机器生成,加密后只可在此机器上运行

-Y           无需确认,不加此参数会提示确认以上信息

 

结果: 生成 yourpaoject-encrypted.jar,这个就是加密后的jar文件;加密后的文件不可直接执行,需要配置javaagent。

注: 以上示例是直接用参数执行,也可以直接执行 java -jar classfinal-fatjar.jar按照步骤提示输入信息完成加密。

启动加密后的jar****

java -javaagent:yourpaoject-encrypted.jar="-pwd 0000000" -jar yourpaoject-encrypted.jar

本人实际案例

​编辑

打包:

​编辑启动:

    java -javaagent:aaaaa-encrypted.jar="-pwd 123456" -jar aaaaa-encrypted.jar

image.png

image.png

image.png

``