Page 1 of 1

Защита C# (.NET) приложений

Posted: Sun Mar 18, 2018 3:48 pm
by Duss
Здравствуйте!
Я знаю что защита этих приложений не поддерживается, однако не могли бы Вы дать некоторые рекомендации по работе с ними?

Также нашел на этом форуме сообщение от Dec 22, 2014
Эксперименты с .NET (в планах на 4.0):
Как результаты экспериментов? Есть успехи или идея заброшена?


У меня стоит задача защитить приложение написанное на .NET (или переписать его на С++ :( )
Как выяснилось в .NET все плохо с защитой исходного кода. После исследований на эту тему приходит в голову следующий вариант:

Написать нативное приложение на С++ иди Delphi, которое будет защищаться через WMProtect. Приложение C# будет добавлено в ресурсы этого приложения и будет вызываться из защищенной секции. Дополнительно на C# будет повешен какой-нибудь обсуфикатор но не суть.
Я в общих чертах понимаю как работает защита в обычных приложениях но не спец в этом. Подскажите насколько такой вариант работы будет надежным? Не смогут ли вытащить исполняемый файл C# из оперативной памяти или ресурсов?
Может дадите какие-то другие рекомендации, понимаю, что полностью защититься не получится, но как максимально усложнить взлом приложения?

Re: Защита C# (.NET) приложений

Posted: Wed Mar 21, 2018 5:31 am
by Admin
Не проще перевести из C# на C++ в виде DLL (и затем вызывать эту DLL из .NET приложения) только тот код, который вы хотите защитить?

Re: Защита C# (.NET) приложений

Posted: Wed Mar 21, 2018 6:48 am
by Duss
Думал над таким вариантом.
Я работаю со сторонним API, предоставляющим DLL для работы с ним. Из DLL экспортируются объекты (интерфейсы) с помощью которых происходит управление внешним сервисом.
Эти объекты отдают имя сервера, с которым происходит работа и все лицензирование построено на определении имени сервера.
Поэтому важна защита на этапе инициализации и подключения. Перевод этой части на С++ равносилен переводу всего проекта на С++ :(


Также в общем случае, если вынести какой-то код на С++ то это должна быть основная логика программы, т.е. тот код, без которого программа не будет работать и переписать который будет дороже чем купить. Чаще всего этот код критичен к времени выполнения и могут возникнуть сложности при его виртуализации. Тогда как в случае, когда весь проект написан на С++ достаточно защитить приложение на старте, спрятать создание важных объектов и защитить эту часть кода, оставив основную логику без виртуализации.
Но это мое мнение, и все сильно зависит от проекта, конечно.

P.S. Я понимаю, что VMProtect не предназначен для защиты С# приложений и не прошу их поддержку из коробки. Мне бы пару советов от специалистов, разбирающихся в тонкостях защиты кода больше чем я.
Или в случае С# все безнадежно? :(

Re: Защита C# (.NET) приложений

Posted: Mon Dec 03, 2018 1:43 pm
by dzid
А как насчёт mixed assemblies (разумеется, только наивный код)?

Re: Защита C# (.NET) приложений

Posted: Tue Dec 04, 2018 5:17 am
by Admin
Никак.

Re: Защита C# (.NET) приложений

Posted: Sat Jul 20, 2019 5:57 am
by Admin