Скрыть код

Автор Тема: Скрыть код  (Прочитано 15853 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 805
  • Карма: 166
    • Мои плагины к Автокаду
Re: Скрыть код
« Ответ #15 : 18-03-2019, 12:30:22 »
Хотелось бы эту тему раскрыть по подробней, т.к. на днях обнаружил как пользователь копается в моих исходниках. Наличие JustDecompile у него на рабочем столе открыло мне глаза, что даже простой инженер в 2 клика может залезть в мои исходники. Поэтому у меня несколько более конкретных вопросов по теме:
1. Все обфускаторы платные? Даже если мне достаточно просто тотального все переименовать?
2. Нашел невнятный комментарий, что вроде бы в C# есть атрибут для пометки части кода как unmanaged и такой код уже не виден через reflection. Есть такое? Простые декомпиляторы без деобфускаторов с таким кодом не справятся?
3. Я отправляю из плагина почту по SMTP. Соответсвенно в коде лежит логин/пароль. Для защиты от просмотра бинарника я пароль зашифровал. Но метод дешифровки в декомпилированном коде не просто виден - он прекрасно работает...  Ключ шифрования тоже бросается в глаза. Что посоветуете, где спрятать пароль?

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Скрыть код
« Ответ #16 : 18-03-2019, 12:39:18 »
1. Все обфускаторы платные? Даже если мне достаточно просто тотального все переименовать?
В Visual Studio 2017 обнаружил недавно дополнительный компонент - Dotfuscator. Можно попробовать с помощью него обфусцировать сборку. Сам ещё не пробовал - руки не доходят.
Если что, устанавливается через Visual Studio Installer. Надо покопаться и найти его в дополнительных компонентах.

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 611
  • Карма: 155
    • ПГСу Бложик
Re: Скрыть код
« Ответ #17 : 18-03-2019, 13:44:43 »
В Visual Studio 2017 обнаружил недавно дополнительный компонент - Dotfuscator.
Он есть и в VS 2015 Update 3. Я не запускал и не пробовал, мне пока без надобности.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Скрыть код
« Ответ #18 : 18-03-2019, 14:03:01 »
Я помню он был ещё в версии 2010 "из коробки". Потом в следующих версиях пропал и был доступен только отдельно за деньги. Теперь вот снова появился в виде версии "Community Edition": https://docs.microsoft.com/ru-ru/visualstudio/ide/dotfuscator/?view=vs-2017
Хе-хе:
Цитировать
Ваша копия Microsoft Visual Studio 2017 включает копию PreEmptive Protection - Dotfuscator Community Edition (или Dotfuscator CE), доступную для бесплатного личного использования.
Почитал внимательно лицензионное соглашение. Вроде как, нигде не сказано, что только для некоммерческих разработок. Делается только упор на то, что лицензия должна использоваться лично разработчиком.
« Последнее редактирование: 18-03-2019, 15:31:26 от Дмитрий Загорулькин »

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 805
  • Карма: 166
    • Мои плагины к Автокаду
Re: Скрыть код
« Ответ #19 : 18-03-2019, 18:25:51 »
dotfuscator проверил. Работает, все переименовывает, кроме public. Пришлось повозиться, заменяя где возможно на internal. Автокад не возражает.... вроде бы. Надо еще по тестировать, но на первый взгляд все хорошо. Код делает чудовищно не читаемым. Спасибо!
Первый вопрос снят.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Скрыть код
« Ответ #20 : 18-03-2019, 18:41:03 »
2. Нашел невнятный комментарий, что вроде бы в C# есть атрибут для пометки части кода как unmanaged и такой код уже не виден через reflection. Есть такое? Простые декомпиляторы без деобфускаторов с таким кодом не справятся?
Ты ничего не путаешь? Может речь идёт про unsafe, а не про unmanaged? В любом случае от декомпилятора это не спасёт. Спасти может только если мудуль написал на mixed C++, когда часть кода managed (и соответственно может быть декомпилирован) и часть кода native и соответственно .NET-декомпиляторы с ним ничего сделать не могут.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Скрыть код
« Ответ #21 : 18-03-2019, 18:45:48 »
3. Я отправляю из плагина почту по SMTP. Соответсвенно в коде лежит логин/пароль. Для защиты от просмотра бинарника я пароль зашифровал. Но метод дешифровки в декомпилированном коде не просто виден - он прекрасно работает...  Ключ шифрования тоже бросается в глаза. Что посоветуете, где спрятать пароль?
Я бы сделал native (написанную на C++) dll-ку с функцией - дешифровки (ключ зашит в ней) и ей передавал бы строку для дешифровки. Впрочем и отправку e-mail можно в ней реализовать. Это конечно не обезопасит от нормального хакера.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Скрыть код
« Ответ #22 : 18-03-2019, 18:56:26 »
Первый вопрос снят.
А я  уж подумал, что обфускатор снимет оставшиеся вопросы :)
2. Нашел невнятный комментарий, что вроде бы в C# есть атрибут для пометки части кода как unmanaged и такой код уже не виден через reflection. Есть такое?
Есть ссылочка почитать о чём там речь? Вроде как, никаких простых решений для борьбы с декомпиляцией C# кода не существует. Я так понимаю, что это актуально для языка C++. На C# неуправляемый код не написать. Рекомендуют делать такие куски неуправляемого кода, пряча внутрь важную функциональность. Неуправляемый код действительно довольно сложно декомпилировать. Пока писал, Александр Наумович уже всё объяснил, в принципе :)
3. Я отправляю из плагина почту по SMTP. Соответсвенно в коде лежит логин/пароль. Для защиты от просмотра бинарника я пароль зашифровал. Но метод дешифровки в декомпилированном коде не просто виден - он прекрасно работает...  Ключ шифрования тоже бросается в глаза. Что посоветуете, где спрятать пароль?
Чем глубже - тем лучше. Насколько фантазии хватит :). У меня есть некоторые хитрости для усложнения жизни взломщикам. Но они не сказать что прямо железобетонные. Ну и раскрывать их хотя бы из соображения безопасности не хочу. Тут ещё такой момент - автору хорошо видно где и что смотреть. А когда с чужим, да ещё и обфусцированным кодом разбираться придётся - сдаётся мне, что даже неспрятанные пароли будет тяжеловато найти. Без нормальных имён, без комментариев. Задачка явно непростая, я думаю.

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 805
  • Карма: 166
    • Мои плагины к Автокаду
Re: Скрыть код
« Ответ #23 : 18-03-2019, 19:15:05 »
Ты ничего не путаешь?
Столько начитался по теме, что конечно же все перепуталось в голове. Наверно unsafe, да. И ссылку уже теперь не найду. Но раз ни что не мешает декомпилятору, то значит и вопрос про атрибуты отпадает.

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 805
  • Карма: 166
    • Мои плагины к Автокаду
Re: Скрыть код
« Ответ #24 : 18-03-2019, 19:17:57 »
Чем глубже - тем лучше.
Я просто подумал, что есть какие-то общие рекомендации или даже может специальный API. Задачка-то вроде общеупотребимая. Но раз каждый пилит свой велосипед - буду пилить, куда деваться....

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Скрыть код
« Ответ #25 : 18-03-2019, 19:28:03 »
Я просто подумал, что есть какие-то общие рекомендации или даже может специальный API.
Ну кое-что есть: https://docs.microsoft.com/ru-ru/dotnet/standard/security/cryptographic-services
Только чтобы в этом всём разбираться, надо хорошенько изучить теорию криптографии.

Оффлайн Привалов Дмитрий

  • ADN Club
  • *****
  • Сообщений: 533
  • Карма: 117
Re: Скрыть код
« Ответ #26 : 19-03-2019, 14:56:02 »
Интересная тема, тоже в свое время изучал форумы по защите NET, информации не очень много, все что я понял:
1. Языки типа .NET и JAVA более уязвимы, чем C++, BASIC и т.д., в силу своей природы кроссплатформенности,  у них описание типов данных вынесено отдельно и хорошо читаются. Т.е. обфускаторы прячут имя Ваших классов, методов, но базовые типы данных .NET, а возможно и типы из dll AutoCAD будут читаться.
2. Обфускаторов много, есть бесплатные, эффективность их разная. Но вот как определить после которого код легко взломать а который "крепкий орешек"? Поделитесь ссылками если есть на сравнение.
3. Деобфускаторы существуют и позволяют легко прочитать структуру программ с "корявыми именами", останется только в полуавтоматическом режиме вновь присвоить имена классам и методам на свой вкус . Есть ролики на ютубе, вроде все просто.
4. В комментах к статьям видел что человек жаловался, что после платного обфускатора хакер получил его исходники и потом по почте прикалывался и говорил что взломать было легко.
 
Если увидели инфу что какой-то обфускатор взломан или не надежен кидайте инфу сюда, всем будет полезно знать. :-)

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Скрыть код
« Ответ #27 : 19-03-2019, 15:01:51 »
В меня конечно сейчас камни полетят, но.... может кто-то привести пример, факт, того, как у кого-то "сперли" плагин для автокада и нанесли этим финансовый (или еще какой) урон?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Скрыть код
« Ответ #28 : 19-03-2019, 15:14:20 »
В меня конечно сейчас камни полетят, но.... может кто-то привести пример, факт, того, как у кого-то "сперли" плагин для автокада и нанесли этим финансовый (или еще какой) урон?
Подробностей раскрывать не буду, хотя прошло очень много лет, но в своё время защита МАЭСТРО, которая была построена на ключах Sentinel была взломана. Мы сами были виноваты, так было одно место, через которое проходила проверка на уровне Да/Нет, которую нашли и обошли. Очевидно, что какой-то финансовый урон был. Пришлось тогда заняться защитой всерьез и потратить на неё несколько месяцев. Конечно сказать, что МАЭСТРО - это "плагин для автокада" будет неким преуменьшением, но в принципе это конечно плагин или множество плагинов...

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Скрыть код
« Ответ #29 : 19-03-2019, 15:14:47 »
может кто-то привести пример, факт, того, как у кого-то "сперли" плагин для автокада и нанесли этим финансовый (или еще какой) урон?
Так ведь не побегут же к разработчику хвастаться: "смотри, мы твой плагин сломали и бесплатно юзаем!". Вскрыли, обошли защиту, установили всем в какой-нибудь шаражкиной конторе на 20 проектировщиков и пользуются тихонько.