¿Qué hace vm-and-bytecode-reverse?
Manual de ingeniería inversa de VM y bytecode personalizados. Úselo cuando los desafíos CTF o el software protegido implementen máquinas virtuales personalizadas con bytecode propietario, bucles de despacho o desafíos estilo laberinto.
Descripción General
Este skill le guía a través del proceso de desmontar y comprender máquinas virtuales (VM) personalizadas utilizadas en desafíos CTF o software protegido. El objetivo es extraer el bytecode, analizar el bucle de despacho, identificar el conjunto de instrucciones y, finalmente, generar un desensamblador personalizado para comprender la lógica oculta.
Plataformas Soportadas
- Ghidra
- IDA Pro
- Herramientas de análisis binario como
radare2,Binary Ninja - Depuradores dinámicos como
gdb,x64dbg
Cómo Usar
- Identificar la VM: Busque bucles de despacho, tablas de salto o funciones que procesen un contador de programa (PC) en el binario.
- Extraer el Bytecode: Localice el bloque de datos que contiene el bytecode (puede estar en una sección de datos o decodificado dinámicamente).
- Analizar el Bucle de Despacho: Descompile o desensamble la función de despacho para entender cómo se interpreta cada opcode.
- Reconstruir el Conjunto de Instrucciones: Documente cada opcode, sus operandos y su comportamiento.
- Generar un Desensamblador Personalizado: Escriba un script (en Python, por ejemplo) para desensamblar el bytecode en una representación legible.
- Ejecución Dinámica (Opcional): Utilice un depurador para seguir la ejecución del bytecode y verificar su análisis.
Ejemplo de Bytecode de VM
Aquí hay un ejemplo ficticio de bytecode:
0x01 0x00 0x01 # MOV R0, 1
0x02 0x00 0x01 0x02 # ADD R0, R1, R2
0x03 0x01 0x02 # JMP 0x02
Notas
- Algunas VM implementan ofuscación adicional, como cifrado de bytecode o múltiples capas de despacho.
- Asegúrese de documentar todos los opcodes e instrucciones encontrados para referencia futura.
- El skill se puede adaptar para trabajar con herramientas como
unidiffoangrpara análisis simbólico.