¿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)
- 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ógicaHerramientas esenciales
| Herramienta | Uso |
|---|---|
| Ghidra | Decompilador gratuito de la NSA |
| IDA Pro | El estándar industrial |
| x64dbg | Debugger para Windows |
| Radare2 | Framework open source |
| strings | Extraer strings de un binario |
| file / xxd | Identificar tipo de archivo |
Tu primer análisis
# Ver qué tipo de archivo es
file programa.exeExtraer strings legibles
strings programa.exe | grep -i passwordVer 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.