Обфускация кода

Есть такой метод защиты кода от исправлений и анализа — обфускация. Это когда мы удаляем из кода форматирование, комментарии и все осмысленные названия исправляем на бессмысленные. Обфускацию используют не только для этого, но для нашего разговора это несущественно.

Это довольно очевидная мысль, но, кажется, её ещё никто не высказывал — обфускация, как метод защиты кода, доживает последние деньки. Можно уже прямо сейчас от него отказываться и искать какие-то другие подходы.

Большие языковые модели очень успешно разбирают обсусцированный или запутанно написанный код, не тратя на это какие-либо видимые усилия. При этом можно попросить дать переменным, функциям, методам и, что там есть у вас ещё, говорящие имена и снабдить сложные места комментариями. Последнее, кстати, не мешало бы вставить в редакторы кода — пусть комментарии к коду пишет нейросеть.

При этом опасность такой деобфускации минимальна, даже если нейросеть где-то там сгаллюционирует, всё, чем мы рискуем — понять код неправильно, работать-то он будет точно так же и после переименования всех сущностей.

Скриншот diff-изменений в файле doom.bc: удалены переменные i, cz, tx и др., добавлены flash_type, dir_x, sprite_height и другие для функции tick().
Деобфускация портированного кода, которую мне помог сделать «Госпромпт», ниже в коде эти переменные тоже переименованы

Пару слов о том, какая защита могла бы сработать против чтения кода нейросетями. Надо поступать ровно обратным образом — давать сущностям максимально подробные, но неправильные имена и комментарии. Мои эксперименты показывают, что такой метод пока имеет право на существование. Нейросети очень сильно ориентируются на смысл в названиях и промтами такое поведение крайне сложно купировать.

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

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

Комментарии 11

AZ № 3
крайне сложно купировать

Ну как сложно, обфускация, точнее даже анонимизации хватит с последующей деобфускацией

Павел № 5
вставить в редакторы кода — пусть комментарии к коду пишет нейросеть.

Cursor очень неплохо это делает… и commit messages сам умеет составлять)

Evgeny Sureev № 7
Мне пока сложно отделаться от страха, что языковая модель может код испортить своими манипуляциями.
И тогда мы на выходе получим может быть и понятно написанный, но работающий с ошибками код.
Евгений Степанищев автор № 8
Если такой страх есть, можно взять оттуда только имена и переименовывать потихоньку.
Имя и фамилия № 11
Скоро всё будет удалённо, а мы будем подключаться к удалённым серверам и не сможем видеть исходного кода. Как в Geforce Now.