ClassFinal是一款JAVA class文件安全加密工具,支持直接加密jar包或war包,无需修改任何项目代码,兼容spring-framework,可避免源码泄漏或字节码被反编译 。
项目模块说明
- classfinal-core: ClassFinalde的核心模块,几乎所有加密的代码都在这里;
- 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包 。
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文件名(可为空,多个用","分割)-exclude 排除的类名(可为空,多个用","分割)-pwd 加密密码-Y 无需确认,不加此参数会提示确认以上信息结果: 生成 yourpaoject-encrypted.jar,这个就是加密后的jar文件;加密后的文件不可直接执行,需要配置javaagent 。
注: 以上示例是直接用参数执行,也可以直接执行 java -jar classfinal-fatjar.jar按照步骤提示输入信息完成加密 。maven插件方式
在要加密的项目pom.xml中加入以下插件配置,目前最新版本是:1.1.0 。
<plugin> <groupId>net.roseboy</groupId> <artifactId>classfinal-maven-plugin</artifactId> <version>${classfinal.version}</version> <configuration> <password>000000</password> <packages>com.yourpackage,com.yourpackage2</packages> <excludes>org.spring</excludes> <libjars>a.jar,b.jar</libjars> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>classFinal</goal> </goals> </execution> </executions></plugin>运行mvn package时会在target下自动加密生成yourpaoject-encrypted.jar 。
maven插件的参数名称与直接运行的参数相同,请参考上节的参数说明 。
启动加密后的jar
加密后的项目需要设置javaagent来启动项目,项目在启动过程中解密class,完全内存解密,不留下任何解密后的文件 。
解密功能已经自动加入到 yourpaoject-encrypted.jar中,所以启动时-javaagent与-jar相同,不需要额外的jar包 。
启动jar项目执行以下命令:
java -javaagent:yourpaoject-encrypted.jar='-pwd 0000000' -jar yourpaoject-encrypted.jar参数说明-pwd 密码tomcat下运行加密后的war
tomcat catalina 增加以下配置:
【Java 字节码加密工具 ClassFinal】//linux下 catalina.shCATALINA_OPTS="$CATALINA_OPTS -javaagent:classfinal-fatjar.jar='-pwd 0000000'";export CATALINA_OPTS;//win下catalina.batset CATALINA_OPTS="%CATALINA_OPTS% -javaagent:classfinal-fatjar.jar='-pwd 0000000'"参数说明:-pwd 0000000 密码
推荐阅读
- 欧洲码和中国码一样吗 欧洲码比中国正常码会大吗
- Java这些运算规则和注意事项你确定都知道吗?
- 框架分析+环境搭建+实例源码 SSH框架总结
- 微信如何解绑电话号码?
- 一文彻底搞懂JavaScript异步请求
- 在JavaScript中使用getter和setter可行吗
- TCP案例:python文件下载器
- JAVA三大框架Struts、hibernate和spring的各自作用是什么?
- JavaWaf框架
- 如何在JAVA中定义常量?
