Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Xjar_tips — Obtener los parámetros del programa de cifrado | Kitploit
Herramientas/GitHubGitHub/jas502n/xjar_tips
Análisis EstáticoHerramientas de Cifrado/DescifradoIngeniería InversaCriptografíaAnálisis de Binarios
GitHubjas502n/xjar_tips

Xjar_tips

Obtener los parámetros del programa de cifrado

Ver Repositorio
137hace 4 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Xjar_tips

Introducción:

root@kitploit:~
Herramienta de ejecución con cifrado seguro para JAR de Spring Boot, compatible también con JAR nativos.
Basada en el cifrado de los recursos dentro del paquete JAR y en la extensión de ClassLoader, construye un esquema de arranque cifrado del programa y ejecución con descifrado dinámico, evitando la fuga del código fuente y la descompilación.

Características
  Sin intrusión de código, solo hay que cifrar el paquete JAR compilado con la herramienta.
  Descifrado completamente en memoria, reduce el riesgo de fuga del código fuente y del bytecode o de descompilación.
  Soporta todos los algoritmos de cifrado/descifrado integrados en el JDK.
  Permite seleccionar el bytecode u otros archivos de recursos que se deban cifrar/descifrar.
  Soporta el plugin de Maven, lo que hace el cifrado más conveniente.
  Genera dinámicamente un lanzador Go para proteger la contraseña contra fugas.

El binario xjar está escrito en Go y almacena información como la clave secreta; xxx-1.0-SNAPSHOT.xjar es el archivo cifrado con AES.

Objetivo: para obtener los parámetros que el lanzador xjar pasa a la JVM, se pueden imprimir usando el flujo de salida estándar.

Comando normal para ejecutar el JAR cifrado con xjar:

root@kitploit:~
$ 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

Versión 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) {

    }

}

Compilación:

root@kitploit:~
javac f
Obtener parámetros de JVM
root@kitploit:~
./xjar java f java -jar ./xxx-1.0-SNAPSHOT.xjar
Información de salida:
root@kitploit:~
[+] Get Jvm Stdin Input:
args = AES/CBC/PKCS5Padding
args = 128
args = 128
args = Passw0rd

Código Go correspondiente de 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
}

Nota adicional:

Esta contraseña se puede encontrar mediante strings xjar buscando la palabra clave.

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

Análisis con IDA:

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

En main.main:

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

Descifrado con la contraseña:

Principalmente se divide en JAR de versión Spring Boot y JAR individual.

Descifrado de la versión 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);

Descifrado de JAR individual:

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

Enlace de referencia: Auditoría de código - descifrado de xjar

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

Versión 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 correspondiente:
root@kitploit:~
./xjar ./xjarCrack java -jar xxx-1.0-SNAPSHOT.xjar

Versión PHP:

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