jar-protect 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
jar-protect 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
jar-protect 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache
开发语言 Java
操作系统 跨平台
软件类型 开源软件
所属分类 开发工具Java开发工具
开源组织
地区 国产
投 递 者 车江毅
适用人群 未知
收录时间 2023-07-04

软件简介

jar-protect 是 java 的 jar 加密加壳工具,对 class 文件进行加密防护,避免反编译破解,从而保护软件版权。

介绍

java 本身是开放性极强的语言,代码也容易被反编译,没有语言层面的一些常规保护机制,jar包很容易被反编译和破解。 受classfinal(已停止维护)设计启发,针对springboot日常项目开发,重新编写安全可靠的jar包加壳加密技术,用于保护软件版权。

使用说明

  1. 使用jdk8编译,支持jdk8+版本
  2. 目前支持springboot打包的jar文件(其他未测)
  3. 目前仅支持class文件加密

加密设计

 

加密命令

jdk17 需要加--add-opens java.base/java.lang=ALL-UNNAMED

1
2
3
4
#fromJar 待加密的jar包的地址,支持相对路径
#excludeClass 排除(不加密)类文件,支持前后*进行模糊匹配
#includeJar 包含(需要加密)jar包,支持前后*进行模糊匹配
java -jar jar-project.jar --fromJar "c:\\tool\\a.jar" --excludeClass "*EurekaApplication*" --includeJar "lmc-*"

加密配置

文件名: jar-project.security.properties

1
2
3
4
5
6
7
8
#过期时间,为空则不限制过期时间(默认到9999-01-01)
expireTime=2023-07-01
#加密密码,为空则随机生成动态密码
password=
#加密解密文件地址(加密java代码源码),为空则使用自带des加密
myEncryptCodeFile=加密.java
#加密方写入的版权信息声明,为空则无
myVersionInfo=请正规渠道获得版本授权文件,严禁进行反编译修改或破解,一经发现会追溯法律责任!

 

加密.java模板

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
26
27
package com.free.bsf.jarprotect.core.encrypt;
import com.free.bsf.jarprotect.core.base.BsfException;
import com.free.bsf.jarprotect.core.base.Context;
import com.free.bsf.jarprotect.core.encrypt.IEncrypt;
 
/*MyEncrypt类名不能更改,注意引用相应的包(仅支持jdk自身的类库,不能使用第三方类库)*/
public class MyEncrypt implements IEncrypt {
    @Override
    public byte[] e(byte[] d) {
        try {
           //Context.Default.getPassword()
           /*加密逻辑代码*/
        }catch (Exception e){
            throw new BsfException(e);
        }
    }
 
    @Override
    public byte[] d(byte[] d) {
        try {
            //Context.Default.getPassword()
            /*解密逻辑代码*/
        }catch (Exception e){
            throw new BsfException(e);
        }
    }
}

解密设计

 

解密命令

jdk17 需要加--add-opens java.base/java.lang=ALL-UNNAMED

1
java -javaagent:encrypt-lmc-demo-provider-1.0-SNAPSHOT.jar -jar encrypt-lmc-demo-provider-1.0-SNAPSHOT.jar

解密配置

一般为加密jar包后自动生成,文件名为{jar包名}.security.properties,解密jar需要配套此解密配置文件

1
2
3
4
#加密密码
password=
#解密秘钥代码
myDecryptCode=

未来扩展

  1. 增加配置文件等资源加密
  2. 增加远程授权管理端

 

by 车江毅

技术vp

2023-7-3

 

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击加入讨论🔥(3) 发布并加入讨论🔥
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
3 评论
68 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部