Skip to content
shellcodes

Cómo decodificar y desensamblar shellcode

Convierte bytes de shellcode en crudo de vuelta a ensamblador — decodifica formatos hex y con escapes, desensambla con Capstone y detecta bad chars antes de ejecutar.

Publicado el 2 min de lectura

Nunca ejecutes bytes que no hayas leído —sobre todo bytes que no escribiste tú—. Decodificar y desensamblar el shellcode te dice qué hace realmente y saca a la luz problemas antes de que te cuesten un intento de exploit. Para contexto, mira qué es el shellcode.

Por qué decodificar el shellcode

Tres razones:

  • Confianza — un ejemplo de internet podría hacer más de lo que dice.
  • Depuración — tu propio payload "no funciona" y necesitas ver qué se ensambló.
  • Caza de bad chars — encontrar valores de byte prohibidos antes de la entrega, no después.

Codificaciones habituales

El shellcode viaja con varias pieles. Normalmente decodificas a bytes en crudo primero:

FormatoAspecto
Hex con escapes\x31\xc0\x50…
Array de C0x31, 0xc0, 0x50…
Hex plano31c05068…
Base64McBQaC8v…

Quita el envoltorio, obtén los bytes y luego desensambla.

Desensamblar a mnemónicos

Los bytes en crudo no significan nada hasta que los conviertes de vuelta en instrucciones. Un desensamblador los decodifica a ensamblador, de modo que \x31\xc0 se lee como xor eax, eax. El conversor de Shellcodes lo hace con mnemónicos de Capstone y detecta dónde termina una instrucción y empieza la siguiente — que es como pillas un payload que hace algo distinto de lo anunciado.

Leer los bytes

El desensamblado te dice la lógica; una vista hex te habla de los bytes en sí — cadenas incrustadas, valores sospechosos y caracteres prohibidos. Qué buscar antes de copiar nada está en qué te dice el visor hex.

Una trampa que merece la pena señalar: desensambla en el modo de CPU equivocado y obtienes basura con apariencia plausible. Los mismos bytes se decodifican distinto como 32 bits y como 64 bits, así que un payload x64 leído como x86 produce instrucciones reales pero erróneas. Ajusta siempre la arquitectura al payload antes de fiarte de una sola línea de la salida.

Decodifícalo ahora

Pega un blob con escapes o en hex en el conversor de Shellcodes para normalizar el formato y desensamblarlo. Confirma que coincide con tu intención, compáralo con tu conjunto de bad chars y solo entonces ejecútalo — dentro de un laboratorio aislado que controles. Solo pruebas autorizadas: uso responsable.

Artículos relacionados

Ejemplos de shellcode comentados para Linux x86 y x64 —execve /bin/sh y reverse TCP— con los bytes, el desensamblado y las trampas.
Cómo funciona el shellcode en Linux —syscalls, registros y código independiente de posición— y cómo ensamblarlo, codificarlo y probarlo de forma segura.
Compara formas de generar shellcode —msfvenom, ensamblador a mano y un generador en el navegador— con sus compromisos y cuándo usar cada una.