Java Class 加密工具 ClassFinal

您所在的位置:网站首页 机器加密 Java Class 加密工具 ClassFinal

Java Class 加密工具 ClassFinal

2024-01-27 17:09| 来源: 网络整理| 查看: 265

Jar包加密工具 ClassFinal 介绍环境依赖使用说明下载加密命令行示例 maven插件方式 无密码模式机器绑定启动加密后的jar启动参数给密码不加密码参数直接启动1. 密码文件获取 2. 交互输入 参考资料

介绍 ClassFinal 是一款 java class 文件安全加密工具,支持直接加密jar包或war包,无需修改任何项目代码,兼容spring-framework;可避免源码泄漏或字节码被反编译。加密后,原始的class文件中方法体被清空,当class被classloader加载时,真正的方法体会被解密注入。 为兼容spring,swagger等扫描注解的框架,故而保留了方法参数、注解等信息;反编译者只能看到方法名和注解;注意:为了保证项目在运行时的安全,启动jvm时请加参数: -XX:+DisableAttachMechanism 。

此参数的含义是禁用JVM的附加机制。在JVM中,有一个附加机制可以让外部进程通过Java Debug Wire Protocol(JDWP)协议附加到正在运行的Java进程上,从而获得进程的调试信息。这个机制在调试和诊断Java应用程序时非常有用。 然而,在某些情况下,禁用这个机制可以提高Java应用程序的安全性。例如,如果您希望限制外部进程对正在运行的Java进程的访问,或者想要确保Java进程不会被未经授权的用户附加和调试,您可以使用这个参数来禁用JVM的附加机制。当使用这个参数时,JVM将不再响应任何附加请求,从而防止外部进程通过JDWP协议附加到正在运行的Java进程上。 例:java -XX:+DisableAttachMechanism -jar MyApp.jar

环境依赖

JDK 1.8 +

使用说明 下载

点此下载

加密 命令行

执行以下命令

java -jar classfinal-fatjar.jar -file jerry.jar -libjars a.jar,b.jar -packages com.jerry1,com.jerry2 -exclude com.jerry.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 无需确认,不加此参数会提示确认以上信息

结果: 生成加密后的jar文件 jerry-encrypted.jar。执行时需带 javaagent 参数。

注: 也可以直接执行 java -jar classfinal-fatjar.jar 以交互式操作。

示例

我的jar包:jerry.jar,密码123456

java -jar classfinal-fatjar-1.2.1.jar -file jerry.jar -packages com.jerry -pwd 123456 -Y ========================================================= = = = Java Class Encryption Tool v1.2.1 by Mr.K = = = ========================================================= 加密信息如下: ------------------------- 1. jar/war路径: jerry.jar 2. lib下的jar: 3. 包名前缀: com.jerry 4. 排除的类名: 5. 加密配置文件: 6. ClassPath: 7. 密码: 123456 8. 机器码: ------------------------- 处理中... 加密完成,请牢记密码! ==>jerry-encrypted.jar maven插件方式

在要加密的项目pom.xml中加入以下插件配置,目前最新版本是:1.2.1。

${project.artifactId} org.springframework.boot spring-boot-maven-plugin net.roseboy classfinal-maven-plugin 1.2.1 jerry com.classfinal bootstrap.yml,application.yml org.spring jerry-common-core-0.0.1.jar,jerry-common-redis-0.0.1.jar package classFinal

运行mvn package时会在target下自动加密生成yourpaoject-encrypted.jar。 maven 插件的参数名称与直接运行的参数相同,请参考上节的参数说明。

无密码模式 加密时-pwd参数设为#,启动时可不用输入密码;(linux 下面#需要转义-pwd \#)如果是war包,启动时指定参数 -nopwd,跳过输密码过程。 机器绑定

机器绑定只允许加密的项目在特定的机器上运行; 加密时用 -code 指定机器码。机器绑定可同时支持机器码+密码的方式加密。 在需要绑定的机器上执行以下命令,生成机器码

java -jar classfinal-fatjar.jar -C 启动加密后的jar

加密后的项目需要设置 javaagent来启动,项目在启动过程中解密class,完全内存解密,不留下任何解密后的文件。

解密功能已经自动加入到 yourpaoject-encrypted.jar 中,所以启动时 -javaagent 与 -jar 相同,不需要额外的jar包。

密码读取顺序: 参数获取 >> 环境变量获取 >> 密码文件获取 >> 控制台输入 >> GUI输入 >> 退出

启动参数给密码

启动jar项目执行以下命令:注意:如果是win系统 "-pwd 0000000" 这里要用双引号。

java -javaagent:jerry-encrypted.jar="-pwd 0000000" -jar jerry-encrypted.jar //参数说明 // -pwd 加密项目的密码 // -pwdname 环境变量中密码的名字 不加密码参数直接启动 1. 密码文件获取 java -javaagent:yourpaoject-encrypted.jar -jar yourpaoject-encrypted.jar

不加 pwd 参数直接启动,优先从密码文件读取。 在同级目录下的classfinal.txt或jerry-encrypted.classfinal.txt中写入密码。

直接给密码:classfinal.txt

123456

参数化配置启动后删除:classfinal.txt

--pwd 123456 --del yes

这里的del只要不给false或no都会删除。

项目读取到密码后会清空此文件。

2. 交互输入

没有找到 密码文件 就会进入交互输入模式:先控制台输入还是没给密码就会进入 GUI输入模式,都不给密码,就报错退出了。

控制台输入 在这里插入图片描述GUI输入 在这里插入图片描述 参考资料

Gitee: https://gitee.com/roseboy/classfinal



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3