DynamoRIO es un marco de instrumentación binaria dinámica con licencia BSD para el desarrollo de herramientas de análisis de programas dinámicos . DynamoRIO está dirigido a aplicaciones de espacio de usuario en los sistemas operativos Android , Linux y Windows que se ejecutan en las arquitecturas de conjunto de instrucciones AArch32 , IA-32 y x86-64 .
DynamoRIO se creó originalmente como un sistema de optimización binaria dinámica , pero desde entonces se ha utilizado como herramienta de seguridad, depuración y análisis. DynamoRIO surgió de una colaboración entre el sistema de optimización Dynamo de Hewlett-Packard y el grupo de investigación Runtime Introspection and Optimization (RIO) [ 2 ] del MIT ; de ahí el nombre combinado "DynamoRIO". Se lanzó públicamente por primera vez como un kit de herramientas binarias propietario en junio de 2002 y posteriormente se publicó como código abierto con una licencia BSD en enero de 2009.
Descripción general
DynamoRIO es una máquina virtual de procesos que redirige la ejecución de un programa desde su código binario original a una copia de dicho código. A esta copia se le añaden las herramientas necesarias para ejecutar las acciones de la herramienta deseada. No se realizan cambios en el programa original, que no requiere ninguna preparación especial. DynamoRIO opera completamente en tiempo de ejecución y admite código heredado, bibliotecas de carga dinámica, código generado dinámicamente y código automodificable.
DynamoRIO supervisa todo el flujo de control para capturar la ejecución completa del programa objetivo. Esta supervisión añade sobrecarga incluso cuando no hay ninguna herramienta presente. La sobrecarga promedio de DynamoRIO es del 11 por ciento. [ 3 ]
Características
La API de DynamoRIO abstrae los detalles del proceso de virtualización y se centra en la monitorización o modificación del flujo de código dinámico del programa. Una herramienta puede insertar puntos de interrupción en el programa que invocan acciones de la herramienta en puntos específicos del mismo. También puede insertar instrumentación a nivel de lenguaje ensamblador , lo que proporciona un control preciso sobre las acciones y el rendimiento de la herramienta. DynamoRIO admite la optimización adaptativa y la instrumentación adaptativa, permitiendo que una herramienta elimine o modifique su instrumentación en cualquier momento durante la ejecución del programa de destino.
DynamoRIO invoca funciones de devolución de llamada registradas en la herramienta en varios puntos de eventos comunes del programa, como la creación de subprocesos, la carga de bibliotecas, las llamadas al sistema, las señales o las excepciones. Su API también permite inspeccionar las bibliotecas y el espacio de direcciones del programa , además de su código.
La API y las funciones de devolución de llamada de eventos de DynamoRIO están diseñadas para ser multiplataforma, lo que permite que el mismo código de la herramienta funcione tanto en Windows como en Linux, y tanto en arquitecturas IA-32 como x86-64. DynamoRIO garantiza la transparencia de la herramienta al aislar sus recursos, como la pila , la memoria y los accesos a archivos, del programa sobre el que se ejecuta.
DynamoRIO contiene bibliotecas que extienden su API para proporcionar acceso a la tabla de símbolos , encapsulación y reemplazo de funciones, y utilidades de rastreo de direcciones de memoria.
Herramientas
Las primeras herramientas creadas para DynamoRIO se centraron en la optimización dinámica. [ 4 ] Se han creado varias herramientas de investigación para diversos fines, incluyendo la comprobación de contaminación [ 5 ] y la elaboración de perfiles . [ 6 ]
Programa de orientación
La aplicación de DynamoRIO al campo de la seguridad dio como resultado una técnica llamada " program shepherding" (control de programas ). [ 7 ] La instrumentación de "program shepherding" monitoriza el origen de cada instrucción del programa y el flujo de control entre las instrucciones para evitar que una vulnerabilidad de seguridad tome el control del programa. En 2003, "program shepherding" se comercializó como el software de prevención de intrusiones en el host Memory Firewall, de marca registrada, en una empresa emergente llamada Determina. Determina fue adquirida por VMware en agosto de 2007. [ 8 ]
Doctor Memoria
Dr. Memory es un depurador de memoria de código abierto basado en DynamoRIO y publicado bajo una licencia LGPL . [ 9 ] Dr. Memory supervisa las asignaciones y los accesos a la memoria mediante memoria en la sombra . Detecta errores de programación relacionados con la memoria, como accesos a memoria no inicializada, accesos a memoria liberada, desbordamiento y subdesbordamiento del montón y fugas de memoria . Su conjunto de características es similar al de la herramienta Memcheck basada en Valgrind , aunque funciona tanto en Windows como en Linux y es el doble de rápido que Memcheck. [ 10 ]
Véase también
Notas
- ↑ "Versión 11.2.0" . 20 de diciembre de 2024. Consultado el 24 de diciembre de 2024 .
- ↑ El proyecto RIO: Introspección y optimización en tiempo de ejecución
- ↑ Instrumentación dinámica transparente, Figura 4
- ↑ Una infraestructura para la optimización dinámica adaptativa
- ↑ TaintTrace: Rastreo de flujo eficiente con reescritura binaria dinámica
- ↑ PiPA: Análisis y perfilado en paralelo en sistemas multinúcleo
- ↑ Ejecución segura mediante la supervisión del programa
- ↑ VMware adquiere el proveedor de HIPS Determina
- ↑ Dr. Memory: Depurador de memoria para Windows y Linux
- ↑ Comprobación práctica de la memoria con el Dr. Memory
Referencias
- Bruening, Derek (2004). Manipulación de código en tiempo de ejecución eficiente, transparente y completa (Ph.D.). Instituto Tecnológico de Massachusetts.
- Derek Bruening; Timothy Garnett; Saman Amarasinghe (marzo de 2003). "Una infraestructura para la optimización dinámica adaptativa" . Actas del Simposio Internacional sobre Generación y Optimización de Código . San Francisco, California, EE. UU., págs. 265-275 .
Enlaces externos
- Sitio web oficial
- Lista de correo para usuarios de DynamoRIO
- Página principal del Dr. Memory
- Depuradores
- Software gratuito de gestión de memoria
- Depuradores de memoria libre
- Herramientas gratuitas para probar software
- Perfiladores
- Herramientas de prueba de software
- Software que utiliza la licencia BSD.