利用classfinal-maven-plugin对jar进行加密,防止反编译
背景:将jar包部署到其他服务器,如何保证自己的jar不会被反编译解密
一、如何打包成加密的jar
1、在pom文件中,添加这两项
A、
1 2 3 4 5 | <dependency> <groupId>net.roseboy</groupId> <artifactId>classfinal-maven-plugin</artifactId> <version> 1.2 . 1 </version> </dependency> |
B、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <plugin> <!-- 【 1 】加密后,方法体被清空,保留方法参数、注解等信息;是为了兼容spring、swagger等扫描注解的框架 【 2 】方法体被清空后,反编译者只看到方法名和注解,看不到方法的具体内容 【 3 】加密后的项目需要设置javaagent来启动,启动过程中解密 class ,完全内存解密,不留下任何解密后的文件 【启动加密的Jar】: 生成 xxx-encrypted.jar,这个就是加密后的jar文件:加密后的文件不可执行 无密码:需要java -javaagent:xxx-encrypted.jar -jar xxx-encrypted.jar 有密码:java -javaagent:xxx -encrypted.jar = '-pwd 000000' -jar xxx-encrypted.jar --> <groupId>net.roseboy</groupId> <artifactId>classfinal-maven-plugin</artifactId> <version> 1.2 . 1 </version> <configuration> <password>#</password> <!--加密密码,如果是#号,则使用无密码模式加密--> <packages>com.bk</packages> <!--加密的包名(可为空,多个用“,”分割)--> </configuration> <executions> <execution> <phase> package </phase> <goals> <goal>classFinal</goal> </goals> </execution> </executions> </plugin> |
这样打包出来的jar,反编译看到class文件,不能看到方法体里面的内容,只能看到方法名称
二、如何运行加密的jar
1 | java -javaagent:D:\custom-server\test-server- 1.0 . 0 .jar -jar D:\custom-server\test-server- 1.0 . 0 .jar |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】