Обфускация плюсового кода: имеет ли смысл?
От: DiPaolo Россия  
Дата: 26.02.23 05:34
Оценка:
Тут недавно ПМ сказала, что надо обфусцировать нашу плюсовую библиотеку. Я, честно говоря, удивился. Мне приходилось обфусцировать код на Java, на JavaScript. И там я понимаю, зачем это делать. А есть ли смысл обфусцировать плюсовый код?

Ну как-то с натяжкой я могу еще понять, что имеет смысл замаскировать какие-то константные строки с sensitive данными. Но обфускатор как в этом может помочь? Такое ведь надо делать каким-то шифрованием внутри кода.

Поясните, может я туплю или что-то упускаю? Может чего-то не знаю?

Кто-нибудь обфусцировал код на плюсах? Зачем? Добились своей цели? Есть смысл?
Патриот здравого смысла
Re: Обфускация плюсового кода: имеет ли смысл?
От: LaptevVV Россия  
Дата: 26.02.23 05:38
Оценка:
DP>Мне приходилось обфусцировать код на Java, на JavaScript. И там я понимаю, зачем это делать.
А зачем? Я вот ни разу с этим не сталкивался.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Обфускация плюсового кода: имеет ли смысл?
От: DiPaolo Россия  
Дата: 26.02.23 05:42
Оценка:
DP>>Мне приходилось обфусцировать код на Java, на JavaScript. И там я понимаю, зачем это делать.
LVV>А зачем? Я вот ни разу с этим не сталкивался.

Некоторая базовая защита кода от прочтения исходиков. Хотя есть и более замороченные обфускаторы. Естественно, имеет смысл, когда отдаешь библиотеку или приложение пользователю. Когда крутится на сервере — смысла мало, конечно.
Патриот здравого смысла
Re[3]: Обфускация плюсового кода: имеет ли смысл?
От: LaptevVV Россия  
Дата: 26.02.23 06:27
Оценка:
DP>Некоторая базовая защита кода от прочтения исходиков. Хотя есть и более замороченные обфускаторы. Естественно, имеет смысл, когда отдаешь библиотеку или приложение пользователю. Когда крутится на сервере — смысла мало, конечно.
Что это некое шифрование (запутывание) кода — я примерно представляю.
Но ведь сложность этого запутывания должна быть такой как и реального шифрования: чтобы затраты на распутывание были соизмеримы с написанием своего аналогичного кода.
Иначе смысла нет.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Обфускация плюсового кода: имеет ли смысл?
От: _ABC_  
Дата: 26.02.23 07:32
Оценка: +2 :))) :))) :))) :))) :))) :))) :)))
Здравствуйте, DiPaolo, Вы писали:

DP>Есть смысл?

Ну, есть ненулевой шанс, что код станет более понятным...
"Потерял дар речи за зря"(с).
Re: Обфускация плюсового кода: имеет ли смысл?
От: scf  
Дата: 26.02.23 08:49
Оценка: +2
Здравствуйте, DiPaolo, Вы писали:

DP>Поясните, может я туплю или что-то упускаю? Может чего-то не знаю?


Обфусцируют библиотеки, которые нужно передавать клиенту вместе с исходниками.

Детали зависят от цели передачи исходников — мультиплатформенность? какой-то госрепозиторий "исходного кода"? Договорились передать клиенту исходники, но не договорились, в каком виде?)
Re: Обфускация плюсового кода: имеет ли смысл?
От: velkin Удмуртия http://blogs.rsdn.org/effective/
Дата: 26.02.23 09:37
Оценка:
Здравствуйте, DiPaolo, Вы писали:

DP>Поясните, может я туплю или что-то упускаю? Может чего-то не знаю?


Особо не задумывался над этим, ибо плевать, но вот смотри первая попавшаяся ссылка, то что делают обфускаторы.

https://www.star-force.ru/products/starforce-obfuscator/

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

Программа удаляет комментарии, незначащие пробелы и переименовывают макросы/переменные/функции в нечто вида OO000O, при этом, не меняя логику программы. То есть бинарные коды обфусцированного и необфусцированного текста будут выглядеть одинаково. Обычно применяется, когда по условию лицензионного соглашения необходимо предоставить исходный код.

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

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


Лично я знаю о двух методах обратной разработки.
1. Дизассемблирование.
2. Декомпилирование.

Даже если я очень глупый ничто не мешает мне прочесть название функций, той же nm или ещё чем.
nm -D программа
nm -D библиотека

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

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

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

Исходный код

Исхо́дный код (также исхо́дный текст) — текст компьютерной программы на каком-либо языке программирования или языке разметки, который может быть прочтён человеком.

