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
llvm-jutsu — Ofuscación anti-LLM mediante conteo de dedos | Kitploit
Herramientas/GitHubGitHub/thebabush/llvm-jutsu
Análisis EstáticoAnálisis de CódigoIngeniería InversaAnálisis de BinariosSeguridad de IAAtaque Adversario
GitHubthebabush/llvm-jutsu

llvm-jutsu

Ofuscación anti-LLM mediante conteo de dedos

Ver Repositorio
23914hace 8 mesesRevisado por Kitploit

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

llvm-jutsu: ofuscación anti-LLM

Este es un entero de 32 bits

0xDEADBEEF codificado como manos

El Problema

Estamos en 2025. Has pasado semanas creando la verificación de licencia perfecta. Has usado todos los trucos del libro: predicados opacos, aplanamiento de flujo de control, expresiones MBA. Lo despliegas. En cuestión de horas, algún tipo pega tu binario en Claude y pregunta "¿cuál es la clave de licencia?" y el modelo simplemente... se la dice.

Las máquinas han ganado. ¿O no?

El Antiguo Arte del Kuji-in

Durante siglos, los ninjas han usado sellos de manos para canalizar chakra y realizar jutsus. Lo que los pergaminos no cuentan es que estas formaciones de manos tienen el poder de proteger secretos de las máquinas.

llvm-jutsu es un pase de ofuscación de LLVM que reemplaza constantes enteras con gestos de manos. Cada byte se codifica como una mano de 8 dedos donde las posiciones de los dedos representan bits. Dedo extendido = 1. Dedo doblado = 0. La máquina ve la imagen, se queda sin contexto y no puede más que rendirse ante el ingenio humano. El reversor humano entrecierra los ojos, lee los dedos y obtiene la respuesta.

Hemos restaurado el equilibrio del universo.

¿Realmente Funciona?

Sí.

Testimonios

"Puedo ver cuatro manos, cada una con cinco dedos" — ChatGPT, 2025

Testimonio de ChatGPT

Claude intentando descifrarlo

Fallo de Claude

FAQ

P: ¿No puedo simplemente subir esto a Mechanical Turk y pagar a humanos para que los decodifiquen?

R: Sí. Ese es el punto. Ahora estás pagando a humanos para hacer trabajo que los LLMs solían hacer gratis. La economía de los reversores ha vuelto. Se están creando empleos. El PIB está subiendo. De nada.

P: ¿No puedo simplemente entrenar un modelo para desofuscar esto?

R: Absolutamente puedes. Recopila datos de entrenamiento, etiqueta miles de imágenes de manos, afina un modelo de visión, despliégalo, mantenlo. Para cuando termines, podrías haberte leído los dedos tú mismo.

P: ¿Por qué manos? ¿Por qué no pies?

R: Una palabra: Tarantino.

P: ¿No es esto solo seguridad por oscuridad?

R: Toda seguridad es oscuridad.

P: ¿Esto está listo para producción?

R: 100%, úsalo en producción.

Cómo Funciona

root@kitploit:~
Tu Código                         Ofuscado
─────────                         ──────────

if (key == 0xDEADBEEF) {    →     if (compare_hand_png(key, embedded_png)) {
    grant_access();                   grant_access();
}                                 }

En tiempo de compilación, hacemos:

  1. Encontramos todas las instrucciones icmp eq/ne que comparan con constantes enteras
  2. Renderizamos la constante como un PNG de gesto de mano (4 manos para i32, dispuestas 2×2)
  3. Incrustamos el PNG como una constante global
  4. Reemplazamos la comparación con una llamada a compare_hand_png()

En tiempo de ejecución, el programa:

  1. Renderiza el valor en tiempo de ejecución usando geometría de mano idéntica
  2. Compara los dos PNGs
  3. Devuelve coincidencia/no coincidencia

La clave: el PNG es la única representación de la constante en el binario. No hay 0xDEADBEEF que buscar. Solo vibraciones. Y manos.

