Я сделал это перед использованием библиотеки MSXML и затем использования объекта XMLHttpRequest. См. http://scriptorium.serve-it.nl/view.php?sid=40
Если вы развертываете сборки .NET на своих клиентских машинах, всегда будет возможна некоторая декомпиляция с использованием отражателя и аналогичных инструментов.
Однако эта ситуация существенно не отличается от той, что вы Не столкнулся бы, если бы вы написали приложение на родном C ++. Всегда можно декомпилировать вещи - если это было невозможно, процессор тоже не смог бы этого понять.
Вы никогда не победите эксперта-взломщика - они будут рассматривать вашу безопасность как интеллектуальную головоломку, которую нужно решить для проблема сама по себе.
Вопрос вращается вокруг того, насколько сложно победить ваши методы лицензирования и возврата инвестиций .
Сядьте с таблицей и просмотрите возможные сценарии - опасность в наверное меньше, чем вы думаете.
Факторы, подобные " потому что большинство разработчиков (включая меня) совсем не похожи на обычных пользователей.
Я бы посоветовал вам сконцентрироваться на усложнении работы взломщика, потому что вы никогда не сможете сделать это невозможным, просто невыгодным.
Одна из возможностей попробовать: можно предварительно скомпилировать сборки в машинный код как часть процесса установки. Paint.NET делает это из соображений производительности. Я считаю, что как только вы это сделаете, вы сможете отказаться от исходных сборок и использовать оптимизированные версии собственного кода.
потому что большинство разработчиков (включая меня) совсем не похожи на обычных пользователей.Я бы посоветовал вам сконцентрироваться на усложнении работы взломщика, потому что вы никогда не сможете сделать это невозможным, просто невыгодным.
Одна из возможностей попробовать: можно предварительно скомпилировать сборки в машинный код как часть процесса установки. Paint.NET делает это из соображений производительности. Я считаю, что как только вы это сделаете, вы сможете отказаться от исходных сборок и использовать оптимизированные версии собственного кода.
Paint.NET делает это из соображений производительности. Я считаю, что как только вы это сделаете, вы сможете отказаться от исходных сборок и использовать оптимизированные версии собственного кода. Paint.NET делает это из соображений производительности. Я считаю, что как только вы это сделаете, вы сможете отказаться от исходных сборок и использовать оптимизированные версии собственного кода.Вот аналогичный вопрос о обфускаторах . Может быть, это даст вам полезную информацию.
, чтобы ответить на ваш вопрос о оболочке C ++ вокруг кода .net; Я не думаю, что это сработает, потому что, когда вы развертываете приложение, окончательная dll c ++ и .net dll, содержащие код бизнес-логики, будут отдельными объектами, и те, кто хочет добраться до вашей бизнес-логики, все равно смогут просто выбрать .net dll и заглянуть внутрь.
Я использую smartassembly . Он прост в использовании, а также имеет возможность отправлять отчеты о сбоях обратно, также как и встроенные вами.
Обфускаторы, упомянутые другими, вероятно, очень хороши.
Альтернативный подход, который вы, возможно, не рассматривали, - это кодирование некоторой основной бизнес-логики с использованием языка, полностью скомпилированного в машинный код, такого как C ++.
Преимущество этого состоит в том, что он делает его гораздо более сложным. кому-то сложно декомпилировать ваш код. Недостатком этого является то, что вам нужно поддерживать код на двух языках. Это может быть не лучший подход для вашей ситуации, но он полезен в случаях, когда требуется обфусцировать только небольшую часть кода, в то время как остальная часть кода представляет собой беспорядок пользовательского интерфейса.
Например, ваш пакет медицинского программного обеспечения может выполнять обнаружение краев, скажем, определенных желез, чтобы сообщить врачу размер указанной железы.
В последний раз, когда я изучал это, Spices.Net Obfuscator выглядел как лучшая вещь на рынке.
Нет, я не работаю на них. :)
Google for .NET Obfuscator. Вы найдете множество продуктов, которые помогут в этом. Также есть связанные вопросы, уже заданные в Stack Overflow.
Вот некоторые из них:
EDIT : В поисках инструментов де-запутывания я наткнулся на инструмент с открытым исходным кодом De4Dot . Этот инструмент поддерживает декомпиляцию обфуктированных библиотек DLL, созданных большинством коммерческих инструментов, а также неплохо справляется со своей задачей.
Если бы это был я, я бы не пытался запутать; Я хотел бы:
Но во-вторых
возможно, вы захотите рассмотреть Remotesoft Salamander Protector он намного лучше всех остальных тем, что делает невозможной декомпиляцию на язык высокого уровня.
Конечно, любой эксперт может провести достаточно времени с вашей программой и вычислить ее, потому что она декомпилируется, но скрывает все методы set и get
Таким образом, они могут получить пик, но это все. Им придется вычислить остальное, что снижает вероятность того, что кто-то просто взломает ее.
надеюсь, это поможет
Запись в эту ветку спустя долгое время. Мы приобрели программное обеспечение под названием Intellilock , которое помогает предотвратить декомпиляцию, обфускацию, а также имеет мощный модуль лицензирования.
Мы не выбрали .Net Reactor , хотя в нем больше средств предотвращения, поскольку Intellilock достаточно хорошо служила нашей цели.