IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java源码混淆,jar包加密,禁止反编译jar包 -> 正文阅读

[Java知识库]Java源码混淆,jar包加密,禁止反编译jar包

??对jar包加密

使用 XJar 对jar包进行加密。GitHub: https://github.com/core-lib/xjar

Spring Boot JAR 安全加密运行工具, 同时支持的原生JAR

基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动, 动态解密运行的方案, 避免源码泄露以及反编译

功能特性

  1. 无代码侵入, 只需要把编译好的JAR包通过工具加密即可.
  2. 完全内存解密, 降低源码以及字节码泄露或反编译的风险.
  3. 支持所有JDK内置加解密算法.
  4. 可选择需要加解密的字节码或其他资源文件.
  5. 支持Maven插件, 加密更加便捷.
  6. 动态生成Go启动器, 保护密码不泄露.

??使用步骤

??maven加载依赖包xjar

需要先设置jitpack.io的仓库地址,不然可能下载不了依赖包

在 pom.xml 合适位置加入以下代码

	<!-- 设置 jitpack.io 仓库 -->
    <repositories>
        <repository>
            <id>jitpack.io</id>
            <url>https://jitpack.io</url>
        </repository>
    </repositories>
    <!-- 添加 XJar 依赖 -->
    <dependencies>
        <dependency>
            <groupId>com.github.core-lib</groupId>
            <artifactId>xjar</artifactId>
            <version>4.0.2</version>
            <!-- 如果使用 JUnit 测试类来运行加密可以将 XJar 依赖的 scope 设置为 test. -->
            <!-- <scope>test</scope> -->
        </dependency>
    </dependencies>

??加密Demo

import io.xjar.XCryptos;

/**
 * @author ber
 * @version 1.0
 * @date 22/3/11 20:39
 */
public class Encrypt {
    public static void main(String[] args) throws Exception {
        XCryptos.encryption()
                .from("/path/to/read/plaintext.jar")
                .use("password")
                .include("/io/xjar/**/*.class")
                .include("/mapper/**/*Mapper.xml")
                .exclude("/static/**/*")
                .exclude("/conf/*")
                .to("/path/to/save/encrypted.jar");
    }
}

其中/path/to/read/ 待加密jar包路径, password加密密码, /path/to/save/加密后jar包输出路径。

加密后会产生encrypted.jarxjar.goxjar_agentable.go三个文件。
其中encrypted.jar是加密后的jar包。xjar.go是Go启动器源码文件,后面编译时需要用到。

具体方法详细介绍

方法名称参数列表是否必选方法说明
from(String jar)二选一指定待加密JAR包路径
from(File jar)指定待加密JAR包文件
use(String password)二选一指定加密密码
use(String algorithm, int keysize, int ivsize, String password)指定加密算法及加密密码
include(String ant)可多次调用指定要加密的资源相对于classpath的ANT路径表达式
include(Pattern regex)可多次调用指定要加密的资源相对于classpath的正则路径表达式
exclude(String ant)可多次调用指定不加密的资源相对于classpath的ANT路径表达式
exclude(Pattern regex)可多次调用指定不加密的资源相对于classpath的正则路径表达式
to(String xJar)二选一指定加密后JAR包输出路径, 并执行加密.
to(File xJar)指定加密后JAR包输出文件, 并执行加密.
  • 指定加密算法的时候密钥长度以及向量长度必须在算法可支持范围内, 具体加密算法的密钥及向量长度请自行百度或谷歌

  • include 和 exclude 同时使用时即加密在include的范围内且排除了exclude的资源

??编译运行脚本

编译环境下需要安装GoLang环境,而在运行环境下不需要安装。
在不同平台下编译会得到不同平台的启动器。Windows下编译的启动器不能在linux下使用

go build xjar.go
  • xjar.go前面有说过,是Go启动器源码文件.
  • 将 xjar.go 在不同的平台进行编译即可得到不同平台的启动器可执行文件, 其中Windows下文件名为 xjar.exe 而Linux下为 xjar(再次说)
  • 由于启动器自带JAR包防篡改校验, 故启动器无法通用, 即便密码相同也不行(强调)

??启动加密的jar包

/path/to/xjar /path/to/java [OPTIONS] -jar /path/to/encrypted.jar [ARGS]

/path/to/xjar /path/to/javaw [OPTIONS] -jar /path/to/encrypted.jar [ARGS]

nohup /path/to/xjar /path/to/java [OPTIONS] -jar /path/to/encrypted.jar [ARGS]
  • 在 Java 启动命令前加上编译好的Go启动器可执行文件名(xjar)即可启动运行加密后的JAR包.
  • 若使用 nohup 方式启动则 nohup 要放在Go启动器可执行文件名(xjar)之前.
  • 若Go启动器可执行文件名(xjar)不在当前命令行所在目录则要通过绝对路径或相对路径指定.
  • 仅支持通过 -jar 方式启动, 不支持-cp或-classpath的方式.
  • -jar 后面必须紧跟着启动的加密jar文件路径
  • 例子: 如果当前命令行就在 xjar 所在目录, java 环境变量也设置好了 ./xjar java -Xms256m -Xmx1024m -jar /path/to/encrypted.jar

待补充插件方式生成加密jar包, Github:xjar-maven-plugin

代码混淆等后续补充,待续。。。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 17:18:07  更:2022-03-12 17:18:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:46:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码