前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >有了这个工具,再也不担心代码被抄袭 !

有了这个工具,再也不担心代码被抄袭 !

作者头像
永恒君
发布2022-12-07 17:23:35
1.4K0
发布2022-12-07 17:23:35
举报
文章被收录于专栏:开源小分队开源小分队

大家好,我是爱撸代码的开源大叔!

在开发项目时,我们不希望自己的代码被别人抄袭,但是 Java 开发的项目可以被反编译,我们可以用代码混淆的方式来解决。Java 代码混淆就是为了保护 Java 源代码,对编译好的 class 文件进行混淆处理。

常见的加密方式:

对 class 文件的字节码完全加密

对 class 文件混淆:字节码混淆,比如对类名、变量名、方法名进行替换。

今天给大家推荐一款好用的代码混淆工具 -- classfinal。

项目简介

ClassFinal 是 java class文件安全加密工具,支持直接加密jar包或war包,无需修改任何项目代码,兼容spring-framework。

基于 -agentJava:xxx.jar 这一原理,加密时对 class 文件做了两次处理,一次是对 class 文件的字节码完全加密,一次是对 class 文件混淆,这个混淆是保留成员和方法,对方法内部实现进行隐藏;解密时,判断如果该类是自己加密过的,找到完全加密的字节码进行解密,如果不是自己加密的就跳过。其对 class 文件混淆,就是方便类似 SpringBoot 等三方框架直接分析 class 文件。

项目特性

  • 不用修改源代码,直接对 jar 或者 war 包进行加密
  • 支持普通 jar 包、springboot jar 包以及 java web 项目编译的 war 包。
  • 支持 maven 插件,在打包过程中直接加密。
  • 支持加密配置文件
  • 支持指定机器,加密后 jar 或者 war 只能在指定机器上运行
  • 加密后文件通过 jd-gui 或者 IDE 打开后是空文件或者是空方法

项目使用

下载项目

代码语言:javascript
复制
https://repo1.maven.org/maven2/net/roseboy/classfinal-fatjar/1.2.1/classfinal-fatjar-1.2.1.jar

加密jar包

代码语言:javascript
复制
java -jar classfinal-fatjar.jar -file test.jar -libjars a.jar,b.jar -packages com.demo -exclude com.demo.Main -pwd 1qaz -Y


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

注意:packages 这个参数必须指定!

生成的 test-encrypted.jar 就是加密后的文件,加密后的文件不可直接执行,需要配置 javaagent。

maven 插件加密

在pom.xml中加入以下插件配置:

代码语言:javascript
复制
<plugin>
    <!-- https://gitee.com/roseboy/classfinal -->
    <groupId>net.roseboy</groupId>
    <artifactId>classfinal-maven-plugin</artifactId>
    <version>${classfinal.version}</version>
    <configuration>
        <password>1qaz</password><!--加密打包之后pom.xml会被删除,不用担心在jar包里找到此密码-->
        <packages>com.demo</packages>
        <cfgfiles>application.yml</cfgfiles>
        <excludes>org.spring</excludes>
        <libjars>a.jar,b.jar</libjars>
    </configuration>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>classFinal</goal>
            </goals>
        </execution>
    </executions>
</plugin>

加密文件启动

加密后的项目需要设置 javaagent 来启动,并且要指定密码。

代码语言:javascript
复制
java -javaagent:test-encrypted.jar -jar test.jar

启动后在控制台里输入密码。

总结

ClassFinal 是一款不错的文件加密方式,使用起来很方便,不需要改动源代码,有了它在也不担心代码被抄袭了!感兴趣的小伙伴赶快下载试试吧~

代码语言:javascript
复制
项目地址:https://gitee.com/roseboy/classfinal
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-11-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源小分队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 项目简介
  • 项目特性
  • 项目使用
    • 下载项目
      • 加密jar包
        • maven 插件加密
          • 加密文件启动
            • 总结
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档