Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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)

Заметки [ править ]

  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. ^ Практическая проверка памяти с доктором памяти

Ссылки [ править ]

  • Брюнинг, Дерек (2004). Эффективное, прозрачное и всестороннее управление кодом во время выполнения (доктор философии). Массачусетский Институт Технологий.
  • Дерек Брюнинг; Тимоти Гарнетт; Саман Амарасингхе (март 2003 г.). «Инфраструктура для адаптивной динамической оптимизации» . Материалы Международного симпозиума по генерации и оптимизации кода . Сан-Франциско, Калифорния, США. С. 265–275.

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • Список рассылки для пользователей DynamoRIO
  • Домашняя страница доктора Памяти