Автор: Шудрак М.О., Лубкин И.А.
Источник: Решетневские чтения // Учредители: Федеральное государственное бюджетное образовательное учреждение высшего образования "Сибирский государственный университет науки и технологий имени академика М.Ф. Решетнева" (Красноярск) - с. 566
Шудрак М.О., Лубкин И.А. Защита программного обеспечения методом полиморфной генерации кода. Рассматривается метод защиты программного кода от исследования и модификаций при помощи полиморфной генерации кода.
На сегодняшний день существует и развивается широкий спектр систем и методов защиты программного обеспечения, позволяющих обеспечивать безопасность интеллектуальной собственности. Но вместе с тем совершенствуются и методы взлома таких систем [1].
В основе практически любого метода исследования программного обеспечения лежит предварительное исследование (дизассемблирование) кода, отвечающего за его защиту. Цель такого исследования заключается в том, чтобы реконструировать алгоритм защиты для его последующей модификации и автоматизации процесса взлома.
Для противодействия такому исследованию применяется метод полиморфной генерации программного кода. В основе данного метода лежит возможность динамически генерировать различные версии машинного кода, не изменяя логику работы алгоритма защиты.
Такой метод значительно затрудняет анализ кода и полностью исключает автоматизацию процесса взлома программы. Но у этого метода существует и ряд недостатков:
Приведенные выше недостатки легко устранить, если использовать методы генетического программирования для генерации полиморфного кода. Для этого необходимо представить машинную инструкцию в виде дерева, где выполняемая операция будет иметь вид узла дерева, а регистры и значения – листьев дерева. Алгоритм поиска решения можно разделить на четыре этапа.
Этап 1. На данном этапе с помощью генератора случайных чисел формируется новая популяция решений, представляющая собой массив машинных инструкций.
Этап 2. Сравниваются выходные значения каждой инструкции, в случае совпадения осуществляется выход из алгоритма – необходимая инструкция найдена. Если этого не происходит, то переходим к этапу 3.
Этап 3. С помощью методов генетического программирования, таких как селекция, отберем новую популяцию потомков, в 2 раза меньше начальной.
Этап 4. С помощью методов генетического программирования, таких как рекомбинация и мутация, рекомбинируем и получим вторую часть популяции. Перейдем к этапу 2.
Применение данного алгоритма к каждой инструкции защитного механизма позволит полностью изменить его представление в виде машинного кода, тем самым затруднив его анализ и полностью исключив возможность автоматизации процесса взлома программного обеспечения.