Codificación Visual

Un entero de 32 bits se convierte en cuatro manos, cada una representando un byte. Pulgar = bit 7, dedos = bits 6 a 0. Extendido = 1, doblado = 0.

root@kitploit:~
0xDEADBEEF

┌─────────┬─────────┐
│ byte 0  │ byte 1  │
│  0xEF   │  0xBE   │
├─────────┼─────────┤
│ byte 2  │ byte 3  │
│  0xAD   │  0xDE   │
└─────────┴─────────┘

Características Anti-LLM

Cada mano incluye transformaciones derivadas del hash que preservan la legibilidad humana mientras maximizan la confusión del modelo:

  • Rotación (0 a 360°): Las manos giran basadas en el hash completo del i32. Los modelos tienen problemas con objetos rotados.
  • Desplazamiento de tono: Los colores de relleno varían por mano. Mismo patrón de dedos, diferentes colores.
  • Aleatorización del color del trazo: Los colores del contorno abarcan todo el espacio RGB.
  • Movimiento de dedos: Desplazamientos sutiles de ángulo y posición por dedo. Orgánico, no mecánico.
  • Dependencias entre manos: Todas las transformaciones derivan del valor completo de 32 bits, no de bytes individuales. No dividir y conquistar.

La proporción áurea (φ ≈ 1.618) se usa extensamente para asegurar que manos adyacentes nunca compartan transformaciones similares. Los antiguos sabían lo que hacían.

Construcción

root@kitploit:~
# Necesitas LLVM 15+ y una creencia funcional en el poder del ninjutsu
make

# Esto produce:
#   llvm-jutsu.so    El pase de LLVM
#   example.obfuscated    Tu binario ofuscado

Uso

root@kitploit:~
# Compila tu código a IR de LLVM
clang -O0 -emit-llvm -S -o code.ll code.c

# Ejecuta el jutsu
opt -load-pass-plugin=./llvm-jutsu.so -passes=llvm-jutsu -o obfuscated.bc code.ll

# Enlaza con el runtime de comparación de manos
llvm-link obfuscated.bc lodepng.bc hand_png_helper.bc -o linked.bc

# Compila a binario
clang -O2 linked.bc -lc++ -o protected

Limitaciones

  • Rendimiento: Renderizar y comparar PNGs en tiempo de ejecución no es rápido. Esto es protección espiritual, no optimización de rendimiento.
  • Tamaño del binario: Cada constante incrusta un PNG de ~30KB. Tu crackme de 50KB ahora es de 50MB. Considérelo una característica. Más bytes, más confusión.
  • Solo maneja eq/ne de i32: 32 bits deberían ser suficientes para cualquiera.
  • Determinismo de punto flotante: Pueden ocurrir variaciones menores entre plataformas. La comparación difusa maneja esto, pero si estás ejecutando en un Pentium 4, que los dioses te ayuden.

La Filosofía

La ingeniería inversa moderna se ha convertido en una conversación con una IA. Sube binario, haz preguntas, recibe respuestas. El humano es meramente un ingeniero de prompts, un intermediario entre IDA y GPT. Un sloperador.

llvm-jutsu es un retorno a la tradición. El reversor debe mirar las manos. Leer los dedos. Sentir los bits. No hay atajo. No hay "solo pregúntale a Claude". Solo estás tú, la pantalla y ocho dedos por byte.

No estamos en contra de la IA. Estamos a favor de lo humano. Creemos que si alguien va a crackear tu software, al menos debería estar hecho de carne.

Créelo.

Licencia

MIT. Úsalo para el bien, úsalo para el mal, úsalo para lo que sea. Nos lavamos las manos ante la multitud.

Créditos

  • Lode Vandevenne por lodepng
  • Masashi Kishimoto por Naruto

"Cuando la gente está protegiendo algo verdaderamente especial para ellos, realmente pueden volverse tan fuertes como pueden serlo." — Naruto Uzumaki

Descargar herramienta