# Xjar破解

原文链接:Xjar加密破解 - sanduo blog,原链接写的很详细了,不过有些操作细节没有,我补充下。

Xjar介绍

Xjar是一款jar包加密工具,加密之后的jar,需要通过一个go语言脚本来启动。如果直接启动,会提示确实参数启动不起来。这时候可以在启动脚本和jar中间加一层把相应的密钥打出来,就可以用过xjar进行解密。

我手边正好有一台空闲服务器,选择在上面安装go,然后进行破解

安装go

yum install golang
go version # 如果安装成功会输出版本信息

解密

vim crack.go
package main
import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	input := bufio.NewScanner(os.Stdin) //初始化一个扫表对象
	for input.Scan() {                  //扫描输入内容
		line := input.Text() //把输入内容转换为字符串
		fmt.Println(line)    //输出到标准输出
	}
}

编译脚本,生成一个名为test的可执行文件

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o test crack.go

然后执行你自己的启动脚本。

# 原脚是这样的
./{xjar启动脚本} -jar {加密后的jar}
# 需要把编译后的test放在原脚本中间。另外脚本和jar都替换成自己的。
./{xjar启动脚本} ./test java -jar {加密后的jar} 

执行之后,会有如下结构的输出,最后一行就是你需要的密码

AES/CBC/PKCS5Padding
128
128
122dfdserw43543ewrewfddbvgfdgfdgfd

反编译

Java版本

<project>
    <!-- 设置 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>
            <!-- <scope>test</scope> -->
        </dependency>
    </dependencies>
</project>
import io.xjar.XKit;
import io.xjar.boot.XBoot;
import io.xjar.key.XKey;
import java.security.NoSuchAlgorithmException;
public class Crack {
    public static void main(String[] args) {
        String password = "122dfdserw43543ewrewfddbvgfdgfdgfd";
        XKey xKey;
        {
            try {
                xKey = XKit.key(password);
            } catch (NoSuchAlgorithmException e) {
                throw new RuntimeException(e);
            }
            try {
                  XBoot.decrypt("破解前的jar", "破解后的jar", xKey);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    }
}
posted @ 2025-04-24 15:33  DevLogic  阅读(358)  评论(0)    收藏  举报