Как предотвратить декомпиляцию любого [закрытого] приложения C#

Я сделал это перед использованием библиотеки MSXML и затем использования объекта XMLHttpRequest. См. http://scriptorium.serve-it.nl/view.php?sid=40

26
задан Richardissimo 14 July 2018 в 02:40
поделиться

10 ответов

Если вы развертываете сборки .NET на своих клиентских машинах, всегда будет возможна некоторая декомпиляция с использованием отражателя и аналогичных инструментов.

Однако эта ситуация существенно не отличается от той, что вы Не столкнулся бы, если бы вы написали приложение на родном C ++. Всегда можно декомпилировать вещи - если это было невозможно, процессор тоже не смог бы этого понять.

Вы никогда не победите эксперта-взломщика - они будут рассматривать вашу безопасность как интеллектуальную головоломку, которую нужно решить для проблема сама по себе.

Вопрос вращается вокруг того, насколько сложно победить ваши методы лицензирования и возврата инвестиций .

Сядьте с таблицей и просмотрите возможные сценарии - опасность в наверное меньше, чем вы думаете.

Факторы, подобные " потому что большинство разработчиков (включая меня) совсем не похожи на обычных пользователей.

Я бы посоветовал вам сконцентрироваться на усложнении работы взломщика, потому что вы никогда не сможете сделать это невозможным, просто невыгодным.

Одна из возможностей попробовать: можно предварительно скомпилировать сборки в машинный код как часть процесса установки. Paint.NET делает это из соображений производительности. Я считаю, что как только вы это сделаете, вы сможете отказаться от исходных сборок и использовать оптимизированные версии собственного кода.

потому что большинство разработчиков (включая меня) совсем не похожи на обычных пользователей.

Я бы посоветовал вам сконцентрироваться на усложнении работы взломщика, потому что вы никогда не сможете сделать это невозможным, просто невыгодным.

Одна из возможностей попробовать: можно предварительно скомпилировать сборки в машинный код как часть процесса установки. Paint.NET делает это из соображений производительности. Я считаю, что как только вы это сделаете, вы сможете отказаться от исходных сборок и использовать оптимизированные версии собственного кода.

Paint.NET делает это из соображений производительности. Я считаю, что как только вы это сделаете, вы сможете отказаться от исходных сборок и использовать оптимизированные версии собственного кода.

Paint.NET делает это из соображений производительности. Я считаю, что как только вы это сделаете, вы сможете отказаться от исходных сборок и использовать оптимизированные версии собственного кода.

25
ответ дан 28 November 2019 в 07:33
поделиться

Вот аналогичный вопрос о обфускаторах . Может быть, это даст вам полезную информацию.

0
ответ дан 19 July 2019 в 10:56
поделиться

, чтобы ответить на ваш вопрос о оболочке C ++ вокруг кода .net; Я не думаю, что это сработает, потому что, когда вы развертываете приложение, окончательная dll c ++ и .net dll, содержащие код бизнес-логики, будут отдельными объектами, и те, кто хочет добраться до вашей бизнес-логики, все равно смогут просто выбрать .net dll и заглянуть внутрь.

0
ответ дан 28 November 2019 в 07:33
поделиться

Я использую smartassembly . Он прост в использовании, а также имеет возможность отправлять отчеты о сбоях обратно, также как и встроенные вами.

0
ответ дан 28 November 2019 в 07:33
поделиться

Обфускаторы, упомянутые другими, вероятно, очень хороши.

Альтернативный подход, который вы, возможно, не рассматривали, - это кодирование некоторой основной бизнес-логики с использованием языка, полностью скомпилированного в машинный код, такого как C ++.

Преимущество этого состоит в том, что он делает его гораздо более сложным. кому-то сложно декомпилировать ваш код. Недостатком этого является то, что вам нужно поддерживать код на двух языках. Это может быть не лучший подход для вашей ситуации, но он полезен в случаях, когда требуется обфусцировать только небольшую часть кода, в то время как остальная часть кода представляет собой беспорядок пользовательского интерфейса.

Например, ваш пакет медицинского программного обеспечения может выполнять обнаружение краев, скажем, определенных желез, чтобы сообщить врачу размер указанной железы.

0
ответ дан 28 November 2019 в 07:33
поделиться

В последний раз, когда я изучал это, Spices.Net Obfuscator выглядел как лучшая вещь на рынке.

Нет, я не работаю на них. :)

0
ответ дан 28 November 2019 в 07:33
поделиться

Google for .NET Obfuscator. Вы найдете множество продуктов, которые помогут в этом. Также есть связанные вопросы, уже заданные в Stack Overflow.

Вот некоторые из них:

EDIT : В поисках инструментов де-запутывания я наткнулся на инструмент с открытым исходным кодом De4Dot . Этот инструмент поддерживает декомпиляцию обфуктированных библиотек DLL, созданных большинством коммерческих инструментов, а также неплохо справляется со своей задачей.

6
ответ дан 28 November 2019 в 07:33
поделиться

Если бы это был я, я бы не пытался запутать; Я хотел бы:

  1. Не беспокоиться об этом и стремиться к постоянному совершенствованию и оставаться впереди

Но во-вторых

  1. Рассмотреть возможность предоставления «секретных» услуг через Интернет. Вам решать, насколько это важно и возможно; но он «предотвращает» декомпиляцию, потому что у конечного пользователя даже нет кода.
6
ответ дан 28 November 2019 в 07:33
поделиться

возможно, вы захотите рассмотреть Remotesoft Salamander Protector он намного лучше всех остальных тем, что делает невозможной декомпиляцию на язык высокого уровня.

Конечно, любой эксперт может провести достаточно времени с вашей программой и вычислить ее, потому что она декомпилируется, но скрывает все методы set и get

Таким образом, они могут получить пик, но это все. Им придется вычислить остальное, что снижает вероятность того, что кто-то просто взломает ее.

надеюсь, это поможет

0
ответ дан 28 November 2019 в 07:33
поделиться

Запись в эту ветку спустя долгое время. Мы приобрели программное обеспечение под названием Intellilock , которое помогает предотвратить декомпиляцию, обфускацию, а также имеет мощный модуль лицензирования.

Мы не выбрали .Net Reactor , хотя в нем больше средств предотвращения, поскольку Intellilock достаточно хорошо служила нашей цели.

0
ответ дан 28 November 2019 в 07:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: