ДинамоРИО
![]() | |
Разработчик(и) | Авторы ДинамоРИО |
---|---|
Первоначальный выпуск | июнь 2002 г |
Стабильная версия | 10.0.0 [1]
/ 17 августа 2023 г |
Предварительный выпуск | 7.0.0-RC1
/ 3 февраля 2017 г |
Репозиторий | |
Операционная система | Андроид , Линукс , Винда |
Платформа | AArch32 , AArch64 , IA-32 , x86-64 |
Тип | Инструментарий , профилировщик |
Лицензия | БСД |
Веб-сайт | dynamorio.org |
DynamoRIO — это лицензированная BSD, среда динамического двоичного инструментирования, для разработки инструментов динамического анализа программ . DynamoRIO предназначен для приложений пользовательского пространства под операционными системами Android , Linux и Windows, работающими на AArch32 , IA-32 и x86-64 архитектурах набора команд .
DynamoRIO изначально создавался как система динамической двоичной оптимизации , но с тех пор используется для инструментов безопасности, отладки и анализа. DynamoRIO возникла в результате сотрудничества системы оптимизации Dynamo компании Hewlett-Packard и исследовательской группы Runtime Introspection and Optimization (RIO). [2] в Массачусетском технологическом институте ; отсюда и общее название «ДинамоРИО». Впервые он был выпущен публично как проприетарный набор двоичных инструментов в июне 2002 года, а затем в январе 2009 года был открыт с открытым исходным кодом под лицензией BSD.
Обзор
[ редактировать ]DynamoRIO — это виртуальная машина процесса , которая перенаправляет выполнение программы из исходного двоичного кода в копию этого кода. Затем к этой копии добавляются инструменты, выполняющие действия нужного инструмента. Никаких изменений в исходную программу не вносится, ее не нужно каким-либо образом специально готовить. DynamoRIO работает полностью во время выполнения и обрабатывает устаревший код, динамически загружаемые библиотеки, динамически генерируемый код и самомодифицирующийся код.
DynamoRIO отслеживает весь поток управления , чтобы полностью зафиксировать выполнение целевой программы. Этот мониторинг увеличивает накладные расходы, даже если инструмент отсутствует. Средние накладные расходы DynamoRIO составляют 11 процентов. [3]
Функции
[ редактировать ]DynamoRIO API абстрагирует детали процесса виртуализации и фокусируется на мониторинге или изменении потока динамического кода программы. Инструмент может вставлять батуты в программу , которые вызывают действия инструмента в определенных точках программы. Инструмент также может вставлять инструменты на уровне ассемблера , что обеспечивает детальный контроль над действиями инструмента и его производительностью. DynamoRIO поддерживает адаптивную оптимизацию и адаптивное оснащение, позволяя инструменту удалять или изменять свое оснащение в любой момент выполнения целевой программы.
DynamoRIO вызывает зарегистрированные инструментом обратные вызовы в ряде общих точек событий программы, таких как создание потока, загрузка библиотеки, системные вызовы, сигналы или исключения. программы Его API также позволяет проверять библиотеки и адресное пространство в дополнение к ее коду.
API-интерфейс DynamoRIO и обратные вызовы событий разработаны с учетом кросс-платформенности, что позволяет одному и тому же коду инструмента работать как в Windows, так и в Linux, а также в IA-32 и x86-64. DynamoRIO обеспечивает прозрачность инструмента , изолируя ресурсы инструмента, такие как его стек , память и доступ к файлам, от программы, в которой инструмент работает.
DynamoRIO содержит библиотеки, которые расширяют его API, обеспечивая доступ к таблице символов , перенос и замену функций, а также утилиты отслеживания адресов памяти.
Инструменты
[ редактировать ]Первые инструменты, созданные для DynamoRIO, были ориентированы на динамическую оптимизацию. [4] Для различных целей был создан ряд исследовательских инструментов, включая проверку на наличие вредоносных данных. [5] и профилирование . [6]
Программа пастырства
[ редактировать ]Применение DynamoRIO в сфере безопасности привело к появлению метода, называемого программным пастырством . [7] Инструментарий управления программой отслеживает происхождение каждой инструкции программы и поток управления между инструкциями, чтобы предотвратить уязвимостей безопасности получение контроля над программой с помощью . В 2003 году управление программами было коммерциализировано под торговой маркой Memory Firewall программного обеспечения для предотвращения вторжений на хост в начинающей компании Determina. Determina была приобретена VMware в августе 2007 года. [8]
Доктор Память
[ редактировать ]Dr. Memory с открытым исходным кодом — это отладчик памяти , созданный на основе DynamoRIO и выпущенный под лицензией LGPL . [9] Dr. Memory контролирует распределение памяти и доступ к ней, используя теневую память . Он обнаруживает ошибки программирования, связанные с памятью, такие как доступ к неинициализированной памяти, доступ к освобожденной памяти, переполнение и опустошение кучи, а также утечки памяти . Его набор функций аналогичен инструменту Valgrind на базе Memcheck , хотя он работает как в Windows, так и в Linux и в два раза быстрее, чем Memcheck. [10]
См. также
[ редактировать ]Примечания
[ редактировать ]- ^ «Выпуск 10.0.0» . 17 августа 2023 г. Проверено 18 сентября 2023 г.
- ^ Проект RIO: самоанализ и оптимизация во время выполнения
- ^ Прозрачный динамический инструментарий, рисунок 4.
- ^ Инфраструктура для адаптивной динамической оптимизации
- ^ TaintTrace: эффективная трассировка потока с динамической двоичной перезаписью
- ^ PiPA: Конвейерное профилирование и анализ в многоядерных системах
- ^ Безопасное выполнение через управление программой
- ^ VMware приобретает поставщика HIPS Determina
- ^ Доктор Память: отладчик памяти для Windows и Linux
- ^ Практическая проверка памяти с помощью Dr. Memory
Ссылки
[ редактировать ]- Брюнинг, Дерек (2004). Эффективное, прозрачное и комплексное манипулирование кодом во время выполнения (доктор философии). Массачусетский технологический институт.
- Дерек Брюнинг; Тимоти Гарнетт; Саман Амарасингхе (март 2003 г.). «Инфраструктура для адаптивной динамической оптимизации» . Материалы международного симпозиума по генерации и оптимизации кода . Сан-Франциско, Калифорния, США. стр. 265–275.