Этот сайт — моя персональная записная книжка. Интересна мне, по большей части, история, своя жизнь и немного программирование.

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

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

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

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

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

Деобфускация портированного кода, которую мне помог сделать «Госпромпт», ниже в коде эти переменные тоже переименованы

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

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

4 комментария
AZ 13 дн

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

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

Евгений Степанищев 13 дн

Кстати, да, мне что-то такой просто шаг в голову не пришёл.

Павел 13 дн

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

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

Евгений Степанищев 13 дн

По-русски тоже умеет?

Evgeny Sureev 13 дн

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

Евгений Степанищев 13 дн

Если такой страх есть, можно взять оттуда только имена и переименовывать потихоньку.

Имя и фамилия 11 дн

Скоро всё будет удалённо, а мы будем подключаться к удалённым серверам и не сможем видеть исходного кода. Как в Geforce Now.