Формальная модель исполняемого кода программного обеспечения на основе графа исполнения для решения задачи бинарного морфинга

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

Рассматривается задача построения формальной модели исполняемого кода программного обеспечения, предназначенной для строгого математического описания процессов динамического преобразования (морфинга) программ в процессе их выполнения. Актуальность исследования обусловлена необходимостью разработки математического аппарата, обеспечивающего формальное обоснование методов изменения структуры исполняемого кода без нарушения функциональной корректности программ. Целью работы является разработка архитектурно-независимой формальной модели исполняемого кода, позволяющей определить инвариантные свойства программ при выполнении операций морфинга и установить условия сохранения их наблюдаемого поведения. Предложенная модель объединяет статическую и динамическую составляющие исполняемого кода. Статическая часть описывает программу как совокупность базовых блоков, объединенных графом потока управления с конфигурацией размещения кода в адресном пространстве и множеством управляющих ссылок между блоками. Динамическая составляющая включает формальное описание трассы исполнения программы, последовательности состояний вычислительной системы и наблюдаемого поведения, определяемого исключительно внешне наблюдаемыми результатами выполнения. Практическая значимость исследования заключается в создании единого формального аппарата, пригодного для последующего доказательства корректности алгоритмов морфинга исполняемого кода, разработки методов их верификации и анализа защищенности программных систем. Полученные результаты формируют теоретическую основу дальнейших исследований в области динамической трансформации исполняемого кода и разработки перспективных технологий защиты программного обеспечения.