Radare2

Relacionado: biblio. Puntero. Herramientas. CENT. 2025 03 06 diseno y desarrollo de sistema.

Radare2 (r2) es un software de análisis y reversión de binarios de código abierto, licenciado bajo GPLv3, lo que significa que es completamente libre y permite su modificación y distribución. Tiene muchas de las características de IDA Pro, aunque con un enfoque diferente. De hecho, Radare2 fue utilizado para desensamblar el primer rootkit de Windows, lo que demuestra su capacidad para realizar análisis avanzados y proyectos de investigación en seguridad.

Si bien IDA Pro sigue siendo la herramienta de referencia en el análisis de binarios, Radare2 ofrece una alternativa poderosa y flexible, aunque con una curva de aprendizaje elevada. Su funcionamiento es modular y permite realizar tareas de análisis estático y dinámico, ingeniería inversa y explotación de binarios.

Para la depuración y explotación de vulnerabilidades, se puede integrar con GDB. Además, cuenta con Laito, una interfaz gráfica que permite realizar casi todas las operaciones que se pueden hacer desde la CLI, facilitando su uso para quienes prefieren una experiencia visual.

Rizin

Rizin es un fork de Radare2 que mantiene la compatibilidad con muchas de sus características, pero con mejoras en la arquitectura y una experiencia de usuario más refinada. Utiliza Cutter como interfaz gráfica, lo que lo hace más accesible para quienes prefieren una experiencia menos dependiente de la línea de comandos.

Funcionalidades de Radare2

Radare2 permite:

  • Análisis estático y dinámico de binarios.
  • Comparación de binarios y detección de diferencias (diffing).
  • Parcheo de binarios en tiempo real.
  • Depuración con soporte para múltiples arquitecturas.
  • Ingeniería inversa y reconstrucción de código.
  • Recuperación de datos, ya que originalmente fue diseñado para este propósito.

Uso de Radare2

Radare2 carga los binarios a través de su loader, ubicando la dirección de entrada (entry point) del ejecutable. Una vez cargado el binario, se abre un prompt donde se puede inspeccionar la memoria y el flujo del programa.

En lenguajes como Pascal, Radare2 permite examinar las direcciones de memoria y modificar su contenido en tiempo real.

Comandos esenciales

Radare2 funciona con una sintaxis similar a Unix, y la mayoría de sus comandos tienen una estructura nemotécnica:

  • pd (Print Disassembly): Desensambla el código.
  • aa (Analyze All): Realiza un análisis automático del binario.
  • afl (Analyze Function List): Muestra la lista de funciones detectadas.
  • -AAA: Opción avanzada para obtener información detallada del binario. (importante poner) las a indica el nivel de agresividad, cuando más a puede dar problemas solamente se puede poner 5 A aunque nunca poner más de tres.
  • s puntero de la función para moverse y luego pdf
  • tambien se puede hacer con s nombrefuncioón
  • v “modo visual”

Es importante destacar que Radare2 puede operar en modo no destructivo, lo que significa que permite analizar binarios sin modificar su contenido original. Sin embargo, si se utiliza la opción de parcheo, se realizarán cambios sobre el binario, lo que puede afectar su ejecución y estructura interna.

Antes de la existencia de Laito, la interfaz gráfica de Radare2, era necesario utilizar bibliotecas de C para desarrollar interfaces personalizadas, lo que requería un mayor esfuerzo en términos de desarrollo y mantenimiento.

Comando para visualizar el desensamblado de una función específica:

En Radare2, se puede desensamblar una función específica dentro de un binario con el siguiente comando:

pdf @ nombrefuncion

Este comando mostrará el código ensamblador de la función especificada, facilitando el análisis del flujo de ejecución del binario.


Análisis Dinámico con Radare2

Para realizar un análisis dinámico de un binario utilizando Radare2 en modo depuración, se puede ejecutar:

r2 -d -AAA nombre_binario

Explicación de los parámetros:

  • -d: Inicia el binario en modo depuración.
  • -AAA: Realiza un análisis avanzado, identificando funciones, referencias y estructuras.

Esto permite inspeccionar en tiempo real el comportamiento del binario mientras se ejecuta, facilitando la identificación de vulnerabilidades o comportamientos inesperados.


Instalación de Complementos en Radare2

Radare2 cuenta con un sistema de paquetes que permite extender sus funcionalidades con módulos adicionales. Para actualizar el gestor de paquetes de Radare2 y luego instalar el complemento r2ghidra (una integración con Ghidra que mejora el análisis de código), se deben ejecutar los siguientes comandos:

r2pm update
r2pm -ci r2ghidra

