SimpleVM: Resolviendo una Máquina Virtual mediante Ingeniería Inversa y Criptoanálisis Diferencial

SimpleVM: Resolviendo una Máquina Virtual mediante Ingeniería Inversa y Criptoanálisis Diferencial

En este artículo analizaremos SimpleVM (lo puedes encontrar aquí https://reversing.kr/), un clásico reto tipo Crackme que implementa una arquitectura basada en una máquina virtual propia. Veremos cómo pasar de la ceguera inicial frente a un binario aparentemente opaco hasta la obtención de la clave correcta mediante una combinación de ingeniería inversa, análisis dinámico y criptoanálisis diferencial.

Herramientas utilizadas: GDB, IDA Pro

Introducción


1. Entendiendo el escenario

Al ejecutar el binario en Linux nos encontramos con una interfaz extremadamente sencilla:

$ ./SimpleVM
Input : VM_is_fun
Wrong

Cualquier cadena que introduzcamos devuelve un contundente Wrong.

Un análisis preliminar muestra que el programa no utiliza funciones de comparación estándar como strcmp(). En su lugar, delega toda la validación a un intérprete interno que ejecuta bytecodes de una máquina virtual.

Al cargar el binario en IDA observamos además un detalle importante: el ejecutable parece estar empaquetado. Gran parte del código visible inicialmente no corresponde a la lógica real del programa.

Dado que se trata de un binario Linux, la forma más cómoda de obtener el código desempaquetado consiste en ejecutarlo bajo GDB y realizar un volcado de memoria una vez finalizado el proceso de desempaquetado.

$ sudo gdb ./SimpleVM

(gdb) catch syscall write
Catchpoint 1 (syscall 'write')

(gdb) run
Starting program: /SimpleVM

Catchpoint 1 (call to syscall write)

(gdb) finish
Input :

Catchpoint 1 (returned from syscall write)

(gdb) info proc mappings

Entre los distintos segmentos mapeados encontramos uno especialmente interesante:

0x08048000 - 0x0804c000

Esa región contiene el código ya desempaquetado de la aplicación.

Realizamos entonces un volcado:

(gdb) dump memory volcado.bin 0x08048000 0x0804c000

Una vez cargado el fichero resultante en IDA, ya podemos comenzar el análisis real.


2. Ingeniería inversa del intérprete

Al examinar el binario desempaquetado identificamos rápidamente el núcleo de la máquina virtual: la función sub_8048C6D().

La arquitectura de la VM está compuesta por varios elementos fundamentales:

  • Program Counter (PC): gestionado por sub_8048A48(), encargado de obtener la siguiente instrucción.
  • Buffer de bytecodes ofuscado: las instrucciones son leídas aplicando una máscara XOR 0x10.
  • Despachador de opcodes: una estructura similar a un switch-case que procesa los distintos bytecodes.

Código simplificado:

int sub_8048C6D()
{
    while (1)
    {
        sub_8048A48();      // Fetch Opcode

        switch (dword_804B190)
        {
            case 6:
                sub_8048ABB(); // XOR
                continue;

            case 7:
                sub_8048B31(); // Comparación
                continue;

            case 9:
                sub_8048BCE(); // Salto condicional
                continue;
        }
    }
}

Durante el análisis observamos que los opcodes más relevantes son:

OpcodeFunción
6Operación XOR
7Comparación
9Salto condicional

El opcode que más nos interesa es el 7, implementado por sub_8048B31(), ya que es el encargado de verificar si los valores calculados a partir de nuestra entrada coinciden con los esperados por la VM.

Si la comparación falla, el opcode 9 detecta el error y redirige la ejecución hacia la rutina que imprime Wrong.


3. Localizando la comparación crítica con GDB

Conociendo la función responsable de la validación, centramos el análisis dinámico en sub_8048B31().

Tras seguir su ejecución encontramos la comparación definitiva:

0x8048b5c: mov 0x804b198,%edx
0x8048b62: mov 0x804b194,%eax
0x8048b67: cmp %eax,%edx
0x8048b69: jne 0x8048b77

Aquí se produce el momento decisivo:

  • EAX contiene el valor objetivo almacenado por la VM.
  • EDX contiene el valor derivado de nuestra entrada.

Si ambos registros coinciden, la ejecución continúa por la ruta correcta.

Para interceptar la comparación utilizamos el siguiente script de GDB (script.gdb):

set follow-fork-mode parent
catch syscall write
run
delete 1
br *0x08048B67
c

Lanzamos el programa con la clave 1111111 (veremos, posteriormente, que la clave tiene una longitud máxima de 7 caracteres):

$ sudo gdb-multiarch -x script.gdb ./SimpleVM

Y registramos los valores de ambos registros:

info registers eax edx

Para acelerar el proceso forzamos temporalmente la comparación:

set $eax = $edx
c
info registers eax edx

Repitiendo la operación varias veces obtenemos todos los pares de valores necesarios para el análisis.

Realizamos el mismo proceso con la clave AAAAAAA y tomamos nota de los registros eax y edx.


4. Criptoanálisis diferencial

Nuestro siguiente objetivo consiste en descubrir qué transformación aplica la VM sobre cada carácter de entrada.

Para ello utilizamos dos cadenas de prueba controladas, ambas de longitud siete:

1111111
AAAAAAA

Interceptando la ejecución en el breakpoint obtenemos los siguientes resultados.

Prueba 1: 1111111

ASCII '1' = 0x31

EAX

09 02 26 2d 22 07 10

EDX

51 57 24 36 7d 52 49

Prueba 2: AAAAAAA

ASCII 'A' = 0x41

EAX

09 02 26 2d 22 07 10

EDX

21 27 54 46 0d 22 39

La primera observación es inmediata: EAX permanece constante, independientemente de la entrada suministrada.

Eso confirma que EAX representa el valor objetivo que debemos alcanzar.

Analizando la relación entre la entrada y los valores generados en EDX descubrimos una transformación XOR por posición:

EDX = Input XOR Máscara

Por tanto:

Máscara = Input XOR EDX

Calculamos cada valor utilizando la primera prueba:

PosiciónCálculoMáscara
00x31 ^ 0x510x60
10x31 ^ 0x570x66
20x31 ^ 0x240x15
30x31 ^ 0x360x07
40x31 ^ 0x7d0x4c
50x31 ^ 0x520x63
60x31 ^ 0x490x78

La máscara completa queda:

60 66 15 07 4c 63 78

5. Reconstrucción de la clave

Ya conocemos la transformación utilizada por la VM.

Si queremos que:

EDX = EAX

debemos despejar el valor de entrada:

Input = EAX XOR Máscara

Realizando el cálculo posición por posición:

PosiciónOperaciónResultado
00x09 ^ 0x600x69 
10x02 ^ 0x660x64 
20x26 ^ 0x150x33 
30x2d ^ 0x070x2a 
40x22 ^ 0x4c0x6e 
50x07 ^ 0x630x64 
60x10 ^ 0x780x68 

Uniendo todos los caracteres obtenemos la solución.


6. Conclusión

Este reto demuestra que no siempre es necesario reconstruir completamente una máquina virtual o desarrollar un emulador propio para resolver un Crackme. En muchas ocasiones resulta más eficiente identificar el punto exacto donde se produce la validación y utilizar análisis diferencial para obligar al binario a revelar las transformaciones que aplica sobre la entrada.

Una vez localizada la comparación crítica, la VM deja de ser una caja negra y pasa a convertirse en un simple sistema de ecuaciones. A partir de ahí, la resolución se reduce a aplicar unas pocas operaciones XOR y reconstruir la clave correcta.

Kayah i Orkiestra Wieniawa · To nie ptak

Kayah i Orkiestra Wieniawa · To nie ptak

El álbum Kayah i Bregović (1999) fusionó el pop polaco con el folclor balcánico, vendiendo más de un millón de copias en Polonia. Su icónico tema de apertura, «To nie ptak», destaca por una producción cruda y acústica grabada junto a la Banda de Bodas y Funerales de Goran Bregović, utilizando una potente sección de vientos metal (trompetas y tubas), percusiones tradicionales y el característico acordeón. El gran secreto técnico del tema radica en el contraste entre los arreglos folclóricos maximalistas del este y la impecable técnica vocal de Kayah, quien adaptó su tesitura habitual empleando el canto blanco (vocalización abierta de tradición eslava) para cortar el muro de sonido instrumental. La melodía instrumental ya había sido usada por Bregović en la banda sonora de la película Underground (1995) bajo el título «Cajesukarije», pero fue la desgarradora letra en polaco de Kayah sobre el desamor y la traición lo que convirtió a esta versión en un himno generacional masivo y en un hito de la música europea contemporánea.

El precio del disenso

El precio del disenso

El contable sumaba las cifras del desastre, deslizando la pluma sobre el papel con un rigor casi religioso. Frente a él, el joven socio exponía una a una las objeciones morales del proyecto, apelando a la decencia, la compasión y el remordimiento. El anciano escuchaba en silencio, asintiendo de vez en cuando con una serenidad cortés que parecía anunciar una profunda rectificación.
—Son observaciones valiosas —murmuró al fin—. Las tendré en cuenta. Reflexionaré sobre cómo responder a desafíos tan serios.
El despacho quedó suspendido en una calma expectante. Entonces el viejo destapó un tintero de tinta roja, mojó la pluma con parsimonia y trazó una línea firme sobre cada nombre de la lista de disidentes. Después revisó las cuentas por última vez y calculó, hasta el último céntimo, el precio exacto de sus ataúdes.

V Império · Sagres

V Império · Sagres

El proyecto V Império, liderado por el polifacético músico y compositor portugués Vítor Rua (ex-GNR y Telectra), rompe moldes en su aproximación al tema «Sagres». En esta pieza, Rua despliega su maestría en la vanguardia y la música electrónica experimental, utilizando sintetizadores avanzados, samplers y técnicas de secuenciación digital para deconstruir las estructuras pop tradicionales. La elaboración del tema destaca por un meticuloso diseño sonoro donde se entrelazan atmósferas oscuras e industriales con texturas neoclásicas, empleando procesos de manipulación de cinta y síntesis granular. «Sagres» no busca la radiofórmula, sino la provocación estética; su repercusión se consolidó en los circuitos de culto europeos, siendo aclamada por la crítica como una de las exploraciones sonoras más audaces, conceptuales e hipnóticas de la música de vanguardia lusa.

Catábasis de R. F. Kuang

Catábasis de R. F. Kuang

El panorama de la dark academia encuentra un terreno tan fértil como espinoso en Catábasis, la incursión de R. F. Kuang en los dominios del inframundo y el misticismo matemático. La premisa posee un magnetismo inmediato: Alice Law, una brillante académica de magia en Cambridge, altera irremediablemente su destino al provocar la muerte accidental de su mentor mediante un pentagrama defectuoso. Consumida por la culpa, emprende un descenso literal a los infiernos para rescatarlo, obligada a colaborar con Peter Murdoch, su rival intelectual y antiguo interés romántico. Juntos atraviesan una geografía dantesca articulada en círculos de pecado —soberbia, codicia, ira— donde la mitología clásica convive con debates filosóficos, teológicos y matemáticos.
El principal escollo de la novela reside en la distancia entre su ambición intelectual y su pulso narrativo. Kuang sustituye con demasiada frecuencia la inmersión orgánica por extensos bloques de exposición analítica sobre matemáticos, filósofos y teorías abstractas, transformando escenas que requerían tensión o vértigo en disertaciones académicas que ralentizan el avance de la trama. Esa fricción estructural se intensifica con el uso reiterado de analepsis que irrumpen justo en los momentos de mayor peligro, fragmentando la atmósfera opresiva que el propio infierno exige.
El desarrollo de los personajes tampoco termina de consolidarse. Alice permanece atrapada durante gran parte de la novela en un estatismo psicológico que debilita su evolución: su constante necesidad de validación frente a Peter desdibuja la autonomía que debería sostener una protagonista capaz de desafiar al abismo. Peter, por su parte, carece del relieve emocional necesario para que la dinámica rivals-to-lovers alcance verdadera intensidad, de modo que la tensión romántica acaba sintiéndose más funcional que genuina. Incluso el propio espacio infernal, pese a su enorme potencial simbólico, se percibe a menudo superficial en su construcción. La novela recurre a imágenes impactantes, violencia explícita y conductas autodestructivas que funcionan más como recursos de choque que como elementos integrados en una auténtica catarsis moral.
Aun así, sería injusto negar la fuerza conceptual de la obra. Catábasis destaca por la audacia de su planteamiento y por su reinterpretación contemporánea de los pecados capitales, así como por la voluntad de entrelazar erudición, simbolismo y fantasía oscura. El problema aparece cuando esa erudición termina imponiéndose a la narración en lugar de potenciarla. El desenlace, además, resulta más limpio y conciliador de lo que cabría esperar en una autora acostumbrada a zonas morales ambiguas, lo que diluye parte del peso trágico acumulado durante el viaje.
La novela deja la impresión de un artefacto literario fascinante en sus ideas, poderoso en su imaginario y claramente ambicioso, pero irregular en su ejecución y en la gestión de su intensidad dramática.

La deuda del bosque

La deuda del bosque

Trazó círculos de sal sobre el musgo húmedo, repitiendo el rito que su abuelo le había susurrado antes de morir. El bosque le prometió el regreso de su amada y él, tras años de soledad, estaba dispuesto a reclamar aquella deuda antigua.
La niebla comenzó a espesarse hasta adquirir forma humana. Avanzó lentamente hacia el centro del claro, arrastrando los pies entre las raíces mojadas. El hombre rompió a llorar al reconocer el vestido blanco y aquella silueta imposible de confundir.
Corrió hacia ella y la abrazó con desesperación.
Pero no encontró el calor de una piel recuperada, sino el crujido seco de la madera vieja.
Entonces lo comprendió.
El bosque había cumplido su palabra: no le devolvió a su mujer. Lo convirtió a él en el árbol que ella necesitaba para dejar de vagar como una sombra entre la niebla.

La paradoja de Banach-Tarski

La paradoja de Banach-Tarski

La paradoja de Banach-Tarski surge en 1924 como una de las creaciones más perturbadoras del pensamiento matemático del siglo XX. Stefan Banach y Alfred Tarski demostraron que una esfera sólida en el espacio tridimensional puede descomponerse en un número finito de piezas —tan solo cinco bastan en la versión minimal— y, mediante rotaciones y traslaciones puras, sin estirar ni deformar un solo punto, recomponerse en dos esferas idénticas a la original. No se añade ni se pierde materia; simplemente se reorganiza. Lo que parece un milagro de multiplicación surge de las profundidades del continuo real, donde el infinito no es una cantidad lejana, sino la textura misma de cada conjunto de puntos.
El mecanismo descansa en el axioma de elección, esa herramienta silenciosa que permite seleccionar un elemento de cada conjunto en una colección infinita sin describir cómo hacerlo. Gracias a él, se construyen conjuntos no medibles, piezas que escapan por completo a la noción intuitiva de volumen. Estas no son fragmentos sólidos con bordes definidos, sino distribuciones caóticas de puntos que carecen de medida de Lebesgue bien definida. Su “volumen” no existe en el sentido ordinario; por eso, al recombinarlos, el sentido común sobre la conservación de la masa se disuelve. La aditividad finita del volumen, que parece tan evidente en la experiencia cotidiana, falla cuando el espacio se trata como un conjunto de puntos infinitos en lugar de una sustancia continua y tangible.
Esta ruptura revela una tensión profunda entre la intuición física y la estructura abstracta del espacio. En el mundo real, los objetos están hechos de átomos, y cualquier corte respeta límites cuánticos y relativistas que impiden divisiones arbitrarias. La paradoja no describe física; ilustra, en cambio, cómo el modelo matemático del espacio euclídeo, fundado en los números reales, genera comportamientos que desafían nuestra percepción encarnada de la materia. El continuo no se comporta como un fluido homogéneo: al dividirlo exhaustivamente, emerge una multiplicidad que no se somete a las leyes de la conservación que rigen los cuerpos macroscópicos. Es como si el infinito interno de cada punto permitiera una clonación lógica sin violar las reglas formales, recordándonos que la matemática no copia la realidad, sino que la reconstruye bajo axiomas que a veces la superan.
El resultado invita a repensar la naturaleza de la identidad y la multiplicidad. Si una esfera puede duplicarse sin coste aparente, ¿qué significa entonces la unidad de un objeto? La paradoja sugiere que la identidad espacial no es primordial, sino derivada de la forma en que organizamos los puntos. En un universo donde el espacio-tiempo podría tener estructura discreta a escalas de Planck, o donde la mecánica cuántica introduce superposiciones y entrelazamientos que rompen intuiciones clásicas, esta idea resuena con fuerza actual. Investigaciones recientes exploran analogías en espacios de Hilbert cuánticos, donde acciones de grupos pueden generar descomposiciones paradójicas similares, insinuando que ciertos fenómenos de información o estados entrelazados podrían reflejar, en niveles fundamentales, una no-aditividad inherente a la estructura del ser.
Lejos de ser un mero entretenimiento lógico, la paradoja de Banach-Tarski expone el precio de aceptar el continuo como fundamento: ganamos un poder descriptivo inmenso para la geometría, el análisis y la teoría de grupos, pero perdemos la certeza ingenua de que el todo siempre es la suma estricta de sus partes. Nos obliga a vivir con la idea de que el espacio matemático contiene más rarezas que el universo observable, y que nuestra razón, al abrazar el infinito, debe abandonar ciertas comodidades intuitivas. En una era dominada por simulaciones computacionales, inteligencia artificial y modelos cosmológicos que lidian con infinitudes, esta lección sigue vigente: la realidad formal no siempre se pliega a la experiencia sensible, y precisamente en esa grieta reside la libertad creativa del pensamiento. La duplicación de la esfera no es un truco; es un espejo que refleja hasta qué punto hemos construido un mundo abstracto capaz de trascender, sin contradecirse, los límites de lo imaginable.

El teorema del sándwich

El teorema del sándwich

En el núcleo silencioso de las matemáticas habita el teorema del sándwich: una idea que no impone su fuerza con estridencia, sino que revela cómo emerge la verdad cuando dos límites convergen. Imaginemos una trayectoria cualquiera, una variable que parece moverse libre entre el azar y la incertidumbre. De pronto, dos funciones la encierran: una por abajo, otra por arriba. Ambas avanzan, de forma inexorable, hacia un mismo punto. La función intermedia no necesita “decidir”; queda determinada por ese cerco. No es capricho, sino estructura: aquello que permanece entre dos límites coincidentes hereda su destino. Así se alcanza la certeza sin observarla directamente.
Formalizado en el cálculo del siglo XIX, este principio sigue siendo operativo hoy, en modelos que procesan volúmenes masivos de datos. Sin embargo, conviene no forzar la analogía: en sistemas complejos —como los modelos climáticos— no siempre existen “dos cotas” que converjan de manera estricta. Más bien, se construyen intervalos de confianza y escenarios acotados. Aun así, la intuición persiste: cuando distintas aproximaciones independientes empiezan a coincidir, la incertidumbre se reduce de forma significativa. Lo mismo ocurre en ciertos algoritmos de inteligencia artificial o en modelos epidemiológicos, donde la convergencia de estimaciones refuerza la fiabilidad de una predicción, sin convertirla en una necesidad absoluta.
Ahí aparece su dimensión más sugerente: el teorema del sándwich no solo describe funciones, sino una forma de pensar el conocimiento. Vivimos rodeados de límites —biológicos, sociales, tecnológicos— que acotan nuestras decisiones. Cuando esos márgenes se estrechan y apuntan en la misma dirección, lo posible se redefine. No es tanto una imposición como una clarificación: comprender los bordes permite entender mejor el espacio que habitamos.
En un entorno saturado de narrativas opuestas, esta idea funciona como una brújula intelectual. Las visiones extremas sobre la tecnología —entre la promesa total y la catástrofe— tienden a ser matizadas por datos que, aunque proceden de marcos distintos, empiezan a coincidir en ciertos efectos medibles. No hay una verdad única “encerrada”, pero sí zonas donde el consenso emerge por aproximación. Atender a esas convergencias exige menos confrontación y más lectura fina de los límites.
El teorema del sándwich recuerda que la precisión no siempre nace de observar directamente, sino de entender las condiciones que rodean a lo observado. Lo relevante no es la compresión en sí, sino lo que esta revela: cuando los márgenes se encuentran, el espacio intermedio deja de ser incierto. En un mundo que mide constantemente sus propios límites, esta idea conserva toda su vigencia. No como dogma, sino como método para orientarse en medio de la complejidad.

Relativity · Siún Ní Dhuibhir

Relativity · Siún Ní Dhuibhir

El álbum Gathering Pace (1987), firmado por Relativity —el dúo formado por Mícheál Ó Domhnaill y Tríona Ní Dhomhnaill— es una pequeña joya del folk irlandés moderno, donde tradición y sofisticación armónica conviven sin fricción. En “Siún Ní Dhuibhir”, reinterpretan una canción gaélica del siglo XVIII con un arreglo minimalista pero profundamente expresivo: destacan el uso del clavecín eléctrico y sintetizadores suaves, poco habituales en el género. La voz etérea de Tríona, casi litúrgica, se apoya en una producción muy cuidada que evita cualquier exceso ornamental. El tema mantiene la estructura modal tradicional (dórica), pero introduce sutiles modulaciones contemporáneas. Este enfoque influyó en posteriores fusiones entre folk celta y ambient, y consolidó el disco como referencia de culto dentro del revival gaélico.

El día de Colón (Expeditionary Force #1), de Craig Alanson

El día de Colón (Expeditionary Force #1), de Craig Alanson

Todo empieza en un anodino Día de Colón en Thompson Corners, Maine. El especialista del Ejército Joe Bishop, de permiso en su pueblo natal, ve cómo una nave de transporte ruhar se estrella de morro en un campo de patatas. Los “hamsters” —así los bautiza él: peludos, bigotudos y con cara de no haber roto un plato— bajan de la nave, miran el horizonte de silos y graneros, y deciden que el objetivo más amenazante del sector es… el almacén de patatas. Un misil bien colocado lo convierte en humo y llamas. En ese instante, Bishop ya sabe que la invasión no sigue ningún manual estratégico conocido: los alienígenas también cometen estupideces logísticas.
A partir de ahí, la novela se convierte en un descenso vertiginoso por una jerarquía galáctica brutalmente realista. Los humanos somos la especie cliente más baja del escalafón: carne de cañón para los kristang (los “lagartos”), que a su vez sirven a razas aún más avanzadas. La Tierra es un peón en una guerra que lleva milenios. En cuestión de días, todos los ejércitos del planeta son reclutados, embarcados y enviados a un sistema estelar remoto para un “entrenamiento” que en realidad es preparación para morir en batallas ajenas.
El armamento humano sigue siendo gloriosamente analógico: fusiles M4 con puntas explosivas, lanzacohetes con lock-on decente y poco más. Las naves capitales, en cambio, pulverizan continentes enteros con cañones de riel. Esa brecha tecnológica genera escenas tan absurdas como épicas, y Alanson las explota con un humor negro muy militar.
Hasta la mitad del libro, Bishop carga solo con la narración en primera persona. Es un protagonista sólido —moralmente coherente, rápido de reflejos, cero lloriqueos—, pero la historia cojea un poco sin un segundo palo. Entonces aparece Skippy. Un IA antigua, arrogante, sarcástica y con un sentido del humor que roza lo psicótico. Desde su primer “hey, monkey” la novela cambia de marcha. Skippy es el alma, el motor y la razón por la que no puedes parar de leer.
La construcción del universo es sólida y novedosa: razas oxígeno-respiradoras que comparten biotipos planetarios pero cuyos metabolismos son incompatibles con la comida terrestre (detalle que promete explorarse más adelante). El problema es que, salvo los hamsters y los lagartos, el resto de especies se quedan en “ideología + tamaño” sin habilidades o culturas que las hagan inolvidables.
¿Es perfecto? No. La primera mitad es dura sin Skippy, y el combate espacial brilla por su ausencia. Pero el ritmo, el ingenio militar y la química Bishop-Skippy convierten esta novela en una de las lecturas más adictivas y divertidas que he tenido en años. Si buscas hard sci-fi con batallas láser y naves que hacen flip-flops en el vacío, pasa de largo. Si quieres aventura pura, humor cuartelero y un IA que te roba el protagonismo, corre a por ella.