КРАТКИЙ КОНСПЕКТ
Организация защиты кода от анализа (по материалу IMG_3896)
---
Почему защита кода важна
Большинство атак начинается с анализа программной реализации защиты. Пока нарушитель не изучит код, он не сможет найти уязвимости для взлома. Уязвимости ПО — это самые удобные "входные ворота" в систему, поэтому хакеры почти всегда анализируют код. Исключение — типовые системы, уязвимости которых уже известны.
Анализ кода используют и конкуренты. Новая технология быстро переходит к другим фирмам именно через анализ программной реализации. Поэтому разработчики хотят затруднить этот процесс.
---
Где защита от анализа применяется чаще всего
Сейчас такая защита включается редко, в основном в двух случаях:
1. Дорогие программы и программы для конфиденциальных данных, у которых есть защита от копирования.
2. Вредоносное ПО — вирусы и программные закладки, чтобы их сложнее было исследовать.
Самый известный пример — системы защиты StarForce, которые чрезмерно усложняют анализ. Существуют даже специальные программы для их обхода, например StarFuck и StarForce Nightmare. Также защиту StarForce обходят через обычные продукты Alcohol 120% и Daemon Tools.
---
Основные методы защиты кода
Обфускация — это запутывание исходного кода на языках высокого уровня. Переменные переименовываются, структура усложняется, добавляется мусорный код. Работа программы не меняется, но понять её человеку почти невозможно.
Шифрование — это криптографическое закрытие кода на каком-то этапе работы системы. Без ключа код нельзя прочитать.
Антиотладка — это защита от отладчиков и средств исследования. Программа обнаруживает, что её пытаются отлаживать, и блокирует работу или завершается.
Полиморфизм — это генерация разных версий бинарного кода одного и того же алгоритма. Каждый раз код выглядит по-новому, что сильно усложняет анализ. Чаще всего полиморфизм используют вирусы, чтобы защитить себя. Для каждого нового варианта приходится разрабатывать новый метод анализа.
---
Итог
За 20-30 лет исследований создано много методов, которые увеличивают трудоёмкость анализа в десятки раз. Но абсолютной защиты нет — любой код можно изучить, если потратить достаточно времени и ресурсов. Цель разработчика — сделать этот процесс максимально дорогим и сложным.