Convertir rápidamente cadenas de código hexadecimal (opcodes) con cstool
Convertir rápidamente cadenas de código hexadecimal (opcodes) con cstool
cstool es una herramienta de línea de comandos incluida en el framework de desensamblado Capstone Engine. Su función principal es convertir rápidamente cadenas de código hexadecimal (opcodes) en instrucciones de ensamblador de forma interactiva y ligera.
1. Instalación en Kali Linux
En Kali Linux, la herramienta forma parte del paquete capstone-tool:
sudo apt update
sudo apt install capstone-tool
2. Sintaxis Básica
La estructura básica del comando es:
cstool [opciones] <arquitectura+modo> <cadena-hexadecimal> [dirección-inicial]
Opciones principales
| Opción | Descripción |
-d | Muestra detalles avanzados de la instrucción (registros leídos/escritos, tamaño de operandos, etc.). |
-s | Muestra el modo de sintaxis alternativo (por ejemplo, sintaxis AT&T en x86). |
-v | Imprime la versión actual de la librería Capstone. |
3. Arquitecturas y Modos Comunes
cstool admite una amplia variedad de arquitecturas y modos:
x86 / x64:
x16,x32,x64,x16att,x32att,x64attARM:
arm,armbe,thumb,thumbbe,arm64MIPS:
mips,mipsbe,mips64,mips64beRISC-V:
riscv32,riscv64PowerPC:
ppc32,ppc64
4. Ejemplos Prácticos de Uso
Ejemplo 1: Desensamblar instrucciones x32/x64
Puedes ingresar los bytes hexadecimales en varios formatos (separados por espacios, comas, prefijos 0x o \x):
# Desensamblar NOP y XCHG EAX, ECX en x86 de 32 bits
cstool x32 "90 91"
Salida:
0 90 nop
1 91 xchg eax, ecx
Ejemplo 2: Especificar una dirección de memoria inicial
Si deseas que el offset comience en una dirección de memoria específica (por ejemplo, 0x1000):
cstool x64 "48 89 pt 24 08" 0x1000
Ejemplo 3: Ver detalles detallados de instrucción (-d)
La opción -d desglosa los operandos y registros involucrados:
cstool -d x32 "01 d8"
Salida:
0 01d8 add eax, ebx
Prefix:0x00 0x00 0x00 0x00
Opcode:0x01 0x00 0x00 0x00
modrm: 0xd8
op_count: 2
operands[0].type: REG = eax
operands[0].access: READ | WRITE
operands[1].type: REG = ebx
operands[1].access: READ
Tip:
cstooles especialmente útil durante tareas de análisis de shellcode o depuración rápida cuando necesitas verificar el significado de una secuencia de bytes sin necesidad de abrir un entorno más pesado como Ghidra o IDA Pro.