Как мне запретить другим программистам переносить мою сборку? - PullRequest
1 голос
/ 22 октября 2009

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

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

Есть идеи?

Ответы [ 5 ]

4 голосов
/ 22 октября 2009

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

3 голосов
/ 22 октября 2009

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

Dotfuscator

хороший.

2 голосов
/ 22 октября 2009

Если не считать «не распространять их», нет 100% надежного способа предотвратить несанкционированный доступ.

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

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

1 голос
/ 22 октября 2009

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

1 голос
/ 22 октября 2009

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

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

...