Загрузка данных


КРАТКИЙ КОНСПЕКТ

Организация защиты кода от анализа (по материалу IMG_3896)

---

Почему защита кода важна

Большинство атак начинается с анализа программной реализации защиты. Пока нарушитель не изучит код, он не сможет найти уязвимости для взлома. Уязвимости ПО — это самые удобные "входные ворота" в систему, поэтому хакеры почти всегда анализируют код. Исключение — типовые системы, уязвимости которых уже известны.

Анализ кода используют и конкуренты. Новая технология быстро переходит к другим фирмам именно через анализ программной реализации. Поэтому разработчики хотят затруднить этот процесс.

---

Где защита от анализа применяется чаще всего

Сейчас такая защита включается редко, в основном в двух случаях:

1. Дорогие программы и программы для конфиденциальных данных, у которых есть защита от копирования.
2. Вредоносное ПО — вирусы и программные закладки, чтобы их сложнее было исследовать.

Самый известный пример — системы защиты StarForce, которые чрезмерно усложняют анализ. Существуют даже специальные программы для их обхода, например StarFuck и StarForce Nightmare. Также защиту StarForce обходят через обычные продукты Alcohol 120% и Daemon Tools.

---

Основные методы защиты кода

Обфускация — это запутывание исходного кода на языках высокого уровня. Переменные переименовываются, структура усложняется, добавляется мусорный код. Работа программы не меняется, но понять её человеку почти невозможно.

Шифрование — это криптографическое закрытие кода на каком-то этапе работы системы. Без ключа код нельзя прочитать.

Антиотладка — это защита от отладчиков и средств исследования. Программа обнаруживает, что её пытаются отлаживать, и блокирует работу или завершается.

Полиморфизм — это генерация разных версий бинарного кода одного и того же алгоритма. Каждый раз код выглядит по-новому, что сильно усложняет анализ. Чаще всего полиморфизм используют вирусы, чтобы защитить себя. Для каждого нового варианта приходится разрабатывать новый метод анализа.

---

Итог

За 20-30 лет исследований создано много методов, которые увеличивают трудоёмкость анализа в десятки раз. Но абсолютной защиты нет — любой код можно изучить, если потратить достаточно времени и ресурсов. Цель разработчика — сделать этот процесс максимально дорогим и сложным.