Разработчики) | Авторы DynamoRIO |
---|---|
Первый выпуск | Июнь 2002 г . |
Стабильный выпуск | 7.0.17598 [1] / 12 марта 2018 г . |
Предварительный выпуск | 7.0.0-RC1 / 3 февраля 2017 г . |
Репозиторий | |
Операционная система | Android , Linux , Windows |
Платформа | AArch32 , AArch64 , IA-32 , x86-64 |
Тип | Инструментальная база , профилировщик |
Лицензия | BSD |
Веб-сайт | 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 года, а позже был открыт с лицензией BSD в январе 2009 года.
Обзор [ править ]
DynamoRIO - это виртуальная машина процесса, которая перенаправляет выполнение программы с исходного двоичного кода на копию этого кода. Затем к этой копии добавляются инструменты, выполняющие действия желаемого инструмента. В исходную программу никаких изменений не вносится, и ее не нужно каким-либо образом специально подготавливать. DynamoRIO полностью работает во время выполнения и обрабатывает устаревший код, динамически загружаемые библиотеки, динамически сгенерированный код и самомодифицирующийся код.
DynamoRIO отслеживает весь поток управления, чтобы фиксировать все выполнение целевой программы. Этот мониторинг увеличивает накладные расходы даже при отсутствии инструмента. Средние накладные расходы DynamoRIO составляют 11 процентов. [3]
Особенности [ править ]
API DynamoRIO абстрагируется от деталей процесса виртуализации и фокусируется на мониторинге или изменении потока динамического кода программы. Инструмент может вставлять в программу трамплины, которые вызывают действия инструмента в определенных точках программы. Инструмент также может вставлять инструментарий на уровне языка ассемблера , что обеспечивает точный контроль над действиями инструмента и его производительностью. 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]
См. Также [ править ]
- Динамический анализ программы
- Штырь
- Валгринд
- AddressSanitizer (ASan)
Заметки [ править ]
- ^ "Выпуск 7.0.17598" . 12 марта 2018 . Проверено 13 марта 2018 .
- ^ Проект RIO: самоанализ и оптимизация во время выполнения
- ^ Прозрачный динамический прибор, рисунок 4
- ^ Инфраструктура для адаптивной динамической оптимизации
- ^ TaintTrace: эффективное отслеживание потока с динамической двоичной перезаписью
- ^ PiPA: конвейерное профилирование и анализ в многоядерных системах
- ^ Безопасное выполнение с помощью программной пастырской
- ^ VMware приобретает поставщика HIPS Determina
- ^ Доктор Память: Отладчик памяти для Windows и Linux
- ^ Практическая проверка памяти с доктором памяти
Ссылки [ править ]
- Брюнинг, Дерек (2004). Эффективное, прозрачное и всестороннее управление кодом во время выполнения (доктор философии). Массачусетский Институт Технологий.
- Дерек Брюнинг; Тимоти Гарнетт; Саман Амарасингхе (март 2003 г.). «Инфраструктура для адаптивной динамической оптимизации» . Материалы Международного симпозиума по генерации и оптимизации кода . Сан-Франциско, Калифорния, США. С. 265–275.
Внешние ссылки [ править ]
- Официальный веб-сайт
- Список рассылки для пользователей DynamoRIO
- Домашняя страница доктора Памяти