НовостиСобытияКонференцииФорумыIT@Work
Идеи и практики автоматизации:

Блог

Обфускация: настало время запутывать программный код

Андрей Колесов
29.05.2017 20:58:23

Сколько занимался программирование, занимался изучением соответствующих наук и пытался внести посильный вклад в развитие и популяризацию теории и практики этого дела, всегда одной их ключевых идей "правильного программирования" был тезис о необходимости написания "понятного кода". Что важно – понятного не только автору (а это тоже является непростой задачей), но и другим людям.

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

Вот как описывает это понятие Википедия:

Цитата
Обфуска́ция (от лат. obfuscare — затенять, затемнять; и англ. obfuscate — делать неочевидным, запутанным, сбивать с толку) или запутывание кода — приведение исходного текста или исполняемого кода программы к виду, сохраняющему её функциональность, но затрудняющему анализ, понимание алгоритмов работы и модификацию при декомпиляции.


Слово это я слышал и раньше, но вот только сейчас побывал на конференции, где эта тема обсуждалась публично. На "Дне операционных систем" (OSDAY) об этом в своем заглавном выступлении говорил директор ИСП РАН Арутюн Аветисян, в том числе представил разработку своего института:




Комментариев: 8

Только зарегистрированные и авторизованные пользователи могут добавлять комментарии

30.05.2017 08:45:28

Речь идет о "запутывании" исходного кода?
А двоичный код после этого должен остаться тем же?

30.05.2017 09:42:29

Нет, я так понял (да и по логике так), что запутывается как раз двоичный код, а не исходный.
Во-первых, речь, конечно, идет о проприетарном ПО, а не открытом. О коде, который автор не хочет отдавать кому-то.

Запутывание происходит на этапе компиляции, создания двоичного кода.

Идея заключается в том, чтобы затруднить декомпиляцию, преобразование из двоичного в исходный. Это как бы своеобразное шифрование двоичного кода.

30.05.2017 09:56:26

По видимому, при этом снижается производительность? Интересно, насколько.

30.05.2017 10:00:35

Да, конечно!
По этому поводу есть инфо на слайде (фото выше) - 1.2 - 5.5 раз

30.05.2017 10:19:55

Пардон, не заметил. smile:(
Кстати, а что в этой фразе означает "для одного запутывающего преобразования"? Их что - может быть несколько? Или имеется в виду, что запутываться может не вся программа, а только ее отдельные особо ответственные фрагменты?

30.05.2017 10:48:14

Да, как я понял, речь идет об ответственных фрагментах.
Хотя я пока не очень понимаю реальную актуальность темы.

Что именно и от кого хотят прятать?
У меня такое предположение, что эти механизмы нужны в первую очередь для "нехороших людей", которых хотят спрятать что-то "нехорошее". Ну, типа каких-то "вкладом", "секретных защит".
И нужно это не западным ИТ-гигантам, от которым мы "шарахаемся", а как раз небольшим поставщикам.
И тем, кто норовит везде расставить свои "жучки". Мы знаем, кто это...

По этому поводу в который раз вспоминаю выступаление ФСБэшника летом 2014 года - закладки обнаруживаются в основном как раз в российских разработках.

30.05.2017 11:06:17

Обфускация=Закладка. Надо запомнить smile:)

30.05.2017 11:30:18

Я думаю, что именно так.

И вот что самое забавное (хотя не очень смешно).
Основная тема концеренции - построение БЕЗОПАСНЫХ ОС! Причем исключительно российских.
И как раз тут впервые публично всплывает тема обфускации!

Очень симптоматично!
Это очень четко отражает наше понимание "безопасности" - защита от Запада. От "своих" не только не нужно защищаться, но и нельзя этого делать smile:(

Только зарегистрированные и авторизованные пользователи могут добавлять комментарии