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

Здравствуйте!
Я знаю что защита этих приложений не поддерживается, однако не могли бы Вы дать некоторые рекомендации по работе с ними?

Также нашел на этом форуме сообщение от Dec 22, 2014

Эксперименты с .NET (в планах на 4.0):

Как результаты экспериментов? Есть успехи или идея заброшена?


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

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

Не проще перевести из C# на C++ в виде DLL (и затем вызывать эту DLL из .NET приложения) только тот код, который вы хотите защитить?

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


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

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

А как насчёт mixed assemblies (разумеется, только наивный код)?

Никак.

VMProtect for .NET (сoming soon)