Распознавание начал функций в бинарных файлах с использованием рекуррентных нейронных сетей

Безопасность программного обеспечения
Авторы:
Аннотация:

Рассматривается задача распознавания начал функций в бинарных файлах, которая является одной из ключевых подзадач реверс-инжиниринга программного обеспечения. В качестве подхода к решению задачи предложено использование рекуррентной нейронной сети, обрабатывающей последовательности байтов бинарного файла. Проведен сравнительный анализ существующих нейросетевых моделей распознавания функций, выявлены их преимущества и ограничения, что позволило обосновать выбор простой и воспроизводимой архитектуры RNN. Получены результаты, на основании которых сделаны выводы о влиянии гиперпараметров модели, соответствующих особенностям машинной архитектуры и форматов бинарных файлов, на качество распознавания модели. Эксперименты выполнены на бинарных файлах микроконтроллеров ESP32 архитектуры Xtensa Little Endian и STM32WBA6 с ядром Cortex-M33 архитектуры ARMv8-M с использованием как стандартного, так и случайного выравниваний, что также позволило оценить устойчивость модели к изменению структуры бинарных данных. На основе разработанной модели реализовано расширение для дизассемблера IDA Pro, демонстрирующее практическую применимость предложенного подхода в реальных задачах реверс-инжиниринга.