
Ofuscación anti-LLM mediante conteo de dedos
Este es un entero de 32 bits
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?
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.
Sí.
"Puedo ver cuatro manos, cada una con cinco dedos" — ChatGPT, 2025
Claude intentando descifrarlo
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.
Tu Código Ofuscado
───────── ──────────
if (key == 0xDEADBEEF) { → if (compare_hand_png(key, embedded_png)) {
grant_access(); grant_access();
} }
En tiempo de compilación, hacemos:
icmp eq/ne que comparan con constantes enterascompare_hand_png()En tiempo de ejecución, el programa:
La clave: el PNG es la única representación de la constante en el binario. No hay 0xDEADBEEF que buscar. Solo vibraciones. Y manos.
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.
0xDEADBEEF
┌─────────┬─────────┐
│ byte 0 │ byte 1 │
│ 0xEF │ 0xBE │
├─────────┼─────────┤
│ byte 2 │ byte 3 │
│ 0xAD │ 0xDE │
└─────────┴─────────┘
Cada mano incluye transformaciones derivadas del hash que preservan la legibilidad humana mientras maximizan la confusión del modelo:
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.
# 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
# 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
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.
MIT. Úsalo para el bien, úsalo para el mal, úsalo para lo que sea. Nos lavamos las manos ante la multitud.
"Cuando la gente está protegiendo algo verdaderamente especial para ellos, realmente pueden volverse tan fuertes como pueden serlo." — Naruto Uzumaki