当前位置:   article > 正文

基于classfinal对Java服务端代码进行混淆加密_classfinal-maven-plugin 没有混淆代码

classfinal-maven-plugin 没有混淆代码

文章目录

一、常见的混淆加密方案

二、项目实操流程

三、反编译效果

四、部署启动

五、参考链接


一、常见的混淆加密方案

  • 方案一:使用proguard-maven-plugin插件

在单模块中,此方案还算简单,但是现在项目一般都是多模块。一个模块依赖多个公共模块。那么使用此方案就比较麻烦,配置复杂,文档难懂,各模块之间的调用在配置是否混淆时极其容易出错。

  • 方案二:使用classfinal工具

此方案比对上面的方案来说,就简单了许多,可以直接对打包好的 jar / war包执行命令,就可以实现源码的安全性保护。并且可以对yml、properties配置文件以及lib目录下的maven依赖进行加密处理。若想指定机器启动,支持绑定机器,项目加密后只能在特定机器运行。

二、项目实操流程

1)下载classfinal-fatjar-1.2.1.jar(下载地址
2)将自己的项目打包成jar包或war包
3)将classfinal-fatjar-1.2.1.jar移到第2)步jar包或war包所在的目录
4)打开cmd,执行命令

  1. java -jar classfinal-fatjar-1.2.1.jar -file yourproject.jar \
  2. -libjars a.jar,b.jar -packages com.yourpackage,com.yourpackage2 \
  3. -exclude com.yourpackage.Main -pwd yourpassword -Y

参数说明:

  • -file 加密的jar/war完整路径
  • -packages 加密的包名(可为空,多个用","分割)
  • -libjars jar/war包lib下要加密jar文件名(可为空,多个用","分割)
  • -cfgfiles 需要加密的配置文件,一般是classes目录下的yml或properties文件(可为空,多个用","分割)
  • -exclude 排除的类名(可为空,多个用","分割)
  • -classpath 外部依赖的jar目录,例如/tomcat/lib(可为空,多个用","分割)
  • -pwd 加密密码,如果是#号,则使用无密码模式加密
  • -code 机器码,在绑定的机器生成,加密后只可在此机器上运行。在待部署机器上,执行java -jar classfinal-fatjar-1.2.1.jar -C命令生成机器码
  • -Y 无需确认,不加此参数会提示确认以上信息

示例:

  1. java -jar classfinal-fatjar-1.2.1.jar -file test-web-0.0.1-SNAPSHOT.jar \
  2. -libjars test-common-0.0.1-SNAPSHOT.jar -packages com.test \
  3. -exclude org.spring -cfgfiles *.yml -pwd # \
  4. -code 45A92A4CCFFDC3731746321DF1D8CD98F00B204E9800998ECF8123F -Y

三、反编译效果

  • 启动包加密之后,方法体被清空,保留方法参数、注解等信息。
  • 反编译只能看到方法名和注解,看不到方法体的具体内容。
  • 启动过程中解密class,完全内存解密,不留下任何解密后的文件。
Java类反编译效果
yaml文件反编译效果


四、部署启动

说明:加密后生成yourproject-encrypted.jar,加密后的文件不可直接执行,需要添加-javaagent参数。

  • 无密码启动
java -javaagent:yourproject-encrypted.jar -jar yourproject-encrypted.jar
  • 有密码启动
java -javaagent:yourproject-encrypted.jar='-pwd=密码' -jar yourproject-encrypted.jar

示例:

  1. java -javaagent:/data/test-web-0.0.1-SNAPSHOT-encrypted.jar -jar \
  2. /data/test-web-0.0.1-SNAPSHOT-encrypted.jar \
  3. --spring.profiles.active=dev \
  4. --spring.config.location=/data/application-native.yml

五、参考链接

1)SpringBoot 项目 Jar 包加密,防止反编译!

2)ClassFinal项目源码地址:https://gitee.com/roseboy/classfinal

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/824901
推荐阅读
相关标签
  

闽ICP备14008679号