Skip to content

eatmans/xjar-decrypt

Repository files navigation

XJar Decrypt

一款 XJar 加密 JAR 文件的通用解密工具,支持标准 XJar(AES/CBC)和自定义魔改版(AES/ECB)的自动检测与解密。

提供 GUI 图形界面CLI 命令行 双模式操作,支持单文件和批量解密。

功能特性

  • 双模式解密 — 标准 XJar (AES/CBC) + 自定义 ECB 模式 (AES/ECB)
  • 自动检测 — 根据加密特征自动判断解密模式,无需手动选择
  • GUI 界面 — 图形化操作,支持索引分析和条目过滤
  • CLI 命令行 — 支持自动化脚本、批量处理
  • 批量解密 — 可对整个目录的 JAR 文件批量操作
  • 智能过滤 — 跳过静态资源,或仅解密索引中记录的条目
  • 索引分析 — 可视化查看加密条目列表及统计信息

编译

需要 JDK 15+ 和 Maven:

mvn clean package

编译产物位于 target/xjar-decrypt-1.0.jar

使用方法

GUI 模式

无参数启动即可打开图形界面:

java -jar xjar-decrypt.jar

选择文件 → 输入密码 → 点击解密。工具会自动检测加密模式并处理。

支持功能:

  • 文件/目录选择
  • 索引分析(点击「分析加密索引」查看加密条目列表)
  • 条目过滤(跳过静态资源、仅解密索引条目、ANT 排除表达式)
  • 批量目录解密

CLI 模式

java -jar xjar-decrypt.jar <文件或目录> <密码> [选项]

位置参数

参数 说明
<文件或目录> 被加密的 jar/war/xjar 文件,或包含多个 jar 的目录
<密码> 解密密码

选项

选项 说明
-o, --output <目录> 输出目录(默认:源文件同目录)
-m, --mode <模式> 解密模式:standard / custom / auto(默认:auto
-s, --skip-static 跳过静态文件(html/css/js/png/yml/json 等),仅标准模式
-i, --use-index 仅解密索引(XJAR-INF/INDEXES.IDX)中记录的条目,仅标准模式
-e, --exclude <表达式> ANT 风格排除表达式,逗号分隔,仅标准模式
-a, --analyze 仅分析索引文件,不解密(不需要密码)
-h, --help 显示帮助

解密模式说明

模式 CLI 参数 说明
标准模式 standard 标准 XJar 加密,AES/CBC/PKCS5Padding
自定义ECB模式 custom 自定义魔改版 XJar,AES/ECB/PKCS5Padding
自动检测 auto(默认) 自动分析 JAR 特征选择合适的解密模式

示例

# 单文件解密(自动检测模式)
java -jar xjar-decrypt.jar app.jar "my_password"

# 批量解密整个目录
java -jar xjar-decrypt.jar /path/to/jars "my_password"

# 指定输出目录
java -jar xjar-decrypt.jar app.jar "my_password" -o /tmp/output

# 指定自定义ECB模式
java -jar xjar-decrypt.jar app.jar "my_password" -m custom

# 仅分析索引文件(不需要密码)
java -jar xjar-decrypt.jar app.jar -a

# 跳过静态文件 + 自定义排除
java -jar xjar-decrypt.jar app.jar "my_password" -s -e "lib/**,**/*.xml"

# 仅解密索引中的条目
java -jar xjar-decrypt.jar app.jar "my_password" -i

# 批量分析目录下所有 JAR 的索引
java -jar xjar-decrypt.jar /path/to/jars -a

自动检测逻辑

工具会检查以下特征来判断加密模式:

检测项 说明
自定义 Native 库 检查 win32-x86-64/linux-x86-64/ 下的 .dll/.so 文件
CLibrary.class 检查是否存在 JNA 接口(自定义加密特征)
XJar Launcher MANIFEST 中 Main-Class 是否为 XJarLauncher
XJar 密钥头 MANIFEST 中是否有 XJar-Algorithm 等属性

支持的加密类型

标准 XJar

使用 XJar 框架(core-lib/xjar)的标准加密方式:

  • 算法:AES/CBC/PKCS5Padding
  • 密钥:通过 SHA-512 → SecureRandom → KeyGenerator 派生
  • 加密范围:BOOT-INF/classes/ 下的 class 文件
  • 密码来源:命令行参数

自定义 ECB 模式

经过魔改的 XJar 加密实现:

  • 算法:AES/ECB/PKCS5Padding
  • 密钥:SHA-512(password) 前 16 字节直接截取
  • 加密范围:BOOT-INF/classes/ 下的 class 文件
  • 密码来源:Native 密钥库 (JNA) + stdin 回退

与标准 XJar 的主要差异:

特性 标准 XJar 自定义 ECB
加密模式 AES/CBC/PKCS5Padding AES/ECB/PKCS5Padding
IV
密钥派生 SecureRandom → KeyGenerator SHA-512 直接截取前 16 字节
密码来源 参数传入 Native 库 + stdin

项目结构

src/main/java/com/z0fsec/
├── XJarDecryptGUI.java       # GUI 图形界面 + 程序入口
├── XJarCLI.java              # CLI 命令行模式
├── XJarDecryptor.java        # 解密核心调度
├── XJarIndexReader.java      # XJar 索引文件读取
├── CustomEcbDecryptor.java   # 自定义ECB模式解密引擎
├── CustomEcbDetector.java    # 加密类型自动检测
└── DecryptMode.java          # 解密模式枚举

技术依赖

  • xjar 4.0.2 — XJar 加密框架(用于标准模式解密)
  • commons-compress — JAR/ZIP 归档处理
  • Java Swing — GUI 界面
  • JDK 15+

声明

本工具仅供安全研究与授权测试使用,请勿用于非法用途。未经授权对他人软件进行逆向解密可能违反相关法律法规。

About

XJar 自定义解密工具

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages