首页 > 其他分享 >利用classfinal-maven-plugin对jar进行加密,防止反编译

利用classfinal-maven-plugin对jar进行加密,防止反编译

时间:2024-10-31 14:43:09浏览次数:6  
标签:反编译 plugin jar server maven classfinal

背景:将jar包部署到其他服务器,如何保证自己的jar不会被反编译解密

一、如何打包成加密的jar

1、在pom文件中,添加这两项

A、

<dependency>
            <groupId>net.roseboy</groupId>
            <artifactId>classfinal-maven-plugin</artifactId>
            <version>1.2.1</version>
        </dependency>

B、

<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

java -javaagent:D:\custom-server\test-server-1.0.0.jar -jar D:\custom-server\test-server-1.0.0.jar

  

 

标签:反编译,plugin,jar,server,maven,classfinal
From: https://www.cnblogs.com/wwssgg/p/18517792

相关文章

  • java项目自启动方案——jar包做成服务(Windows版本)
    需求:公司做的很多项目都是属于客户端—服务器形式,在客户端部分运行了属于面向用户操作的项目jar包,客户端机器就不像服务器那样,经常会遇到重启机器的情况,所以让我们的项目能自启动就是个必须的工作。 方案:(1)环境:电脑需要安装Microsoft.NETFramework4,如果有的话这个可以不......
  • 【java应用】 Jmeter玩法:调用jar包实现AES加密
    原创方知本知从零做软件测试一、将开发提供的AESjava类打成jar包1.1打开开发提供的java类用Eclipse开发工具打开,观察包名。新建项目,在生成的src目录下新建包,名字为java类对应的包名,将java类拖到该包下面。1.2将该java类导出成jar包格式二、Jmeter调用jar包实现AES加......
  • jmeter java.security.NoSuchProviderException: JCE cannot authenticate the provid
    背景:需要用jmeter调用jar包,加解密的,jar包放到extras里,脚本调用发现会报标题的错误尝试:1.修改jdk版本,以为是jdk版本不兼容,从1.8.0-0184升级到1.8.0-034期间还配置了环境变量 结果:依然报错; 2.指定jmeter使用jdk版本在jmeter.bat中加入setJAVA_HOME=D:\ProgramFiles\Jav......
  • idea从新建一个maven项目到打包成可运行jar包全流程供接口测试签名使用
     1创建maven项目点击new-project 选择左侧的mavenArchetype修改Name,JDK,Catalog,Archetype(org.apache.maven.archetypes:maven-archetype-webapp)为下图中配置 修改地址(自选),版本号(自选),之后点击create 2配置maven在settings中找到下图中maven的位置,并自定义maven包,......
  • HarmonyOS NEXT 组件市场在DevEco Studio,安装出现Fail to load plugin descriptor fro
     HarmonyOSNEXT开源组件市场  https://gitee.com/harmonyos-cases/cases  根据gitee的下载连接,下载了cases-master.zip。如果在devstudio-settings-plugins-设置按钮-installfromdisk,会报错,说明这个不是真正的插件包。解压这个zip,在plugin文件夹下有个case_plug......
  • 面试官:自定义Loader和Plugin实现过吗?
    Loader案例:多语言翻译Loader这个自定义Loader旨在支持多语言翻译功能。在项目开发中,文本字符串通常会放在一个JSON文件中,如 en.json 和 zh.json,分别用于存储不同语言的文本。自定义Loader可以在编译过程中将代码中的特定标记(如 __t('KEY'))替换为对应语言的字符串,......
  • war和jar包的区别
    jar包javaArchive java归档文件是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件,javaSE程序可以打包成jar包(J可以理解为java了)介绍:jar文件是以ZIP文件格式为寄出的。不同点在于jar文件不仅用于压缩和发布,而且用于部署和封装库、组件和插件程序,并可被像编译器......
  • 在linux系统中,手动编写java代码,将接口打成jar供其他程序调用,实现方式
    本文是在学习java时做的记录工作目录:/root/JAVA1、编写接口文件IHello.java,将IHello.java文件放到usr/com/example目录下注意:usr不是根目录下的/usr,是在当前目录下创建usr/com/example,因为package需要指定目录。目录结构:.└──usr└──com└──......
  • manjaro升级完成后登录成功后黑屏,只有一个鼠标光标
    我使用manjaro也比较久了,第一次碰到了升级完成后,重启进入系统登录成功后,屏幕是黑色的,只有一个鼠标的光标。解决过程记录如下:一、新建了个新用户,使用终端登录后用startx进入桌面没有问题,说明不是系统的显示问题,是当前用画的配置文件有问题了;二、经过长时间排查后,定位到了~/.c......
  • WAR包和JAR包的区别
    WAR包和JAR包的区别:1.定义和用途;2.文件结构;3.部署环境;4.优势和局限性;5.应用场景。WAR包和JAR包是Java编程语言中常见的两种压缩文件格式,用于打包和分发Java应用程序了解这些差异对于Java开发者来说至关重要,它可以帮助他们更有效地管理和分发他们的应用程序。1.定义和用途JAR(J......