Заказать обратный звонок Не можете дозвониться? Нет возможности позвонить? Оставьте свои контакты и мы перезвоним вам сами.
Это совершенно бесплатно.

(4722) 37-42-59
Заказать звонок

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

Цели обфускации

— Продемонстрировать неочевидные возможности языка и квалификацию программиста (если запутывание производится не инструментальными средствами, а вручную).
— Оптимизировать программу для уменьшения размера кода и ускорения работы.
— Осложнить декомпиляцию/отладку и изучение вредоносных программ, чтобы предотвратить обнаружение их вредоносной функциональности.
— Затруднить декомпиляцию проприетарных программ, чтобы предотвратить обратную разработку или обход систем проверки лицензий и DRM.
— Нарушить авторские права программистов и скрыть авторство.

В поисковой оптимизации обфускация javascript-файлов использовалась для запутывания поисковых ботов при декомпиляции кода, нередко в обманных целях. На сегодняшний день это неактуально.

Технологии

На уровне машинного кода

Обфускация применяется в таких частях программы, как проверка регистрационного кода, т. е. не критичных к скорости, но критичных к безопасности. Простейший метод запутать машинный код — вставить в него недействующие конструкции (or ax, ax).

На уровне исходных текстов

Исходный текст программы на скрипт-языках (JavaScript, VBScript и т. п.) доступен пользователю. Менее читаемым его можно сделать путем форматирования и замены имён.

На уровне промежуточного кода

Обычные языки, такие как C++ и Паскаль, компилируют исходный код в машинный. В отличие от них языки платформы .NET, а также NetP и Java, компилируют исходный код в промежуточный (байт-код), содержащий достаточно информации для восстановления исходного кода. Поэтому для перечисленных языков используется обфускация промежуточного кода.