Parte: 5 — Explotación de sistemas y binarios · Fuente: Eagle, The IDA Pro Book · docs de radare2/rizin ⏱️ Duración estimada: 120 min · Nivel: Intermedio
Conocer los otros dos pilares del reversing: IDA Pro (estándar comercial, con Hex-Rays) y radare2/rizin (framework libre de línea de comandos, con Cutter como GUI). Aprenderás a moverte por un binario en ambos, a comparar sus filosofías (GUI vs REPL) y a elegir la herramienta según la tarea.
⚠️ Ética: solo binarios propios/autorizados.
Al finalizar, el alumno podrá:
| # | Tema | Por qué importa |
|---|---|---|
| 1 | IDA: vista de grafo y pseudo-C | Análisis visual potente |
| 2 | Hex-Rays decompiler | C legible en IDA |
| 3 | radare2: modelo de comandos | Todo desde el teclado |
| 4 | aaa / afl / pdf en r2 | Análisis y desensamblado |
| 5 | Modo visual y grafo en r2 | V, VV |
| 6 | Cutter (GUI de r2/rizin) | Puente para quien viene de GUI |
| 7 | Anotar y renombrar | Documentar el análisis |
| 8 | r2pipe / scripting | Automatización |
VV) lo muestran para entender la lógica.# radare2
git clone https://github.com/radareorg/radare2 && radare2/sys/install.sh
# o: sudo apt install radare2
pip install r2pipe
# IDA Free: descargar desde hex-rays.com (opcional)
# Cutter: https://cutter.re/
Entorno propio.
crackme en radare2 y analiza:bash
r2 -A ./crackme # -A ejecuta aaa (análisis)
[0x...]> afl # lista funciones
[0x...]> s main; pdf # desensambla main
[0x...]> VV @ main # grafo interactivo (q para salir)
text
afvn old_name input ; renombrar variable
CCu "clave se compara aqui" @ 0x... ; comentario
text
izz ; todas las strings
axt @ str.Enter_password ; quién referencia esa string
Si tienes IDA Free/Cutter, abre el mismo binario, ejecuta el análisis y compara la vista de grafo y el pseudo-C con lo que viste en r2.
Deduce la clave válida en cualquiera de las dos y verifícala ejecutando el binario.
Automatiza con r2pipe: script Python que imprima todas las funciones y sus tamaños:
python
import r2pipe
r = r2pipe.open("./crackme"); r.cmd("aaa")
for f in r.cmdj("aflj"): print(f["name"], f["size"])
pdc (pseudo-decompile) de r2 y compáralo con Hex-Rays.strcmp.VV e identifica el bloque de "éxito".Ps).Analiza un crackme con radare2 (sin GUI) y deduce la clave válida usando solo comandos de r2.
Criterio de aceptación: obtienes la clave correcta trabajando desde la consola de r2 y documentas
los comandos usados (afl, pdf, izz, axt, etc.).
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
afl vacío |
No corriste el análisis; usa -A o aaa |
| Te pierdes en r2 | Empieza con ? y V/VV; ve incrementando comandos |
| pseudo-C de r2 pobre | Usa Cutter/Ghidra para decompilar; r2 brilla en control fino |
| IDA Free no decompila esa arch | Hex-Rays por arquitectura es limitado en Free |
| Cambios no persisten | Guarda el proyecto (Ps) o la base de IDA (.idb) |
❓ ¿Cuál aprendo primero? Ghidra (gratis, decompilador) para entender; r2 para control y scripting; IDA si tu entorno lo usa.
❓ ¿radare2 o rizin? rizin es un fork más estable con Cutter integrado; los comandos son casi idénticos.
❓ ¿Puedo combinar herramientas? Sí: es común triage con r2, decompilar con Ghidra/IDA y depurar con GDB.
Clase 131 — Ghidra para ingeniería inversa