DynamoRIO - DynamoRIO
Разработчики) | Авторы 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 возник в результате сотрудничества между Hewlett Packard система оптимизации Dynamo и исследовательская группа Runtime Introspection and Optimization (RIO)[2] в Массачусетский технологический институт; отсюда и комбинированное название «ДинамоРИО». Впервые он был выпущен публично как проприетарный бинарный инструментарий в июне 2002 года, а позже был открыт с лицензией BSD в январе 2009 года.
Обзор
DynamoRIO - это виртуальная машина процесса который перенаправляет выполнение программы с исходного двоичного кода на копию этого кода. Затем к этой копии добавляются инструменты, выполняющие действия желаемого инструмента. В исходную программу никаких изменений не вносится, ее не нужно каким-либо образом специально подготавливать. DynamoRIO полностью работает на время выполнения и обрабатывает устаревший код, динамически загружаемые библиотеки, динамически сгенерированный код и самомодифицирующийся код.
DynamoRIO контролирует все поток управления чтобы зафиксировать полное выполнение целевой программы. Этот мониторинг увеличивает накладные расходы даже при отсутствии инструмента. Средние накладные расходы DynamoRIO составляют 11 процентов.[3]
Функции
DynamoRIO's API абстрагируется от деталей процесса виртуализации и фокусируется на мониторинге или изменении динамического потока кода программы. Инструмент может вставить батуты в программу, которые вызывают действия инструмента в определенных точках программы. Инструмент также может вставлять инструменты в язык ассемблера уровень, который обеспечивает точный контроль над действиями инструмента и его производительностью. DynamoRIO поддерживает адаптивная оптимизация и адаптивное оснащение, позволяющее инструменту удалять или изменять свои инструменты в любой момент на протяжении выполнения целевой программы.
DynamoRIO вызывает инструмент, зарегистрированный обратные вызовы в ряде общих точек событий программы, таких как создание потока, загрузка библиотеки, системные вызовы, сигналы или исключения. Его API также позволяет просматривать библиотеки программы и адресное пространство в дополнение к его коду.
API DynamoRIO и обратные вызовы событий предназначены для кроссплатформенности, что позволяет использовать один и тот же программный код как в Windows, так и в Linux, а также в IA-32 и x86-64. DynamoRIO обеспечивает инструмент прозрачность путем изоляции ресурсов инструмента, таких как его куча доступ к памяти и файлам из программы, в которой работает инструмент.
DynamoRIO содержит библиотеки, расширяющие его API для предоставления таблица символов утилиты доступа, упаковки и замены функций и отслеживания адресов памяти.
Инструменты
Первые инструменты, созданные для DynamoRIO, были ориентированы на динамическую оптимизацию.[4] Был создан ряд исследовательских инструментов для различных целей, в том числе проверка на заражение[5] и профилирование.[6]
Программа пастырства
Применение DynamoRIO в области безопасности привело к созданию техники, называемой программа пастырства.[7] Контрольно-измерительные приборы программы отслеживают происхождение каждой инструкции программы и поток управления между инструкциями, чтобы предотвратить эксплойт безопасности от взятия под контроль программы. В 2003 году программа пастырства была коммерциализирована под брендом Брандмауэр памяти предотвращение вторжений на хост программного обеспечения в стартапе под названием Determina. Determina была приобретена VMware в августе 2007 г.[8]
Доктор Память
Доктор Память это открытый исходный код отладчик памяти построен на DynamoRIO и выпущен под Лицензия LGPL.[9] Доктор Память отслеживает выделение памяти и доступ к ней с помощью теневая память. Он обнаруживает программные ошибки, связанные с памятью, такие как доступ к неинициализированной памяти, доступ к освобожденной памяти, переполнение и недостаточное заполнение кучи, а также утечки памяти. Его набор функций аналогичен таковому у Валгринд -основан Memcheck инструмент, хотя он работает как в Windows, так и в Linux, и в два раза быстрее, чем Memcheck.[10]
Смотрите также
Примечания
- ^ «Выпуск 7.0.17598». 12 марта 2018 г.. Получено 13 марта 2018.
- ^ Проект RIO: самоанализ и оптимизация во время выполнения
- ^ Прозрачный динамический прибор, рисунок 4
- ^ Инфраструктура для адаптивной динамической оптимизации
- ^ TaintTrace: эффективное отслеживание потока с динамической двоичной перезаписью
- ^ PiPA: конвейерное профилирование и анализ в многоядерных системах
- ^ Безопасное выполнение с помощью программной поддержки
- ^ VMware приобретает поставщика HIPS Determina
- ^ Доктор Память: Отладчик памяти для Windows и Linux
- ^ Практическая проверка памяти с доктором Памятью
Рекомендации
- Брюнинг, Дерек (2004). Эффективное, прозрачное и всестороннее управление кодом во время выполнения (Кандидат наук.). Массачусетский Институт Технологий.
- Дерек Брюнинг; Тимоти Гарнетт; Саман Амарасингхе (март 2003 г.). «Инфраструктура для адаптивной динамической оптимизации». Материалы Международного симпозиума по генерации и оптимизации кода. Сан-Франциско, Калифорния, США. С. 265–275.