Как я могу запретить другим программистам переносить мою сборку?

StackOverflow https://stackoverflow.com/questions/1607107

Вопрос

Может кто-нибудь сказать мне, как лучше всего защитить мои библиотеки компонентов в .Net?

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

Есть идеи?

Это было полезно?

Решение

Поскольку ваш код уже запутан, вы можете принудительно создать экземпляр встроенных классов с помощью лицензионного ключа перед вызовом любого из методов. Если вы обнаружите, что ключ недействителен / присутствует, вы можете либо отобразить окно сообщения, либо вернуть ошибку / исключение.     Есть много примеров, где это делается (см. Xceed.com), но, как показывают предыдущие посты, это просто для того, чтобы отговорить конечных пользователей от попыток использовать вашу сборку незаконно. Не полностью предотвратить это. При наличии достаточного времени и стимула любая вещь может быть сломана.

Другие советы

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

Лучшее, что вы можете сделать - это запутать ваш код. Это не будет на 100% безопасно и может быть переработано.

dotfuscator

хороший.

Если не считать "не распространять их" не существует 100% надежного способа предотвращения несанкционированного доступа.

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

Еще одна идея - объявить все ваши типы в сборке как internal , а затем настроить EXE-файл основного приложения как сборку друга с помощью InternalsVisibleTo атрибут сборки. Обычно это используется для внутреннего тестирования юнит-модулей, и я не знаю, насколько это будет безопасно на практике. Это не помешает людям разобрать вашу сборку, поэтому вы все равно можете захотеть запутать ее, и это совсем не сработает, если вы продаете библиотеку и намереваетесь использовать ее только для лицензий клиентов (поскольку вам придется предоставлять собственные сборки каждому клиент).

Как сказал Феникс, на самом деле нет способа полностью защитить ваш код, так как он все еще может быть декомпилирован с помощью такого инструмента, как рефлектор.

Одним из таких инструментов будет использование Dotfuscator .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top