Java代码混淆加密之ClassFinal

一:介绍

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

二:功能特性

  • 无需修改原项目代码,只要把编译好的jar/war包用本工具加密即可。
  • 运行加密项目时,无需求修改tomcat,spring等源代码。
  • 支持普通jar包、springboot jar包以及普通java web项目编译的war包。
  • 支持spring framework、swagger等需要在启动过程中扫描注解或生成字节码的框架。
  • 支持maven插件,添加插件后在打包过程中自动加密。
  • 支持加密WEB-INF/lib或BOOT-INF/lib下的依赖jar包。
  • 支持绑定机器,项目加密后只能在特定机器运行。
  • 支持加密springboot的配置文件。

三:实操步骤

1.下载源码

git地址:https://gitee.com/roseboy/classfinal.git

2.项目打包

注:加密程序包位置

3.加密前准备

获取专属机器码:执行dos 命令

java -jar classfinal-fatjar-1.2.1.jar -C

4.开始加密

4.1 加密执行dos命令

java -jar classfinal-fatjar.jar -file ${需要的包的jar} -libjars ${需加密的依赖包1},${需加密的依赖包2} -packages ${加密包名1},${加密包名2} -exclude ${无需加密的文件} -pwd ${密码} -code ${机器码} -Y

4.2 命令之参数说明

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

4.3 demo

jar包:demo.jar
密码:123456
code:8289EC0890F26285EC4771FE8036D59FD41D8CD98F00B204E9800998ECF8427ED41D8CD98F00B204E9800998ECF8427E
code获取:java -jar classfinal-fatjar-1.2.1.jar -C
加密命令:
java -jar classfinal-fatjar-1.2.1.jar -file demo.jar -packages ${com.test.server} -pwd ${pwd} -code ${code} -Y
=========================================================
=                                                       =
=      Java Class Encryption Tool v1.2.1   by Mr.K      =
=                                                       =
=========================================================
加密信息如下:
-------------------------
1. jar/war路径: demo.jar
2. lib下的jar:
3. 包名前缀:  com.test.server
4. 排除的类名:
5. 加密配置文件:
6. ClassPath:
7. 密码:     123456
8. 机器码:           8289EC0890F26285EC4771FE8036D59FD41D8CD98F00B204E9800998ECF8427ED41D8CD98F00B204E9800998ECF8427E
-------------------------

处理中...
加密完成,请牢记密码!
==>demo-encrypted.jar

4.4启动jar命令

java -javaagent:demo-encrypted.jar -jar demo-encrypted.jar

之后根据提示后输入刚才加密时输入的密码,完成启动。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                                                END  撒花~~

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java开发中,JAR文件是一种常见的文件类型,用于打包和部署Java应用程序。然而,由于JAR文件中的字节码可以轻松反编译,所以为了保护代码的安全性和知识产权,我们可以使用混淆加密技术。 混淆是一种通过对源代码进行重命名、删除无用代码和添加无意义代码等措施,使得反编译后的代码难以理解和分析的技术。混淆并不改变程序的逻辑和功能,只是在代码的外观上进行改变。通过混淆,即使逆向工程师尝试反编译和理解代码,也会因为代码的复杂性和可读性降低而变得困难。 另一方面,加密是一种将代码转换为无法直接理解的形式的技术。在Java中,我们可以使用各种加密算法,如对称加密算法(如AES)或非对称加密算法(如RSA),对JAR文件进行加密加密后,JAR文件只能通过正确的密钥进行解密,这就提高了代码的保密性,即使有人获取了加密的JAR文件,也无法直接获取代码的原始内容。 综上所述,通过对JAR文件进行混淆加密,可以在一定程度上提高Java应用程序的安全性和保密性。混淆可以使反编译变得困难,而加密可以确保只有授权的用户才能解密和使用JAR文件中的代码。然而,需要注意的是,混淆加密并不能完全阻止逆向工程,只能增加攻击者获取代码的难度,因此在确保代码安全的同时,还需要其他安全措施的配合。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.杨先森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值