¿Qué es la Ingeniería Inversa de Software?

La ingeniería inversa (reversing) es el proceso de analizar un programa compilado para entender su funcionamiento sin tener acceso al código fuente original.

¿Para qué se usa?

Usos defensivos:

  • Análisis de malware
  • Búsqueda de vulnerabilidades
  • Verificar que una app no hace cosas maliciosas
  • CTF (Capture The Flag)
Usos ofensivos:
  • Bypass de licencias
  • Explotar vulnerabilidades
  • Extraer algoritmos propietarios

El ciclo de vida de un binario

Código fuente (.c / .py) ↓ compilar Binario / bytecode ↓ reversing Pseudocódigo / ASM ↓ analizar Comprensión lógica

Herramientas esenciales

HerramientaUso
GhidraDecompilador gratuito de la NSA
IDA ProEl estándar industrial
x64dbgDebugger para Windows
Radare2Framework open source
stringsExtraer strings de un binario
file / xxdIdentificar tipo de archivo

Tu primer análisis

# Ver qué tipo de archivo es
file programa.exe

Extraer strings legibles

strings programa.exe | grep -i password

Ver librerías que usa

ldd programa # Linux

Conceptos clave

  • Disassembly: convertir binario a ensamblador (ASM)
  • Decompilation: convertir ASM a pseudocódigo C
  • Dynamic analysis: ejecutar y observar el comportamiento
  • Static analysis: analizar sin ejecutar

Conclusión

El reversing es una habilidad fundamental en seguridad ofensiva y defensiva. Empieza con binarios simples en CTFs antes de atacar software real.