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

Когда программист создает программу для продажи или даже свободного скачивания, он явно не мечтает о том, чтобы алгоритмы работы программы стали доступны широкому кругу людей, а таких исследователей сейчас немало. Причин много: может, он вложил в этот алгоритм годы труда, а другой доработает пару строк и заработает на этом миллионы. Или просто поднимут на смех, узрев ошибки и неточности работы программы. Для коммерческих программ кража и взлом алгоритма означает опасение остаться без дохода, на который рассчитывал разработчик. В любом случае, программы всегда старались зашифровать или запутать, чтобы хакеры, столкнувшись с трудностями анализа, не стали ею дальше заниматься. Такие программы, которые автоматически запутывают исходный, готовый или промежуточный код в непонятную «кашу», называются обфускаторами.

Вносимые изменения в код не являются функциональными или опасными, а вноситься могут автоматически. Лишний код не влияет ни на что в программе, но догадаться об этом сложно. Поэтому, обфускаторы сегодня встраивают в компиляторы или реализуют отдельными модулями, программами или библиотеками. Наиболее часто изменению подвергаются исходный код (чтобы не усложнять компилятор), особенно в плане функций контроля проверки лицензированной копии продукта. Иногда обфускация применяется и вручную, и тогда на выходе получается нечто вроде «индусского кода», который даже сам автор не прочитает. В старое время, когда применялись традиционные компилирующие языки, такое шифрование требовалось нечасто, так как анализ машинного кода не мог с точностью воссоздать даже ассемблерный листинг программы, но сегодня все изменилось. В моду вошли компиляторы байт-кодов для виртуальных машин Java/.NET, причем для программ на этих платформах было легко вернуть скомпилированную программу обратно в исходный код. Аналог такой декомпиляции был и раньше, когда удавалось получать исходные данные для программ не Бейсике, FoxPro и аналогичных языках СУБД. Сейчас декомпиляторы байт-коды выложены в Интернете, и скачивать их может любой, кто умеет пользоваться. Понятно, что существуют и более продвинутые инструменты шпионажа за кодом и его анализом, но такие инструменты сами нуждаются в защите от воровства.

Применение обфускатора – вынужденная мера от воровства коммерческого кода, причем неприятная и для разработчика: ему приходится писать больше кода и сопровождения для своих программ. В некоторых случаях обфускатор мог попросту сделать программу неработоспособной. Но рискнуть все же, стоит, даже если после внесения шумового кода программа станет работать чуть медленнее. Наличие подобных приемов, внедренных в программу, специально не афишируется, но любая коммерческая программа обязательно содержит несколько уровней различной защиты. А хакерам только этого и надо: если хакер настоящий, то его интерес лежит не в деньгах, а в развлечениях с кодом. Интересно, появятся ли декомпиляторы обфускаторов?



Комментировать

captcha

Сайты:



Новые отзывы о сайтах:

Авторизация

Если у Вас нет учетной записи, зарегистрируйтесь

captcha

Напомнить пароль
Создание учётной записи

captcha

Напомнить пароль

captcha

Войти в личный кабинет