Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Xjar_tips — Ottieni i parametri del programma di crittografia | Kitploit
Strumenti/GitHubGitHub/jas502n/xjar_tips
Analisi StaticaStrumenti di Crittografia/DecrittografiaReverse EngineeringCrittografiaAnalisi di Binari
GitHubjas502n/xjar_tips

Xjar_tips

Ottieni i parametri del programma di crittografia

Vedi Repository
13724 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Xjar_tips

Introduzione:

root@kitploit:~
Strumento per l'esecuzione sicura e la crittografia dei JAR Spring Boot, supporta anche i JAR nativi.
Basato sulla crittografia delle risorse all'interno del JAR e sull'estensione del ClassLoader, costruisce una soluzione di avvio crittografato ed esecuzione con decrittazione dinamica, evitando la fuga del codice sorgente e la decompilazione.

Caratteristiche
  Nessuna intrusione nel codice: basta crittografare il JAR compilato con lo strumento.
  Decrittazione completamente in memoria: riduce il rischio di fuga del codice sorgente o del bytecode e di decompilazione.
  Supporta tutti gli algoritmi di crittografia/decrittografia integrati nella JDK.
  È possibile selezionare il bytecode o altri file di risorse da crittografare/decrittografare.
  Supporta il plugin Maven, la crittografia è più comoda.
  Genera dinamicamente il launcher Go, proteggendo la password da eventuali fughe.

Il binario xjar è scritto in Go e memorizza la chiave segreta e altre informazioni; xxx-1.0-SNAPSHOT.xjar è il file crittografato con AES.

Scopo: per ottenere i parametri che il launcher xjar passa alla JVM, è possibile stamparli tramite il flusso di output standard.

Comando normale per eseguire il JAR crittografato con xjar:

root@kitploit:~
Scarica lo strumento
$ ps -ef |grep java |grep xjar $ file xjar xjar: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, Go BuildID=xx-C, not stripped $ ./xjar java -jar xxx-1.0-SNAPSHOT.xjar

Versione Java:

root@kitploit:~
public class f {

    static {
        try {
            java.io.BufferedReader br = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));

            System.out.println("[+] Get Jvm Stdin Input: ");
            String input = br.readLine();
            while (input != null) {
                System.out.println("args = " + input);
                input = br.readLine();
            }


        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public static void main(String[] args) {

    }

}

Compilazione:

root@kitploit:~
javac f
Ottenere i parametri JVM
root@kitploit:~
./xjar java f java -jar ./xxx-1.0-SNAPSHOT.xjar
Informazioni di output:
root@kitploit:~
[+] Get Jvm Stdin Input:
args = AES/CBC/PKCS5Padding
args = 128
args = 128
args = Passw0rd

Codice Go corrispondente di xjar:

https://github.com/core-lib/xjar/blob/master/src/main/resources/xjar/xjar.go

root@kitploit:~
var xKey = XKey{
	algorithm: []byte{#{xKey.algorithm}}, =>> AES/CBC/PKCS5Padding
	keysize:   []byte{#{xKey.keysize}},   =>> 128
	ivsize:    []byte{#{xKey.ivsize}},    =>> 128
	password:  []byte{#{xKey.password}},  =>> Passw0rd
}

Digressione:

Questa password può essere trovata cercando parole chiave con strings xjar

root@kitploit:~
$ strings xjar |grep -B 10 "AES/CBC/PKCS5Padding"

Analisi IDA:

root@kitploit:~
.text:00000000004AB7BB	main.main	                mov     rbx, cs:off_573F48 ; "Passw0rd\t"
.noptrdata:0000000000560120	0000000A	C	Passw0rd\t

In main.main:

root@kitploit:~
lea     rbx, [rsp+170h+var_126]
mov     [rsp+170h+var_50], rbx
mov     rbx, cs:off_573F48 ; "Passw0rd\t"

Decrittazione con la password:

Si divide principalmente in JAR versione Spring Boot e JAR singolo.

Decrittazione per versione Spring Boot:

root@kitploit:~
String password = "Passw0rd"; //设置密码
XKey xKey = XKit.key(password);
XBoot.decrypt("/path/to/read/encrypted.jar", "/path/to/save/decrypted.jar", xKey);

Decrittazione per JAR singolo:

root@kitploit:~
String password = "Passw0rd";
XKey xKey = XKit.key(password);
XJar.decrypt("/path/encrypted.jar", "/path/decrypted.jar", xKey);

Link di riferimento: code audit - cracking della crittografia xjar

https://mp.weixin.qq.com/s/donLtYHXz5BWsF5AnOOmYA

Versione Go:

root@kitploit:~
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	input := bufio.NewScanner(os.Stdin) //初始化一个扫表对象
	for input.Scan() {                  //扫描输入内容
		line := input.Text() //把输入内容转换为字符串
		fmt.Println(line)    //输出到标准输出
	}
}
Comando corrispondente:
root@kitploit:~
./xjar ./xjarCrack java -jar xxx-1.0-SNAPSHOT.xjar

Versione PHP:

root@kitploit:~
<?php var_dump(file_get_contents('php://stdin'));
Comando corrispondente:
root@kitploit:~
./xjar php test.php java -jar xxx-1.0-SNAPSHOT.xjar