Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: sash-2007 от 04-06-2018, 14:32:24

Название: Скрыть код
Отправлено: sash-2007 от 04-06-2018, 14:32:24
Здравствуйте !

Подскажите пожалуйста  как можно скрыть часть кода от посторонних  глаз  :)
делаю DLL  для Автокада 2010   на NET
нужно чтоб,  нельзя было посмотреть часть кода ILDASM , NET Reflector  и другими дизассемблерами.

пробовал:  подключать класс С++(unmanaged),   подключать библиотеку DLL на С++(unmanaged) не работает
может я не правильно делаю.

 windows 7  x64 , Автокад 2010, Visual Studio 2008

Может кто то сталкивался с чем то подобным, подскажите в какую сторону смотреть( копать)  :)

Еще вопрос: Можно ли в принципе подключить библиотеку DLL на С++(unmanaged) ,  к DLL для Автокада .NET
Название: Re: Скрыть код
Отправлено: Александр Ривилис от 04-06-2018, 15:53:13
пробовал:  подключать класс С++(unmanaged),   подключать библиотеку DLL на С++(unmanaged) не работает
может я не правильно делаю.
Наверное делаешь неправильно.
Еще вопрос: Можно ли в принципе подключить библиотеку DLL на С++(unmanaged) ,  к DLL для Автокада .NET
Да. Можно.
Название: Re: Скрыть код
Отправлено: sash-2007 от 04-06-2018, 16:46:40
Спасибо за ответы :)

Не могли бы дать какую нибудь ссылку на данный материал
или пример кода.
Название: Re: Скрыть код
Отправлено: Александр Ривилис от 04-06-2018, 16:50:02
sash-2007,
Встречный вопрос. Что должна делать dll (C++)? Она должна обращаться к AutoCAD (использовать ObjectARX) ? От этого многое зависит.
Название: Re: Скрыть код
Отправлено: sash-2007 от 05-06-2018, 14:14:31
Добрый день :)

DLL на С++  должна шифровать строку  по ключу
переданную из NET  DLL

