Текущий выпуск Номер 7, 2024 Том 16

Все выпуски

[ Switch to English ]

Графовая сверточная нейронная сеть для быстрого и точного дизассемблирования инструкций x86

 pdf (1670K)

Дизассемблирование двоичных файлов x86 — важная, но нетривиальная задача. Дизассемблирование трудно выполнить корректно без отладочной информации, особенно на архитектуре x86, в которой инструкции переменного размера чередуются с данными. Более того, наличие непрямых переходов в двоичном коде добавляет еще один уровень сложности. Непрямые переходы препятствуют возможности рекурсивного обхода, распространенного метода дизассемблирования, успешно идентифицировать все инструкции в коде. Следовательно, дизассемблирование такого кода становится еще более сложным и требовательным, что еще больше подчеркивает проблемы, с которыми приходится сталкиваться в этой области. Многие инструменты, включая коммерческие, такие как IDA Pro, с трудом справляются с точным дизассемблированием x86. В связи с этим был проявлен определенный интерес к разработке более совершенного решения с использованием методов машинного обучения, которое потенциально может охватывать базовые, независимые от компилятора паттерны, присущие машинному коду, сгенерированному компилятором. Методы машинного обучения могут превосходитьпо точности классические инструменты. Их разработка также может занимать меньше времени по сравнению с эвристическими методами, реализуемыми вручную, что позволяет переложитьо сновную нагрузку на сбор большого представительного набора данных исполняемых файлов с отладочной информацией. Мы усовершенствовали существующую архитектуру на основе рекуррентных графовых сверточных нейронных сетей, которая строит граф управления и потоков для дизассемблирования надмножеств инструкций. Мы расширили граф информацией о потоках данных: при кодировании входной программы, мы добавляем ребра потока управления и зависимостей от регистров, вдохновленные вероятностным дизассемблированием. Мы создали открытый набор данных для идентификации инструкций x86, основанный на комбинации набора данных ByteWeight и нескольких пакетов Debian с открытым исходным кодом. По сравнению с IDA Pro, современным коммерческим инструментом, наш подход обеспечивает более высокую точность при сохранении высокой производительности в наших тестах. Он также хорошо себя показывает по сравнению с существующими подходами машинного обучения, такими как DeepDi.

Ключевые слова: дизассемблер, машинное обучение, графовые нейронные сети, x86
Цитата: Стрыгин Н.А., Кудасов Н.Д. Графовая сверточная нейронная сеть для быстрого и точного дизассемблирования инструкций x86 // Компьютерные исследования и моделирование, 2024, т. 16, № 7, с. 1779-1792
Citation in English: Strygin N.A., Kudasov N.D. Fast and accurate x86 disassembly using a graph convolutional network model // Computer Research and Modeling, 2024, vol. 16, no. 7, pp. 1779-1792
DOI: 10.20537/2076-7633-2024-16-7-1779-1792
Creative Commons License Статья доступна по лицензии Creative Commons Attribution-NoDerivs 3.0 Unported License.

Журнал индексируется в Scopus

Полнотекстовая версия журнала доступна также на сайте научной электронной библиотеки eLIBRARY.RU

Журнал включен в базу данных Russian Science Citation Index (RSCI) на платформе Web of Science

Международная Междисциплинарная Конференция "Математика. Компьютер. Образование"

Международная Междисциплинарная Конференция МАТЕМАТИКА. КОМПЬЮТЕР. ОБРАЗОВАНИЕ.