А я бы даже сказал, что исходный код непосредственно написан людьми без какой-либо пост обработки. Мне вообще интересно, если в договоре было написано предоставить исходный код, а особо умный исполнитель взял и обфуцировал его, я не я, корова не моя, на чью сторону встанет суд?
Re[2]: Обфускация плюсового кода: имеет ли смысл?
От: DiPaolo Россия  
Дата: 26.02.23 13:59
Оценка:
scf>Обфусцируют библиотеки, которые нужно передавать клиенту вместе с исходниками.

scf>Детали зависят от цели передачи исходников — мультиплатформенность? какой-то госрепозиторий "исходного кода"? Договорились передать клиенту исходники, но не договорились, в каком виде?)


Никакой передачи исходников не предполагается. Обычное распространение B2B СДКи: шаред либы под все основные платформы, инклюдники и документация.
Патриот здравого смысла
Re: Обфускация плюсового кода: имеет ли смысл?
От: Слава  
Дата: 26.02.23 15:55
Оценка: 6 (1) +1 -2 :))) :))
Здравствуйте, DiPaolo, Вы писали:

DP>Кто-нибудь обфусцировал код на плюсах? Зачем? Добились своей цели? Есть смысл?


Начиная примерно с С++14 он уже обфусцирован.
Re: Обфускация плюсового кода: имеет ли смысл?
От: Chorkov Россия  
Дата: 28.02.23 07:03
Оценка: 4 (2)
Здравствуйте, DiPaolo, Вы писали:

DP>Кто-нибудь обфусцировал код на плюсах? Зачем? Добились своей цели? Есть смысл?


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

Есть смыл прятать строковые константы, ключи шифрования, таблицы аппроксимации спецфункций, картинки и подобную информацию, которую легко вытаскивать из исполняемого файла. (Если она ценная, конечно.)
Мне приходилось прятать строки. Использовал compile-time вычисления на constexpr. Не уверен, что эффективно получилось.

Если хотите прятать именно алгоритм, посмотрите в сторону исполнения в виртальной машине или во внешнем usb-устроустве.
Re: Обфускация плюсового кода: имеет ли смысл?
От: flаt  
Дата: 01.03.23 09:39
Оценка: +1
Здравствуйте, DiPaolo, Вы писали:

DP>Тут недавно ПМ сказала, что надо обфусцировать нашу плюсовую библиотеку. Я, честно говоря, удивился. Мне приходилось обфусцировать код на Java, на JavaScript. И там я понимаю, зачем это делать. А есть ли смысл обфусцировать плюсовый код?


Какой смысл гадать о целях задачи вместо того, чтобы спросить у ПМ?
Re: Обфускация плюсового кода: имеет ли смысл?
От: zubactik  
Дата: 03.03.23 07:00
Оценка: 1 (1)
Этого не будет достаточно https://manpages.ubuntu.com/manpages/trusty/man1/strip.1.html ? Так-то вполне затрудняет простую отладку. Если же нужно защита от взлома то там уже не обфускатор, там уже поинтереснее нужно. Начинать нужно с защиты от подключения отладчиком, как мне кажется.
Re: Обфускация плюсового кода: имеет ли смысл?
От: goto Россия  
Дата: 21.03.23 01:38
Оценка:
Здравствуйте, DiPaolo, Вы писали:

DP>Тут недавно ПМ сказала, что надо обфусцировать нашу плюсовую библиотеку. Я, честно говоря, удивился. Мне приходилось обфусцировать код на Java, на JavaScript. И там я понимаю, зачем это делать. А есть ли смысл обфусцировать плюсовый код?


Может, имела в виду виртуализацию?
Re[2]: Обфускация плюсового кода: имеет ли смысл?
От: DiPaolo Россия  
Дата: 21.03.23 03:15
Оценка:
G>Может, имела в виду виртуализацию?

Нет, именно обфускацию
Патриот здравого смысла
Re[3]: Обфускация плюсового кода: имеет ли смысл?
От: Chorkov Россия  
Дата: 21.03.23 13:51
Оценка:
Здравствуйте, DiPaolo, Вы писали:

G>>Может, имела в виду виртуализацию?


DP>Нет, именно обфускацию


Погуглил, и даже нашел коммерческое решение... http://www.asprotect.ru/asobfuscator.html
Правда в 23-м году ограничиваться C++03 — странно. Видимо в С++14 обфускация и правда ненужна .
Re[4]: Обфускация плюсового кода: имеет ли смысл?
От: CreatorCray  
Дата: 22.03.23 05:17
Оценка:
Здравствуйте, Chorkov, Вы писали:

C>Видимо в С++14 обфускация и правда ненужна

Обфускация компилируемого исходника вообще не нужна.
Данные бывает обфусцируют, для отдельных кусков кода спецом логику запутывают, но чтоб сурсы обфусцировать это маразм.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.