к ObjectARX  обращаться   не нужно
Название: Re: Скрыть код
Отправлено: Александр Ривилис от 05-06-2018, 14:19:52
к ObjectARX  обращаться   не нужно
Ну тогда всё еще проще. Читай статью: https://docs.microsoft.com/ru-ru/cpp/dotnet/how-to-call-native-dlls-from-managed-code-using-pinvoke
Название: Re: Скрыть код
Отправлено: Александр Ривилис от 05-06-2018, 14:37:56
Вот еще цикл статей:
P/Invoke Tutorial: Basics (Part 1) [Technical Blog] (https://www.codeproject.com/Articles/403285/P-Invoke-Tutorial-Basics-Part)
P/Invoke Tutorial: Passing strings (Part 2) [Technical Blog] (https://www.codeproject.com/Articles/401922/P-Invoke-Tutorial-Passing-strings-Part)
P/Invoke Tutorial: Passing parameters (Part 3) [Technical Blog] (https://www.codeproject.com/Articles/401921/P-Invoke-Tutorial-Passing-parameters-Part)
P/Invoke Tutorial: Pinning (Part 4) [Technical Blog] (https://www.codeproject.com/Articles/401920/P-Invoke-Tutorial-Pinning-Part)
Название: Re: Скрыть код
Отправлено: Александр Пекшев aka Modis от 05-06-2018, 18:08:48
Можно использовать обфускаторы кода.
Но на мой взгляд, прежде чем тратить время на скрытие кода, нужно ответить на один простой вопрос - а он (код) кому-то нужен?
Название: Re: Скрыть код
Отправлено: Дмитрий Загорулькин от 06-06-2018, 12:07:17
Можно использовать обфускаторы кода.
Именно так. Посмотрите готовые решения по защите .NET библиотек. Даже если Вы вынесете проверку лицензии в C++, всё равно код .NET останется незащищённым. Можно будет выполнить, например, подмену C++ библиотеку проверки. Либо пересобрать .NET библиотеку таким образом, чтобы она вообще не обращалась к функциям проверки в библиотеке C++. Так что, обфускация, хоть и не гарантирует 100% надёжности, но сильно усложнит жизнь тому, кто захочет покопаться во внутренностях вашей dll. В большинстве случаев этого будет достаточно.
Название: Re: Скрыть код
Отправлено: sash-2007 от 06-06-2018, 12:33:28
Спасибо за ответы  :)

Обфускаторы  +  DLL на С++  = хорошая защита
Название: Re: Скрыть код
Отправлено: Александр Ривилис от 06-06-2018, 12:34:15
Даже если Вы вынесете проверку лицензии в C++, всё равно код .NET останется незащищённым.
Только если C++ код занимается проверкой лицензии, а не выполняет какую-то нетривиальную работу на основе информации из лицензии.
Название: Re: Скрыть код
Отправлено: Дмитрий Загорулькин от 06-06-2018, 12:47:07
Единственное, обфускаторы надо проверять на возможность использования именно в контексте приложений под AutoCAD. У меня был опыт использования такого, который все ссылочные DLL упаковывал вместе с основной в одну сборку, даже AcDbMgd, AсMgd и AcCoreMgd. Естественно, что эта сборка потом не грузилась в AutoCAD.
Только если C++ код занимается проверкой лицензии, а не выполняет какую-то нетривиальную работу на основе информации из лицензии.
Да, конечно, согласен.
Название: Re: Скрыть код
Отправлено: Дмитрий Загорулькин от 06-06-2018, 12:55:30
Кстати, если интересно, сейчас как раз изучаю Sentinel LDK. Помимо, собственно, обширнейшего механизма лицензирования, у них достаточно неплохой обфускатор. И после него сборка нормально грузится в AutoCAD и работает как надо, но уже зашифрована и защищена. Правда, использование этого механизма в среднем добавляет 1,5-2,0 тыс руб к стоимости одного рабочего места для приложения. Так что, имеет смысл использовать, если цена рабочего места сопоставима с этой суммой.
Название: Re: Скрыть код
Отправлено: Александр Ривилис от 06-06-2018, 14:36:50
Кстати, если интересно, сейчас как раз изучаю Sentinel LDK
Это которая с аппаратным (USB) ключом? Когда-то мы пользовались такими для защиты МАЭСТРО. Стоимость ключа была около $20, т.е. это была добавка к стоимости нашего ПО. Аналогичную систему защиты использовал и Autodesk до 2000-го года.
Название: Re: Скрыть код
Отправлено: Дмитрий Загорулькин от 06-06-2018, 15:00:44
Да, когда-то давно изначально у них был только аппаратный ключ. Сейчас у них есть как аппаратные ключи защиты, так и программные ключи. Есть API, что позволяет наиболее полно итегрировать их механизм лицензирования в свою систему реализации ПО. Очень интересный продукт.
Название: Re: Скрыть код
Отправлено: avc от 18-03-2019, 12:30:22
Хотелось бы эту тему раскрыть по подробней, т.к. на днях обнаружил как пользователь копается в моих исходниках. Наличие JustDecompile у него на рабочем столе открыло мне глаза, что даже простой инженер в 2 клика может залезть в мои исходники. Поэтому у меня несколько более конкретных вопросов по теме:
1. Все обфускаторы платные? Даже если мне достаточно просто тотального все переименовать?
2. Нашел невнятный комментарий, что вроде бы в C# есть атрибут для пометки части кода как unmanaged и такой код уже не виден через reflection. Есть такое? Простые декомпиляторы без деобфускаторов с таким кодом не справятся?
3. Я отправляю из плагина почту по SMTP. Соответсвенно в коде лежит логин/пароль. Для защиты от просмотра бинарника я пароль зашифровал. Но метод дешифровки в декомпилированном коде не просто виден - он прекрасно работает...  Ключ шифрования тоже бросается в глаза. Что посоветуете, где спрятать пароль?
Название: Re: Скрыть код
Отправлено: Дмитрий Загорулькин от 18-03-2019, 12:39:18
1. Все обфускаторы платные? Даже если мне достаточно просто тотального все переименовать?
В Visual Studio 2017 обнаружил недавно дополнительный компонент - Dotfuscator. Можно попробовать с помощью него обфусцировать сборку. Сам ещё не пробовал - руки не доходят.
Если что, устанавливается через Visual Studio Installer. Надо покопаться и найти его в дополнительных компонентах.
Название: Re: Скрыть код
Отправлено: Владимир Шу от 18-03-2019, 13:44:43
В Visual Studio 2017 обнаружил недавно дополнительный компонент - Dotfuscator.
Он есть и в VS 2015 Update 3. Я не запускал и не пробовал, мне пока без надобности.
Название: Re: Скрыть код
Отправлено: Дмитрий Загорулькин от 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), доступную для бесплатного личного использования.
Почитал внимательно лицензионное соглашение. Вроде как, нигде не сказано, что только для некоммерческих разработок. Делается только упор на то, что лицензия должна использоваться лично разработчиком.
Название: Re: Скрыть код
Отправлено: avc от 18-03-2019, 18:25:51
dotfuscator проверил. Работает, все переименовывает, кроме public. Пришлось повозиться, заменяя где возможно на internal. Автокад не возражает.... вроде бы. Надо еще по тестировать, но на первый взгляд все хорошо. Код делает чудовищно не читаемым. Спасибо!
Первый вопрос снят.
Название: Re: Скрыть код
Отправлено: Александр Ривилис от 18-03-2019, 18:41:03
2. Нашел невнятный комментарий, что вроде бы в C# есть атрибут для пометки части кода как unmanaged и такой код уже не виден через reflection. Есть такое? Простые декомпиляторы без деобфускаторов с таким кодом не справятся?
Ты ничего не путаешь? Может речь идёт про unsafe, а не про unmanaged? В любом случае от декомпилятора это не спасёт. Спасти может только если мудуль написал на mixed C++, когда часть кода managed (и соответственно может быть декомпилирован) и часть кода native и соответственно .NET-декомпиляторы с ним ничего сделать не могут.
Название: Re: Скрыть код
Отправлено: Александр Ривилис от 18-03-2019, 18:45:48
3. Я отправляю из плагина почту по SMTP. Соответсвенно в коде лежит логин/пароль. Для защиты от просмотра бинарника я пароль зашифровал. Но метод дешифровки в декомпилированном коде не просто виден - он прекрасно работает...  Ключ шифрования тоже бросается в глаза. Что посоветуете, где спрятать пароль?
Я бы сделал native (написанную на C++) dll-ку с функцией - дешифровки (ключ зашит в ней) и ей передавал бы строку для дешифровки. Впрочем и отправку e-mail можно в ней реализовать. Это конечно не обезопасит от нормального хакера.
Название: Re: Скрыть код
Отправлено: Дмитрий Загорулькин от 18-03-2019, 18:56:26
Первый вопрос снят.
А я  уж подумал, что обфускатор снимет оставшиеся вопросы :)
2. Нашел невнятный комментарий, что вроде бы в C# есть атрибут для пометки части кода как unmanaged и такой код уже не виден через reflection. Есть такое?
Есть ссылочка почитать о чём там речь? Вроде как, никаких простых решений для борьбы с декомпиляцией C# кода не существует. Я так понимаю, что это актуально для языка C++. На C# неуправляемый код не написать. Рекомендуют делать такие куски неуправляемого кода, пряча внутрь важную функциональность. Неуправляемый код действительно довольно сложно декомпилировать. Пока писал, Александр Наумович уже всё объяснил, в принципе :)
3. Я отправляю из плагина почту по SMTP. Соответсвенно в коде лежит логин/пароль. Для защиты от просмотра бинарника я пароль зашифровал. Но метод дешифровки в декомпилированном коде не просто виден - он прекрасно работает...  Ключ шифрования тоже бросается в глаза. Что посоветуете, где спрятать пароль?
Чем глубже - тем лучше. Насколько фантазии хватит :). У меня есть некоторые хитрости для усложнения жизни взломщикам. Но они не сказать что прямо железобетонные. Ну и раскрывать их хотя бы из соображения безопасности не хочу. Тут ещё такой момент - автору хорошо видно где и что смотреть. А когда с чужим, да ещё и обфусцированным кодом разбираться придётся - сдаётся мне, что даже неспрятанные пароли будет тяжеловато найти. Без нормальных имён, без комментариев. Задачка явно непростая, я думаю.
Название: Re: Скрыть код
Отправлено: avc от 18-03-2019, 19:15:05
Ты ничего не путаешь?
Столько начитался по теме, что конечно же все перепуталось в голове. Наверно unsafe, да. И ссылку уже теперь не найду. Но раз ни что не мешает декомпилятору, то значит и вопрос про атрибуты отпадает.
Название: Re: Скрыть код
Отправлено: avc от 18-03-2019, 19:17:57
Чем глубже - тем лучше.
Я просто подумал, что есть какие-то общие рекомендации или даже может специальный API. Задачка-то вроде общеупотребимая. Но раз каждый пилит свой велосипед - буду пилить, куда деваться....
Название: Re: Скрыть код
Отправлено: Дмитрий Загорулькин от 18-03-2019, 19:28:03
Я просто подумал, что есть какие-то общие рекомендации или даже может специальный API.
Ну кое-что есть: https://docs.microsoft.com/ru-ru/dotnet/standard/security/cryptographic-services
Только чтобы в этом всём разбираться, надо хорошенько изучить теорию криптографии.
Название: Re: Скрыть код
Отправлено: Привалов Дмитрий от 19-03-2019, 14:56:02
Интересная тема, тоже в свое время изучал форумы по защите NET, информации не очень много, все что я понял:
1. Языки типа .NET и JAVA более уязвимы, чем C++, BASIC и т.д., в силу своей природы кроссплатформенности,  у них описание типов данных вынесено отдельно и хорошо читаются. Т.е. обфускаторы прячут имя Ваших классов, методов, но базовые типы данных .NET, а возможно и типы из dll AutoCAD будут читаться.
2. Обфускаторов много, есть бесплатные, эффективность их разная. Но вот как определить после которого код легко взломать а который "крепкий орешек"? Поделитесь ссылками если есть на сравнение.
3. Деобфускаторы существуют и позволяют легко прочитать структуру программ с "корявыми именами", останется только в полуавтоматическом режиме вновь присвоить имена классам и методам на свой вкус . Есть ролики на ютубе, вроде все просто.
4. В комментах к статьям видел что человек жаловался, что после платного обфускатора хакер получил его исходники и потом по почте прикалывался и говорил что взломать было легко.
 
