¿Qué hace radare2?
Habilidad de análisis binario orientada a la CLI de radare2. Se centra en completar tareas de reconocimiento, análisis, localización, exportación y modificaciones ligeras directamente desde la línea de comandos, sin dependencia de GUI.
ACCIÓN REQUERIDA (ejecutar inmediatamente después de leer)
AHORA: Leer../field-journal/precedent-reverse.md— confirmar que la operación de esta habilidad está autorizada y es rutinaria.AHORA: Confirmar si la tarea actual se encuentra dentro del ámbito de esta habilidad.SIGUIENTE: Leer../tool-index.md, verificar la disponibilidad y la ruta real de las herramientas.SIGUIENTE: Si falta alguna herramienta, invocar bootstrap; no adivinar rutas.ACTUAR: Entrar al primer paso del "flujo de trabajo" y ejecutarlo; no quedarse en estado de confirmación.
Ámbito de aplicación
Priorizar el uso de esta habilidad cuando el usuario tenga estas intenciones:
- Usar
r2/radare2para analizar archivosexe,dll,so,elf,apk,dex,wasm, etc. - Preguntar cómo usar
rabin2,rasm2,radiff2,rahash2,rax2. - Necesitar desensamblado desde línea de comandos, ver funciones, cadenas, importaciones/exportaciones, referencias cruzadas, o hacer parches.
- Necesitar escribir comandos por lotes de
radare2, comandos automatizados con-c, o scriptsr2pipe.
Si el usuario solicita explícitamente GUI para ingeniería inversa, pseudocódigo estilo Hex-Rays o flujo de trabajo IDA, priorizar ida-reverse. Si se trata de ingeniería inversa de JS web, priorizar reverse-engineering.
Verificación del entorno primero
No asumir que r2 está disponible. Primero verificar:
r2 -v
rabin2 -v
Si no está instalado, verificar ubicaciones comunes o indicar cómo instalarlo.
Ejecutables comunes en Windows:
radare2.exerabin2.exerasm2.exeradiff2.exerahash2.exerax2.exer2pm.exe
Recursos incorporados
Esta habilidad incluye dos recursos propios. Reutilizarlos prioritariamente; no improvisar conjuntos de comandos repetitivos cada vez.
scripts/recon.ps1
Script de reconocimiento estándar, adecuado para un primer análisis general. Proporciona:
- Información básica
- Secciones
- Importaciones
- Exportaciones
- Cadenas
- Resumen opcional del análisis automático de
r2 -A
Forma de invocación:
powershell -File "<ruta-raíz-skill>\radare2\scripts\recon.ps1" -TargetPath "C:\ruta\al\sample.exe"
Si se necesita el análisis automático de r2:
powershell -File "<ruta-raíz-skill>\radare2\scripts\recon.ps1" -TargetPath "C:\ruta\al\sample.exe" -RunAnalysis
references/cheatsheet.md
Cuando se necesiten más detalles de comandos, plantillas de escenarios comunes o recordar rápidamente la sintaxis, leer esta hoja de referencia; no adivinar de memoria.
Fenómenos conocidos
Advertencia esporádica de falta de .sdb en Windows
Al reconocer ciertos archivos PE con rabin2, puede aparecer una advertencia similar a:
ERROR: Cannot find ...\share\format\dll\*.sdb
Si la salida principal sigue siendo normal, normalmente no afecta las conclusiones básicas del reconocimiento; continuar con el análisis. No declarar que el análisis ha fallado solo por este tipo de advertencias accesorias.
Principios fundamentales
1. Primero reconocer, luego profundizar
No lanzar un análisis automático completo de inmediato. Primero usar comandos ligeros para confirmar tipo de archivo, arquitectura, punto de entrada, cadenas, tabla de importaciones; luego decidir si hacer aaa, aaaa o análisis dirigido.
2. Priorizar el comando mínimo suficiente
radare2 tiene muchos comandos; el usuario normalmente solo necesita la ruta más corta:
- Ver información del archivo:
rabin2 -I - Ver cadenas:
rabin2 -z - Ver importaciones/exportaciones:
rabin2 -i/rabin2 -E - Análisis interactivo:
r2 <archivo>seguido de comandos locales
3. Ser cuidadoso antes de modificar
Si el usuario quiere parchear un binario:
- Por defecto, abrir solo lectura:
r2 <archivo> - Solo usar modo escritura cuando sea explícitamente necesario:
r2 -w <archivo>ooo+en la sesión - Informar del riesgo antes de modificar, para evitar sobrescribir el archivo original sin querer
Flujos de trabajo comunes
Flujo de trabajo 1: Reconocimiento rápido
Adecuado al recibir un archivo binario.
Puerta de acceso obligatoria (MUST — no cumplir impide entrar al flujo de trabajo 2 y siguientes)
Para binarios PE/ELF/Mach-O con tabla de importaciones, MUST completar la verificación de la tabla de importaciones y registrar la Evidencia antes de pasar al análisis a nivel de funciones o pasos dinámicos:
- Ejecutar
rabin2 -i <sample>(o la sección de importaciones de la salida derecon.ps1); para DLL/SYS además MUSTrabin2 -Ey registrarE-exports - Escribir el resultado completo o clasificado de la tabla de importaciones como Evidencia (id sugerido:
E-importsoE-triage-imports), incluyendo al menos:- Comando de reproducción (
repro_command) - Resumen de clasificación de importaciones clave: red / archivo / cifrado / inyección de procesos / registro / otras API sospechosas
- Si la tabla de importaciones está vacía, falla el análisis o la herramienta da error: MUST registrar el fenómeno de fallo y la salida original como Evidencia, no omitir en silencio
- Si la tabla de importaciones es "demasiado limpia" (solo DLLs básicas): MUST indicar sospecha de carga dinámica, SHOULD pasar a capturar API dinámicamente
- Comando de reproducción (
- .NET sin IAT tradicional: MUST usar un ancla equivalente (resumen de dnSpy/IL/metadatos) en el mismo espacio semántico de Evidencia; prohibido pasar sin hacer nada
- Reparación de IAT para muestras empaquetadas: x86 con ImportREC (o equivalente), x64 con Scylla (o equivalente). Si la reparación falla, MUST registrar
E-iat-repair-faily pasar a puntos de interrupción de API dinámicos; prohibido encallar indefinidamente en el IAT estático (verreverse-engineering/references/re-agent-workflow.md§1.2) - Cuando el usuario solicite explícitamente "rehacer la verificación de la tabla de importaciones / reexaminar las importaciones / rehacer IAT": MUST rehacer el paso señalado (si está bloqueado, primero pasar por el candado de viabilidad: explicar los requisitos previos + pedir confirmación; si es forzoso, marcar quality=unreadable); prohibido cambiarlo a un paso no relacionado y fingir que se completó
Sin haber registrado la Evidencia de la tabla de importaciones (o su ancla equivalente / derivación de fallo de IAT): MUST NOT afirmar "reconocimiento básico completo", MUST NOT entrar en las conclusiones profundas del flujo de trabajo 2+.
Priorizar ejecutar el script integrado directamente:
powershell -File "<ruta-raíz-skill>\radare2\scripts\recon.ps1" -TargetPath "sample.exe"
Si solo se necesitan comandos manuales mínimos, usar:
rabin2 -I sample.exe
rabin2 -z sample.exe
rabin2 -i sample.exe
rabin2 -E sample.exe
Puntos de atención:
- Formato de archivo, bits, arquitectura, plataforma
- Dirección del punto de entrada
- Cadenas sospechosas: URL, rutas, mensajes de error, registro, parámetros de línea de comandos
- Funciones importadas: red, archivo, cifrado, inyección de procesos, operaciones de registro (MUST registrar Evidencia, ver puerta de acceso obligatoria arriba)
Flujo de trabajo 2: Análisis interactivo de funciones
r2 sample.exe
Comandos comunes una vez dentro:
aaa # Análisis automático estándar
afl # Listar funciones
iz # Listar cadenas
iS # Listar secciones
is # Listar símbolos
s entry0 # Saltar al punto de entrada
pdf # Desensamblar la función actual
VV # Entrar en modo visual (si la terminal lo permite)
q # Salir
Notas:
- Por defecto, priorizar
aaa; no usaraaaa(más pesado) desde el principio - Si la muestra es grande o el análisis es lento, se puede analizar solo alrededor del punto de entrada y luego expandir manualmente
Flujo de trabajo 3: Localizar main / lógica clave
afl~main
afl~sym.
iz~http
iz~error
axt <addr>
Idea:
- Empezar por
main, punto de entrada, referencias a cadenas - Usar
axtpara buscar quién referencia una cadena o dirección - Una vez encontrado el punto de referencia,
s <addr>,pdf
Flujo de trabajo 4: Visualización hexadecimal y de memoria
px 64 # 64 bytes hexadecimales desde la dirección actual
pd 20 # Desensamblar 20 instrucciones
psz # Leer cadena en la dirección actual
pxa # Vista hexadecimal más amigable
Flujo de trabajo 5: Parcheo binario
Usar solo cuando el usuario solicite explícitamente modificar el archivo:
r2 -w sample.exe
Ejemplos una vez dentro:
s 0x401000
wa nop
wa jmp 0x401050
wq
Operaciones de escritura comunes:
wa <asm>: Escribir ensambladorwx <hex>: Escribir bytes en brutowq: Escribir y salir
Es mejor hacer una copia de seguridad del archivo original antes de modificar. Si el usuario no menciona la copia de seguridad, al menos advertirlo una vez.
Flujo de trabajo 6: Automatización no interactiva
Adecuado para resultados de una sola vez:
r2 -A -q -c "afl;iz;ii;q" sample.exe
Parámetros comunes:
-A: Análisis automático al iniciar-q: Modo silencioso-c: Ejecutar cadena de comandos
Si hay muchos comandos, priorizar ordenarlos de forma legible; no meterlos en una cadena excesivamente larga y difícil de mantener.
Se recomienda primero usar el script de reconocimiento incorporado y luego decidir si añadir comandos personalizados.
Herramientas secundarias comunes
rabin2
Adecuado para extracción de información estática:
rabin2 -I sample.exe # Información básica
rabin2 -S sample.exe # Secciones
rabin2 -s sample.exe # Símbolos
rabin2 -i sample.exe # Importaciones
rabin2 -E sample.exe # Exportaciones
rabin2 -z sample.exe # Cadenas
rabin2 -zz sample.exe # Cadenas más detalladas
rasm2
Adecuado para ensamblado/desensamblado rápido:
rasm2 -d "9090"
rasm2 -a x86 -b 64 "xor eax, eax"
radiff2
Adecuado para comparar dos binarios:
radiff2 old.exe new.exe
radiff2 -C old.exe new.exe
rahash2
Adecuado para calcular hashes:
rahash2 -a md5 sample.exe
rahash2 -a sha256 sample.exe
rax2
Adecuado para conversión de bases y codificación:
rax2 0x401000
rax2 4198400
rax2 -s hello
Orden de análisis recomendado
Al encontrar una muestra desconocida, seguir este orden:
rabin2 -Ipara ver formato, arquitectura, punto de entradarabin2 -zpara ver cadenasrabin2 -ipara ver funciones importadas — MUST + Evidencia (puerta de acceso obligatoria, ver flujo de trabajo 1)- Si se necesita análisis interactivo, entrar en
r2(solo después de que la Evidencia del paso 3 esté registrada) - Primero
aaa, luegoafl/iz/pdf - Localizar gradualmente las funciones clave a través de referencias a cadenas, llamadas a importaciones, flujo del punto de entrada
La ventaja de este orden es que reduce el ruido y permite establecer una dirección rápidamente. El paso 3 no es una optimización opcional; es una puerta de acceso obligatoria antes de profundizar.
Notas para Windows
- Si las rutas contienen espacios, los comandos deben usar comillas correctamente
- Si la terminal actual no encuentra
r2, puede deberse a quePATHse acaba de actualizar; abrir una nueva terminal e intentar de nuevo - Algunas muestras requieren permisos de administrador para leer, pero por defecto no elevar permisos a menos que el usuario lo solicite explícitamente
- Antes de depurar dinámicamente una muestra sospechosa, confirmar primero la intención del usuario para evitar operaciones incorrectas
Estilo de salida
Cuando el usuario no solo quiere comandos, sino que quiere que analices el archivo:
- Proporcionar primero un resumen de los resultados del reconocimiento
- Luego listar las pruebas clave: cadenas, importaciones, funciones, direcciones
- Finalmente dar sugerencias para el siguiente paso o continuar con un análisis más profundo
No limitarse a enumerar comandos sin explicar por qué se hace cada cosa.
Ejemplos de solicitudes típicas
Ejemplo 1: Analizar un exe
Usuario: "Mira qué hace este exe, usa radare2"
Procedimiento:
- Primero usar
rabin2 -I/-z/-i - Determinar si es necesario entrar en
r2 - Usar
aaa,afl,pdfpara profundizar en el punto de entrada y las referencias a cadenas clave
Ejemplo 2: Encontrar dónde se llama una cadena
Usuario: "¿En qué función se activa esta cadena de error?"
Procedimiento:
- Usar
iz~palabra-clavepara encontrar la dirección de la cadena - Usar
axt <addr>para encontrar referencias - Saltar al punto de referencia
s <addr>y luegopdf
Ejemplo 3: Cambiar un salto
Usuario: "Cambia este jne a je"
Procedimiento:
- Confirmar la dirección de destino
- Indicar explícitamente que se va a entrar en modo escritura
- Usar
wa je <objetivo>o directamentewx - Después de modificar, desensamblar de nuevo para verificar
Prácticas que evitar
- No tratar
radare2como una herramienta que solo tiene el comandoaaa - No abrir el archivo del usuario en modo escritura sin explicar el riesgo primero
- No sacar conclusiones sin haber hecho un reconocimiento básico
- Prohibido saltarse la verificación de la tabla de importaciones (
rabin2 -i/ importaciones de recon): sin Evidencia registrada, no se puede pasar al siguiente paso; cuando el usuario solicite rehacer la tabla de importaciones, prohibido cambiar a otros pasos - Prohibido encallar estáticamente tras fallar la reparación del IAT: registrar
E-iat-repair-faily pasar a dinámico; prohibido usar solo ImportREC para muestras de 64 bits - No desviar hacia esta habilidad la ingeniería inversa de JS web; esa es competencia de
reverse-engineering
Referencias
- Hoja de referencia de comandos:
references/cheatsheet.md - Script de reconocimiento estándar:
scripts/recon.ps1
Ecosistema radare2-skills
El proyecto radare2-skills (radareorg/radare2-skills) proporciona un ecosistema más completo de herramientas y flujos de trabajo:
- r2xsql: Consultar tablas de importación / cadenas / funciones de binarios con SQL
- r2mcp / r2http: Herramientas MCP y canal de comandos HTTP con estado
- radius2: Ejecución simbólica, análisis dinámico simbólico
- r2pm: Gestión de complementos, extensiones
- decompiler plugins: Mecanismo de complementos de radare2
Estrategia de uso:
- Cuando el usuario mencione
r2xsql,r2mcp,r2http,radius2,r2pm,rabin2,rasm2,radiff2,rahash2,rax2, priorizar enrutar a esta habilidad (radare2/SKILL.md) - Estas herramientas son solo aceleradores del ecosistema, no pueden eludir: puerta de acceso de autorización, verificación de
tool-index, registro de Evidencia, confirmación de modo escritura - Proporcionar ejemplos de comandos mínimos reproducibles:
r2xsql -s <archivo> -q "SELECT ..."curl.exe -sS --data-binary 'aaa' http://127.0.0.1:9393/cmdradius2 -p <binario> ...r2pm -ci <complemento>
Esta habilidad mantiene sus puertas de acceso obligatorias originales y la integridad de la cadena de evidencia; no permite saltar ningún paso de autorización o Evidencia.
Contexto de enrutamiento
Entrada ascendente: skills/SKILL.md (control principal), routing.md
Alternativa ascendente: ida-reverse/ (cuando se necesite descopilación/pseudocódigo, actualizar a IDA)
Salida descendente:
- Si se necesita análisis dinámico →
reverse-engineering/tools-dynamic.md(Frida/GDB) - Si se necesita descopilación profunda →
ida-reverse/ - Si PAT encuentra cadenas interesantes y se necesitan referencias cruzadas →
ida-reverse/(las xref de IDA son más potentes)
Módulos relacionados del mismo nivel: ida-reverse/ (complementario: r2 reconoce rápido, IDA descopila profundo)
Autoarranque bajo demanda (On-Demand Bootstrap)
El script de entrada de esta habilidad está integrado en el sistema de autoarranque unificado. Si falta radare2, no se produce un error directo, sino que se intenta instalarlo automáticamente.
Capacidades de automatización
| Herramienta | Instalable automáticamente | Método de instalación | Notas |
|---|---|---|---|
| r2 | ✓ | GitHub Release ZIP (w64) | Descarga y extrae automáticamente en %USERPROFILE%\Tools\radare2\ |
| rabin2 | ✓ | Mismo (incluido en el paquete de radare2) | — |
| rasm2 | ✓ | Mismo | — |
| radiff2 | ✓ | Mismo | — |
| rahash2 | ✓ | Mismo | — |
| rax2 | ✓ | Mismo | — |
Punto de activación del autoarranque
scripts/recon.ps1: cuando faltenrabin2or2, llama automáticamente abootstrap-reverse.ps1
Cuando falla el autoarranque
Si la instalación automática falla (problemas de red, límite de API de GitHub, etc.), el script lanzará un error claro con un enlace de instalación manual.
Instalación manual: descargar radare2-*-w64.zip desde https://github.com/radareorg/radare2/releases, extraer en %USERPROFILE%\Tools\radare2\ y asegurarse de que el directorio bin\ esté en PATH.
Autoverificación de finalización de tarea (MUST pasar antes de declarar como completada)
- ¿He ejecutado cada paso del flujo de trabajo (no solo lo he leído)?
- ¿Se ha realizado la verificación de la tabla de importaciones y se ha registrado como Evidencia (E-imports / E-triage-imports o equivalente para .NET)? Para DLL/SYS, ¿incluye E-exports?
- Si falló la reparación del IAT, ¿se registró E-iat-repair-fail y se pasó a dinámico? ¿Las solicitudes de rehacer volvieron al mismo paso?
- ¿He utilizado las rutas reales de las herramientas basándome en
tool-index? - ¿He producido evidencia reproducible (comandos/scripts/capturas de pantalla/informes)?
- ¿He completado y reescrito los elementos de la lista de verificación requeridos por RULES?