Explicación de los comandos:

  • r2pm update: Actualiza la lista de paquetes disponibles en el gestor de paquetes de Radare2.
  • r2pm -ci r2ghidra: Instala r2ghidra de manera automática, incluyendo todas sus dependencias.

Estos comandos facilitan la integración de nuevas herramientas en Radare2, mejorando su capacidad de análisis y desensamblado.

Para comprender mejor la sintaxis de Radare2, puedes consultar la documentación oficial en:
book.rada.re/first_steps/syntax.html

Para moverse dentro del binario cargado en Radare2, se pueden utilizar los siguientes comandos:

  • db <nombre_funcion> → Establece un breakpoint en la función especificada.

  • pd 10 → Muestra las próximas 10 instrucciones ensambladas.

  • dc → Continúa la ejecución del programa hasta el siguiente breakpoint o finalización.

  • dcu <dirección | nombre_funcion> → Continúa la ejecución hasta la dirección o función especificada.

    • Ejemplo:

      dcu main

      Esto ejecutará el binario hasta llegar a la función main.

  • dbubi → Elimina el último breakpoint establecido.

Ejecutar un binario en modo depuración

Para iniciar un binario en modo análisis avanzado y depuración con permisos de escritura, usa:

r2 -AAA -d -w casino

Explicación de los parámetros:

  • -AAA → Realiza un análisis exhaustivo del binario, identificando funciones, referencias y estructuras.
  • -d → Activa el modo de depuración, permitiendo inspeccionar la ejecución del binario.
  • -w → Permite escribir cambios en el binario (modo de escritura).

Reabrir un fichero en Radare2

Si deseas reabrir el binario sin salir de Radare2, puedes usar el comando:

oo

Esto recarga el binario, útil cuando se han realizado cambios en memoria o cuando se desea reiniciar el análisis.

Aquí tienes el texto corregido y expandido para mayor claridad y precisión:


Para leer código C en el kernel de Linux, es recomendable utilizar herramientas como cscope, ctags o navegadores de código como LXR (Linux Cross Reference). Estas herramientas permiten explorar y analizar grandes bases de código en C, como el kernel de Linux, facilitando la navegación por estructuras, funciones y macros.

Doom2 y Radare2

  • Doom2 es un motor gráfico clásico basado en el código fuente de Doom, desarrollado en C. Su código fue liberado por id Software, lo que ha permitido numerosas modificaciones y ports a diferentes plataformas.
  • Radare2, por otro lado, no está hecho en Rust, sino en C. Sin embargo, existen forks y herramientas relacionadas con Radare2 que pueden estar escritas en Rust. Si estabas pensando en Rizin, este también sigue en C.

Depuración con ODBG

OllyDbg (ODBG) es un depurador de Windows orientado a la ingeniería inversa. Es especialmente útil para analizar binarios de Windows en entornos x86 y x86-64. No está disponible para Linux, pero alternativas como GDB, Radare2 y x64dbg pueden cumplir una función similar.

Interfaz Gráfica de Radare2

  • Iaoto no es una interfaz gráfica para Radare2, pero tal vez te refieres a Iaito, que sí lo es.

  • Iaito permite interactuar con Radare2 a través de una interfaz gráfica amigable.

  • También existe Cutter, que es una interfaz gráfica para Rizin, el fork de Radare2.

  • Para instalar Iaito, puedes verificar si está disponible en tu sistema con:

    r2pm install iaito

    O instalar Cutter como alternativa:

    r2pm install cutter

El Arch User Repository (AUR) es un repositorio gestionado por la comunidad de usuarios de Arch Linux, utilizado tanto en Arch como en distribuciones derivadas, como Manjaro, ArchLabs o Chakra GNU/Linux. Fue concebido inicialmente para compartir PKGBUILDs (archivos descriptivos de construcción de un paquete para Arch Linux) de forma organizada entre la comunidad y para acelerar la inclusión de paquetes populares contribuidos por los usuarios en el repositorio community. ​Wikipedia en Portugués+2es.wikipedia.org+2itsfoss.com+2

En AUR, los usuarios construyen paquetes y los suben al repositorio; luego, la comunidad vota a favor de ellos y, cuando un paquete tiene suficientes votaciones, un “Usuario Confiable” de Community lo pasa al repositorio Community, el cual es accesible por el gestor de paquetes Pacman. ​es.wikipedia.org

NixOS es una distribución de Linux gratuita y de código abierto basada en el gestor de paquetes Nix. Utiliza un diseño inmutable y un modelo de actualizaciones atómicas, lo que permite que el sistema sea reproducible y portátil. Nix, la herramienta subyacente, adopta un enfoque único para la gestión de paquetes y la configuración del sistema, facilitando la construcción y despliegue declarativo de sistemas fiables.