Если увидели инфу что какой-то обфускатор взломан или не надежен кидайте инфу сюда, всем будет полезно знать. :-)
Название: Re: Скрыть код
Отправлено: Александр Пекшев aka Modis от 19-03-2019, 15:01:51
В меня конечно сейчас камни полетят, но.... может кто-то привести пример, факт, того, как у кого-то "сперли" плагин для автокада и нанесли этим финансовый (или еще какой) урон?
Название: Re: Скрыть код
Отправлено: Александр Ривилис от 19-03-2019, 15:14:20
В меня конечно сейчас камни полетят, но.... может кто-то привести пример, факт, того, как у кого-то "сперли" плагин для автокада и нанесли этим финансовый (или еще какой) урон?
Подробностей раскрывать не буду, хотя прошло очень много лет, но в своё время защита МАЭСТРО (http://maestrogroup.com.ua/), которая была построена на ключах Sentinel была взломана. Мы сами были виноваты, так было одно место, через которое проходила проверка на уровне Да/Нет, которую нашли и обошли. Очевидно, что какой-то финансовый урон был. Пришлось тогда заняться защитой всерьез и потратить на неё несколько месяцев. Конечно сказать, что МАЭСТРО - это "плагин для автокада" будет неким преуменьшением, но в принципе это конечно плагин или множество плагинов...

Название: Re: Скрыть код
Отправлено: Дмитрий Загорулькин от 19-03-2019, 15:14:47
может кто-то привести пример, факт, того, как у кого-то "сперли" плагин для автокада и нанесли этим финансовый (или еще какой) урон?
Так ведь не побегут же к разработчику хвастаться: "смотри, мы твой плагин сломали и бесплатно юзаем!". Вскрыли, обошли защиту, установили всем в какой-нибудь шаражкиной конторе на 20 проектировщиков и пользуются тихонько.
Название: Re: Скрыть код
Отправлено: Александр Ривилис от 19-03-2019, 15:15:57
Так ведь не побегут же к разработчику хвастаться: "смотри, мы твой плагин сломали и бесплатно юзаем!".
Можешь не сомневаться, что почти так и было. На e-mail написали...
Название: Re: Скрыть код
Отправлено: Привалов Дмитрий от 19-03-2019, 15:17:40
может кто-то привести пример, факт, того, как у кого-то "сперли" плагин для автокада и нанесли этим финансовый (или еще какой) урон?
К сожалению у меня ссылок не сохранилось, остались на одной из предыдущих работ.((

Кажется А. Бушман отмечал, что часть кода в Autodesk App Store вообще без защиты лежит. Т.е. можно устанавливать триальные версии и искать не защищенные исходники и автор никогда не узнает кто и когда.

А про финансовый урон это все относительно, можно же спереть приложение и выпустить свое конкурирующее и отобрать в будущем часть прибыли разработчика.
Название: Re: Скрыть код
Отправлено: avc от 19-03-2019, 15:19:02
Вскрыли, обошли защиту, установили всем в какой-нибудь шаражкиной конторе на 20 проектировщиков и пользуются тихонько.
Именно это я и заметил. Для серьезных хакеров плагины конечно не интересны. Но уж больно легко взломать - ломают простые инженеры с минимальным опытом в VS.
Название: Re: Скрыть код
Отправлено: Дмитрий Загорулькин от 19-03-2019, 15:21:40
Кстати. Слышал такое мнение, что защиту надо делать довольно простой, но в несколько уровней. Первый уровень защиты - проверка при каждом запуске. Легко обнаружить, легко взломать. Второй уровень - проверка раз в месяц или по другому знаковому событию. Например - после 150-го вывода на печать. Если не прошла проверка второго уровня - поперёк экрана большими буквами "ваша копия нелегальна и будет заблокирована" с контактами для оплаты. Этот пример приводили для бухгалтерских программ и защита второго уровня срабатывала в период квартальных отчётов. Идея, как минимум, интересная.
Название: Re: Скрыть код
Отправлено: avc от 19-03-2019, 15:26:21
Интересная тема, тоже в свое время изучал форумы по защите NET, информации не очень много, все что я понял:
1. Языки типа .NET и JAVA более уязвимы, чем C++, BASIC и т.д., в силу своей природы кроссплатформенности,  у них описание типов данных вынесено отдельно и хорошо читаются. Т.е. обфускаторы прячут имя Ваших классов, методов, но базовые типы данных .NET, а возможно и типы из dll AutoCAD будут читаться.
2. Обфускаторов много, есть бесплатные, эффективность их разная. Но вот как определить после которого код легко взломать а который "крепкий орешек"? Поделитесь ссылками если есть на сравнение.
3. Деобфускаторы существуют и позволяют легко прочитать структуру программ с "корявыми именами", останется только в полуавтоматическом режиме вновь присвоить имена классам и методам на свой вкус . Есть ролики на ютубе, вроде все просто.
4. В комментах к статьям видел что человек жаловался, что после платного обфускатора хакер получил его исходники и потом по почте прикалывался и говорил что взломать было легко.
 
Если увидели инфу что какой-то обфускатор взломан или не надежен кидайте инфу сюда, всем будет полезно знать. :-)
Все статьи по теме говорят одно и то же - все гораздо хуже чем вы думаете. Никакой защиты нет вообще. Обфускаторы только путают код, удлиняют анализ, но никак его не защищают. Считайте, что они все взломаны.
Запутывание кода поможет если цель - не дать разрабатывать на основе этого кода что-то еще. После обфускатора проще переписать все заново. А вот защиты ваших ноу-хау, паролей, ограничений триалов и т.п. нет вообще никакой. Все внешние вызовы, в том числе API Аавтокада прекрасно видны. Как и все public объявления - обфускатор их не трогает.
Название: Re: Скрыть код
Отправлено: Александр Ривилис от 19-03-2019, 15:30:37
Кстати. Слышал такое мнение, что защиту надо делать довольно простой, но в несколько уровней.
У нас было в результате как минимум три уровня. Одним из интересных был уровень дешифровки по ключу имени lisp-функции, которая должна была дальше выполняться.
P.S.: Только .NET'а у нас не было. C++ и AutoLisp.
Название: Re: Скрыть код
Отправлено: Привалов Дмитрий от 19-03-2019, 15:31:09
Для серьезных хакеров плагины конечно не интересны.
Серьезному хакеру не интересно, пока это для него бесплатно. Как только появляется человек-заказчик с деньгами, ему становится интересно. Сам был свидетелем пары эпизодов, когда люди готовы платить за взлом.
Название: Re: Скрыть код
Отправлено: Александр Ривилис от 19-03-2019, 15:32:52
Для серьезных хакеров плагины конечно не интересны.
Серьезному хакеру не интересно, пока это для него бесплатно. Как только появляется человек-заказчик с деньгами, ему становится интересно. Сам был свидетелем пары эпизодов, когда люди готовы платить за взлом.
Всё зависит от стоимости и востребованности "плагинов".
Название: Re: Скрыть код
Отправлено: Дмитрий Загорулькин от 19-03-2019, 15:36:47
Одним из интересных был уровень дешифровки по ключу имени lisp-функции, которая должна была дальше выполняться.
Оригинально! Вот да, что-то такое и надо придумывать. Не то, что можно найти на просторах сети, а что-то своё уникальное.
Кстати, ещё, как вариант, можно же прятать функционал в компилированный LISP (файлы FAS). Мне, например, не удалось найти ни одного декомпилятора для них.
Название: Re: Скрыть код
Отправлено: Александр Ривилис от 19-03-2019, 15:39:04
Кстати, ещё, как вариант, можно же прятать функционал в компилированный LISP (файлы FAS). Мне, например, не удалось найти ни одного декомпилятора для них.
Есть такие. Так что FAS не советую...
Название: Re: Скрыть код
Отправлено: Александр Пекшев aka Modis от 19-03-2019, 15:39:09
В кулуарах бытует мнение, что взломщики для программ всем нам известной фирмы делает... эта же самая фирма! И это гениальная идея на самом деле. Прибыль приносит известность.
Если вашими плагинами пользуются какие-то мелкие шаражки по 20 человек, которые взломали эти плагины - да и флаг им в руки. Главное - чтобы они рассказывали об этих плагинах другим людям. И самое главное - чтобы такое сарафанное радио доходило уже до крупных организаций. А вот эти крупные организации не будут замарачиваться - они купят! И несколько таких крупных принесут прибыли больше, чем много мелких
ИМХО
Название: Re: Скрыть код
Отправлено: Александр Ривилис от 19-03-2019, 15:41:08
В кулуарах бытует мнение, что взломщики для программ всем нам известной фирмы делает... эта же самая фирма!
Не повторяй пожалуйста глупости.
Название: Re: Скрыть код
Отправлено: Александр Пекшев aka Modis от 19-03-2019, 15:44:13
В кулуарах бытует мнение, что взломщики для программ всем нам известной фирмы делает... эта же самая фирма!
Не повторяй пожалуйста глупости.
Так это или не так - не важно на самом деле. Просто я неоднократно слышал такое мнение, но ни соглашусь с ним, ни опровергну - просто я не знаю. Мысль моя была в другом
Название: Re: Скрыть код
Отправлено: Александр Ривилис от 19-03-2019, 15:46:20
Мысль моя была в другом
Она тоже далеко не бесспорная... Но в ту область я лезть не хочу.
Название: Re: Скрыть код
Отправлено: Привалов Дмитрий от 19-03-2019, 15:55:36
Просто я неоднократно слышал такое мнение, но ни соглашусь с ним, ни опровергну - просто я не знаю
У меня сложилось такое-же мнение. И главная цель - захват и удержание доли рынка любой ценой. Кто не готов платить все равно не заплатят, но могут уйти к конкурентам. Недавно читал статистику что доля лицензий AutoCAD 2млн.  а пираток 12млн.
/* Александр Ривилис:
Если речь идёт об этой статье: https://www.worldcadaccess.com/blog/2018/05/about-those-12-million-pirates-autodesk-has-eyes-on.html, то цифры 2млн и 12млн. */

да все верно, цифры исправил.
вот ссылка:
https://mikhailov-andrey-s.blogspot.com/2018/03/chto-novogo-v-autocad-2019-1.html (https://mikhailov-andrey-s.blogspot.com/2018/03/chto-novogo-v-autocad-2019-1.html)
Название: Re: Скрыть код
Отправлено: Александр Ривилис от 19-03-2019, 16:01:08
Привалов Дмитрий,
Александр Пекшев aka Modis,
С оффтопом заканчиваем.
Название: Re: Скрыть код
Отправлено: Привалов Дмитрий от 19-03-2019, 16:56:44
Все статьи по теме говорят одно и то же - все гораздо хуже чем вы думаете. Никакой защиты нет вообще. Обфускаторы только путают код, удлиняют анализ, но никак его не защищают. Считайте, что они все взломаны.
Ну так логично, если код находится локально и работает его можно читать, править. Рекомендации выносить важные функции во вне - на сайт, в ключ электронной защиты, шифровать прятать.

Интересно читать форумы хакеров. Переписка примерно следующая
1. .NET защищен, как определить каким обфускатором?
2. Парни подскажите чем взломать обфускатор .....
3. Че пока не смогли взломать?
4. Через год вышла утилита ххх ей можно.

В одной статье было упоминание что нормальны обфускаторы стараются спрятать вызовы методов используя различные механизмы. У распространенных(популярных)  обфускаторов эти механизмы ломают и пишут дешифраторы вызовов. И новые версии обфускаторов могут ничего не давать в плане защиты, если механизм сокрытия вызовов тот-же. Автор статьи тогда сказал, что по изучению обфускаторов решил написать свой, для того, чтобы у хакеров не было в распоряжения механизма сокрытия вызовов методов.
Название: Re: Скрыть код
Отправлено: Привалов Дмитрий от 19-03-2019, 17:06:52
Оригинально! Вот да, что-то такое и надо придумывать.
Есть еще сложная идея. Некоторые вирусы не содержат зловредного кода и антивирусник ничего в них не находит. Через некоторое время они скачивают код из сети и запускают.
Наверняка сложно анализировать такой код, т.к. надо найти блок подгрузки и перехватить кусок подгружаемого кода, что добавляет сложности. ;-)
Название: Re: Скрыть код
Отправлено: Александр Ривилис от 19-03-2019, 17:08:22
Через некоторое время они скачивают код из сети и запускают.
Это если их пускают в сеть.
Название: Re: Скрыть код
Отправлено: avc от 20-03-2019, 23:42:03
Возникла еще одна идея по теме. Можно ли как-то проверить, что плагин запущен из-под отладчика? Первое, что приходит в голову - поискать в процессах exe отладчика VS (как его там... devenv.exe ?)
Или еще лучше в самом коде обнаружить, что он перекомпилирован в DEBUG. Это возможно?
Название: Re: Скрыть код
Отправлено: Александр Ривилис от 20-03-2019, 23:48:01
Можно ли как-то проверить, что плагин запущен из-под отладчика?
Можно, но сложно, так как для таких случаев используют скрывающие себя отладчики. Вот эта функция в Win32 API проверяет запущен ли код из под отладчика: IsDebuggerPresent (https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms680345) 
И вообще посмотри эту статью: https://www.codeproject.com/Articles/670193/Csharp-Detect-if-Debugger-is-Attached
Но и на неё находят противоядие.
Название: Re: Скрыть код
Отправлено: avc от 21-03-2019, 00:09:26
Можно, но сложно, так как для таких случаев используют скрывающие себя отладчики.
От тех, кто использует скрывающие себе отладчики уже ничто не спасет :) А вот System.Diagnostics.Debugger.IsAttached - это то что надо! Спасибо.
Название: Re: Скрыть код
Отправлено: Александр Ривилис от 21-03-2019, 00:29:56
А вот System.Diagnostics.Debugger.IsAttached - это то что надо!
Ты комментарий прочитал, что он отслеживает только managed отладку?
Название: Re: Скрыть код
Отправлено: avc от 26-03-2019, 17:13:10
Ты комментарий прочитал, что он отслеживает только managed отладку?
Да, конечно. Я от отладки в VS защищаюсь. От более опытных "отладчиков" защищает низкая цена плагинов.
Название: Re: Скрыть код
Отправлено: Владимир Шу от 07-04-2019, 13:03:51
Если что, устанавливается через Visual Studio Installer. Надо покопаться и найти его в дополнительных компонентах.
Или тут скачать: https://www.preemptive.com/products/dotfuscator/downloads
Название: Re: Скрыть код
Отправлено: Andant от 17-05-2019, 14:41:20
Попробовал бесплатный обфускатор ConfuserEx - https://yck1509.github.io/ConfuserEx/ (https://yck1509.github.io/ConfuserEx/)

(https://i.postimg.cc/Jtr9V0QJ/confuser.jpg) (https://postimg.cc/Jtr9V0QJ)