jar-protect —— Jar 包加壳工具
jar-protect 是 java 的 jar 加密加壳工具,对 class 文件进行加密防护,避免反编译破解,从而保护软件版权。
介绍
java 本身是开放性极强的语言,代码也容易被反编译,没有语言层面的一些常规保护机制,jar包很容易被反编译和破解。 受classfinal(已停止维护)设计启发,针对springboot日常项目开发,重新编写安全可靠的jar包加壳加密技术,用于保护软件版权。
使用说明
- 使用jdk8编译,支持jdk8+版本
- 目前支持springboot打包的jar文件(其他未测)
- 目前仅支持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); } } } |
- 自定义编码案例Base64+DES
- 自定义编码案例RSA
解密设计
解密命令
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= |
未来扩展
- 增加配置文件等资源加密
- 增加远程授权管理端
by 车江毅
技术vp
2023-7-3

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
每日一博 | 图文结合带你搞懂 GreatSQL 体系架构
往期系列回顾 图文结合系列之带你搞懂MySQL日志系列 很多小伙伴使用了GreatSQL,但是对GreatSQL的底层原理还不是很了解,今天就带大家一起揭开GreatSQL体系架构的神秘面纱! 首先来回顾一张经典的体系架构图: 图1_GreatSQL5.7 版本体系架构图 由此可以发现,GreatSQL5.7 由以下几部分组成 连接池组件 系统管理和控制工具 SQL接口组件 查询解析器 查询优化器 缓存组件 可插拔存储引擎 系统和日志文件 GreatSQL数据库区别于其他数据库的一个特点就是其可插拔的表存储引擎,特别需要注意的是,存储引擎是基于表的,而不是数据库。 然而,经典同时也意味着这幅图已经相当陈旧了。在GreatSQL8.0 及更高版本中,查询缓存这一功能已经被移除。 图2_GreatSQL8.0 版本体系架构图 总体来说,GreatSQL8.0 可以分为连接层、服务层、存储引擎层。 一、连接层(Client Connectors) 连接层又名为客户端连接器(Client Connectors)作用是提供与GreatSQL服务器建立的支持。 客户端通过TCP/IP协议与Grea...
- 下一篇
红帽为 RHEL 7 提供长达 4 年的延长生命周期支持
在红帽企业Linux 7(RHEL 7)标准的十年生命周期即将结束之际,一些企业发现他们无法在 2024 年 6 月 30 日之前完成计划中的迁移。为了支持 IT 团队赶上他们的迁移计划,红帽宣布为 RHEL 7 ELS 提供 4 年 ELS 维护期。 所有RHEL的大版本都遵循标准的十年生命周期。在前五年,红帽会提供全面支持,包括错误修复、安全补丁、软件增强、硬件支持和反向移植。在接下来的五年里,则提供维护支持,根据需要发布安全补丁和错误修复。 此后,RHEL 进入了延长生命周期阶段(Extended Life Phase,ELP)。在此期间,用户可以继续访问红帽客户门户和红帽知识库中以前发布的内容。此外,红帽还可能会提供有限的持续技术支持和迁移到当前支持的 RHEL 版本的建议。 对于需要在标准生命周期结束后继续使用大版本的企业,该公司提供延长生命周期支持(ELS,Extended Life Cycle Support)附加产品。此附加产品可将(红帽产品的某个)大版本的支持延长至标准发布生命周期结束后的最多 2 年。作为可选的附加订阅,ELS 可以获得对最后一个小版本的故障排除、选...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品