# 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);
}
}
}
}