Программный код приложения является собственностью компании или программиста, который его написал. И как распоряжаться этой собственностью авторы решают по своему усмотрению.
И некоторые владельцы специально усложняют чтение своего кода, чтобы защитить его от кражи коммерческой тайны (интеллектуальной собственности), несанкционированного доступа, обхода лицензий или других средств контроля, а также от обнаружения уязвимости.
Называется такой способ изменения кода obfuscation (обфускация), что переводится, как запутывание.
Обфускация кода — это процесс, в результате которого приложение становится трудно или невозможно декомпилировать или дизассемблировать, а полученный код приложения становится сложнее анализировать.
Происходит обфускация кода разными способами и может включать: шифрование части или всего кода программы, удаление потенциально раскрывающих метаданных, замену имен классов и переменных бессмысленными метками, добавление неиспользуемого или бессмысленного кода в сценарий приложения.
Инструмент, называемый обфускатором, автоматически преобразует простой исходный код в программу, которая работает так же, но ее сложнее читать и понимать.
К сожалению, авторы вредоносного кода также используют эти методы , чтобы предотвратить обнаружение механизмов атаки средствами защиты от вредоносных программ. Атака SolarWinds 2020 года является примером того, как хакеры используют запутывание для обхода защиты.
Способ обработки измененного кода в читаемый вид называется деобфускацией и включает различные методы. Это могут быть такие методы, как нарезка программы до соответствующих операторов, оптимизация компилятора и синтез программы. Но обфускация кода направлена на то, чтобы максимально затруднить этот процесс.
Так что у данного метода есть и плюсы, и минусы. Очень часто такой код вызывает недоверие, так как не ясно, что скрыто за обфускацией, нет ли там вредного кода. Нам остается только доверять разработчикам или не доверять им.