Loading...

Что такое «обфускация»?

substrate
Что такое «обфускация»?

📦 Представьте, что вы написали программу и готовы выпустить ее на рынок. Это не веб-приложение, код программы исполняется прямо на клиенте: покупатель платит деньги, получает файл программы и пользуется ей.

🕵️ ♂️ Но в тот момент, когда ваш файл попадет в руки технически подкованного пользователя, он получит доступ к вашему коду и сможет понять, как он работает. После этого он сможет, например, сломать защиту и пользоваться программой бесплатно, а если это ваш конкурент — скопировать код.

substrate
article image

😎Чтобы усложнить эту работу, используется обфускация. Это преобразование простого и понятного кода в новую, «запутанную» версию, которая сохраняет функциональность. Обфусцированный код специально делается таким, чтобы затруднить его анализ, понимание алгоритмов работы, модификацию и обратное проектирование.

🛠 «Запутывают» код специальные программы — обфускаторы. Они могут менять переменные в коде на случайный набор знаков, изменять данные, добавлять в код дополнительные функции и запутывать управление. Обычно обфусцируется исходный код, а после компиляции — еще и машинный.

🖥 Где это используется? Постоянно обновляют алгоритмы обфускации программы для защиты авторских прав, например, Denuvo, оберегающая компьютерные игры от взлома. Обфусцируют патчи к операционным системам: их тут же начинают анализировать хакеры, чтобы понять, какие ошибки безопасности они исправляют, и атаковать тех, кто не успел обновиться.

⚠️ У обфускации есть и недостатки: ваша программа может начать работать медленнее, обфускаторы сложны и не всегда справляются с сохранением функциональности, появляются сложности с отладкой. К тому же обфускация затрудняет обратное проектирование, но не делает его невозможным — при должном желании можно распутать или понять логику работы почти любого кода.

lines image