Целью данной работы является разработка эффективного обфускатора, который позволит затруднить анализ и модификацию исполняемых файлов. Для достижения этой цели были поставлены следующие задачи:
1. Исследование современных методов обфускации, таких как шифрование строк и констант, встраивание ложных инструкций, слияние и разделение функций, использование виртуальных машин, обфускация управляющих структур и вызовов функций, полиморфизм и метаморфизм.
2. Анализ существующих решений, таких как VMProtect, Alcatraz, PE bin2bin obfuscator и Viper, с целью выявления их преимуществ и недостатков.
3. Разработка обфускатора с использованием методов метаморфизма, добавления бессмысленного кода и упаковки.
4. Проведение анализа разработанного обфускатора на предмет его эффективности и влияния на производительность программного обеспечения.
В ходе исследования было установлено, что современные методы обфускации повышают защиту ПО, усложняя его анализ и обратную разработку.
Разработанный обфускатор успешно реализует несколько методов обфускации, обеспечивая защиту файлов при минимальном влиянии на производительность. Испытания подтвердили, что обфусцированные программы показывают умеренное увеличение объема памяти и незначительное снижение производительности.
Практическая значимость работы заключается в создании программного средства для обфускации исполняемых файлов формата PE, которое может быть использовано для защиты программного обеспечения от анализа и модификации. Разработанный обфускатор может найти применение в различных областях, требующих защиты кода, включая коммерческие и корпоративные приложения.
Введение........................................................................................................7
1 Исследование современных методов обфускации исполняемого кода....................................................................................................9
1.1 Шифрование строк и констант в исполняемом файле...................9
1.2 Встраивание ложных инструкций для затруднения статического анализа........................................................................ 10
1.3 Применение слияния и разделения функций для усложнения графа управления потоком данных................................................. 11
1.4 Использование виртуальных машин..............................................14
1.5 Обфускация управляющих структур и вызовов функций............. 16
1.6 Использование полиморфизма и метаморфизма для изменения структуры бинарного кода............................................................... 17
1.7 Выводы.............................................................................................. 19
2 Анализ существующих современных решений............................. 20
2.1 VMProtect.......................................................................................... 20
2.2 Alcatraz.............................................................................................. 22
2.3 PE bin2bin obfuscator.........................................................................26
2.4 Viper...................................................................................................27
2.5 Выводы.............................................................................................. 28
3 Разработка обфускатора................................................................... 30
3.1 Описание реализуемых идей........................................................... 30
3.2 Техническая часть............................................................................ 31
3.2.1 Метаморфизм.................................................................................... 31
3.2.2 Добавление бессмысленного кода.................................................. 32
3.2.3 Упаковщик........................................................................................ 33
3.3 Проведение анализа разработанного обфускатора........................35
3.4 Выводы.............................................................................................. 37
Заключение................................................................................................... 39
Список использованных источников.......................................................... 40
Приложение 1. Листинг кода hexpat-файла упаковщика........................... 43
Приложение 2. Листинги кода обфусцируемых программ....................... 44
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
2 Касперски К. Техника отладки программ без исходных текстов. — М.: Диалектика, 2008. — 320 с.
всего 21 источник