Найти тему

Спросили на собеседовании: «Что такое обфускация кода»

Оглавление

📊 ZEL-Услуги Инфоблок Термины

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

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

Что такое обфусцированный код простыми словами?
Что такое обфусцированный код простыми словами?

Обфускация [кода] — преднамеренное сокрытие программного кода путём его запутывания с сохранением работоспособности [продукта].

Процедура выполняется:

  • вручную (долго, сложно привести в исходный вид — то есть «деобфусцировать»);
  • автоматически (быстро, выполняется специальными программами «обфускаторами» с функцией «деобфускации»). Задачу выполняет программист с той целью, чтобы никакой другой программист не смог прочитать программный код и расшифровать алгоритмы обфускатора.

Для чего нужен обфусцированный код

Прежде всего, обфускация кода делается для безопасности программного продукта.

Разработчик может преследовать разные цели, включая коммерческие:

  • конкурентная защита;
  • предотвращение подделки;
  • сокрытие значений;
  • запутывание логики и так далее.

В результате получается сжатый (удалены неиспользуемые классы, атрибуты, методы) или оптимизированный (проверены и переписаны операторы) софт. Обфусцированный код применяется, например, на Android и Java.

💡 Примеры автоматического оптимизатора: R8 для Android; ProGuard для Java и Android.

-2

Что такое обфускация кода с точки зрения эффективного управления разработкой

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

1. Скрытность

Оцените степень сокрытия алгоритмов управления программой. Целесообразно ли проведение control-flow обфускации (применяется, например в Apple FairPlay для библиотек iTunes или iOS), когда отслеживается обновление управляющей переменной и заменяется переход к узлу диспетчера переходами к следующему блоку, что соответствует новому значению управляющей переменной.

2. Стоимость

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

3. Защита

В какой степени преобразованный код нечитаемый в сравнении с исходным. Метрики сложности программного обеспечения определяют различные меры защиты.

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

4. Стабильность

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

-3

Если программист или компания разработчиков выпускают ценное программное обеспечение (например, приложение для iOS или Android) с закрытым исходным кодом, то обфускация должна быть частью процесса разработки. Это усложняет взлом, анализ и отладку кода извне.

Добыть полезную информацию, коммерческую тайну или пользовательские учётные данные будет значительно сложнее, чем если бы разработчик не проводил процедуру обфускации.

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

-4

Обратитесь в компанию ИТ-аутсорсинга для дальнейшей экспертной поддержки и консультации по этой теме и любым другим техническим вопросам.