Вопрос

У меня есть .NET DLL (C # / VB) с пользовательскими элементами управления, расширением и прочим.

Я хочу, чтобы это было доступно только для меня.Есть ли какой-нибудь способ ограничить несанкционированный доступ к DLL?

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

Решение

Ваш лучший вариант - упаковать / зашифровать / запутать DLL, как указал Антон.А затем молитесь, чтобы никому не пришлось проходить через все хлопоты по его распаковке.

Обычный термин для этого - просто "упаковка".

Это то, что разработчики игр делают с f.ex Sony Безопасность.

Но все упаковочные программы имеют одни и те же недостатки:

  1. Они могут быть подвергнуты обратному проектированию, и ключ шифрования должен быть встроен в двоичный файл
  2. Обычно они стоят денег, а те, которые этого не делают (UPX) легко распаковываются.
  3. Проблемы с несовместимостью платформы могут возникнуть в процессе распаковки.
  4. Упакованные двоичные файлы, как правило, выводят антивирусы из себя.

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

Вы также могли бы сделать свой собственный упаковщик, но поверьте мне, когда я это говорю:Ты же не хочешь туда идти ;)

Короче говоря, то, чего вы хотите, непросто достичь даже крупным игрокам.Сколько времени требуется, чтобы игра SecuROM появилась на piratebay?Так что единственное, что вы можете сделать, это "поднять планку" и надеяться остаться незамеченным хорошими реверс-инженерами.

Наконец, зная, во что ты ввязываешься:Будет ли это стоить того для вас?Допустим, вы отправили DLL распакованной - такой, какая она есть.Людям все равно нужно будет перепроектировать его, чтобы использовать.Кто вообще использует недокументированные сторонние библиотеки?Я делал это всего один или два раза в моменты безумия.

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

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

Теоретически, вы можете что-то сделать с КАС, но я не совсем уверен, что это вообще возможно.

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

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

Вот почему DRM не работает.Вы хотите защитить X, но хотите, чтобы кто-то другой его просмотрел.Проблема в том, что человек, которого вы не хотите просматривать / использовать X, и человек, которого вы хотите использовать X, на каком-то уровне, один и тот же человек.

Мне так надоело иметь дело со сторонним лицензионным кодом (взламывать / отменять регистрацию / думать, что я не был законным пользователем, когда должен был им быть), что я стал членом FSF.Не стоит моего времени обходить чужие ограничения, и не стоит моего времени разбираться с ними.Их код не был таким уж особенным.

Если вы хорошо разбираетесь в именовании своих сборок, рассмотрите возможность использования Атрибут PublisherIdentityPermissionAttribute.Вы можете добавить это в свою библиотеку DLL, и только сборки, подписанные правильным ключом издателя, смогут вызывать этот метод или класс.

Это бесплатно и встроено в .NET framework.Если вам нужны дополнительные функции (например, возможность лицензировать DLL другим разработчикам), рассмотрите средство защиты от копирования профессионального уровня, такое как наш инструмент Лицензирование DeployLX.

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

Как вы докажете, что вы - это вы для DLL.(Вы могли бы проверить наличие чего-нибудь попроще, например текущего имени пользователя, но это может быть не идеально).

Вы могли бы потребовать, чтобы exe-файл был подписан вашим сертификатом.

Вам следует ознакомиться с инфраструктурой лицензирования.Я понятия не имею, как это реализовать, но вы используете его, создавая файл .licx, а затем, я думаю, в процессе сборки используется инструмент lc.exe, чтобы сделать что-то для встраивания лицензии.

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