DynamoRIO - DynamoRIO

DynamoRIO
Разработчики)Авторы DynamoRIO
изначальный выпускИюнь 2002 г.; 18 лет назад (2002-06)
Стабильный выпуск
7.0.17598[1] / 12 марта 2018; 2 года назад (12 марта 2018 г.)
Предварительный выпуск
7.0.0-RC1 / 3 февраля 2017 г.; 3 года назад (2017-02-03)
Репозиторий Отредактируйте это в Викиданных
Операционная система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]

Смотрите также

Примечания

  1. ^ «Выпуск 7.0.17598». 12 марта 2018 г.. Получено 13 марта 2018.
  2. ^ Проект RIO: самоанализ и оптимизация во время выполнения
  3. ^ Прозрачный динамический прибор, рисунок 4
  4. ^ Инфраструктура для адаптивной динамической оптимизации
  5. ^ TaintTrace: эффективное отслеживание потока с динамической двоичной перезаписью
  6. ^ PiPA: конвейерное профилирование и анализ в многоядерных системах
  7. ^ Безопасное выполнение с помощью программной поддержки
  8. ^ VMware приобретает поставщика HIPS Determina
  9. ^ Доктор Память: Отладчик памяти для Windows и Linux
  10. ^ Практическая проверка памяти с доктором Памятью

Рекомендации

внешняя ссылка