|
Эта публикация цитируется в 1 научной статье (всего в 1 статье)
Декодирование машинных команд в задаче абстрактной интерпретации бинарного кода
М. А. Соловьевab, М. Г. Бакулинb, С. С. Макаровa, Д. В. Манушинa, В. А. Падарянab a Московский государственный университет имени М.В. Ломоносова
b Институт системного программирования им. В.П. Иванникова РАН
Аннотация:
Программный инструментарий для работы с бинарным кодом востребован не только разработчиками: невозможно добиться достаточной безопасности современных программ без изучения свойств исполняемого кода. Базовым компонентом такого инструментария является декодер машинных команд. У разных процессорных архитектур реализации декодеров разнородны, результаты разбора команд несовместимы, а сопровождение затруднительно из-за повсеместной практики реализовывать декодеры в виде каскадов ветвлений. Дальнейший анализ бинарного кода (на уровне потоков данных и управления, символьная интерпретация и др.) оказывается непереносимым между различными процессорными архитектурами из-за ограничений и особенностей реализации декодеров. В статье предлагается подход к декодированию машинных команд, основанный на внешних спецификациях. Отличительной особенностью подхода является оригинальный способ представления декодированной команды в универсальном (т.е. не отличающемся от одной архитектуры к другой) виде. Декодирование осуществляется при помощи разработанной авторами абстрактной стековой машины. Несмотря на неизбежные накладные расходы, обусловленные большей универсальностью подхода, прототип реализации показывает скорость разбора лишь в 1,5-2,5 раза уступающую традиционным декодерам, с учетом времени разбора спецификации и формирования служебных структур данных. Предлагаемый подход к организации декодирования позволит в перспективе развернуть единый стек программных средств анализа бинарного кода, применимый к различным процессорным архитектурам. В статье обсуждаются вопросы дальнейшей трансляции декодированных команд в машинно-независимое промежуточное представление для анализа их операционной семантики и проведения абстрактной интерпретации. Приведены практически полезные примеры интерпретации: конкретная интерпретация для эмуляции бинарного кода и «направляющая» интерпретация, позволяющая увязать идею абстрактной интерпретации с задачей углубленного автоматического анализа отдельных путей в программе.
Ключевые слова:
абстрактная интерпретация, анализ бинарного кода, динамический анализ, компиляторные технологии, обратная инженерия программного обеспечения, символьное выполнение, статический анализ.
Образец цитирования:
М. А. Соловьев, М. Г. Бакулин, С. С. Макаров, Д. В. Манушин, В. А. Падарян, “Декодирование машинных команд в задаче абстрактной интерпретации бинарного кода”, Труды ИСП РАН, 31:6 (2019), 65–88
Образцы ссылок на эту страницу:
https://www.mathnet.ru/rus/tisp470 https://www.mathnet.ru/rus/tisp/v31/i6/p65
|
Статистика просмотров: |
Страница аннотации: | 111 | PDF полного текста: | 117 | Список литературы: | 18 |
|