Как предотвратить загрузку DLL в других приложениях - PullRequest
8 голосов
/ 24 мая 2010

В настоящее время я разрабатываю приложение на C # .Net, в котором я использую пользовательский элемент управления, который я разработал некоторое время назад. Мне нужно, чтобы dll доставлялась в новом приложении, но по понятным причинам я не хочу, чтобы dll-файл использовался для иностранных приложений.

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

Есть идеи? Должно быть банально imho.

Спасибо и всего наилучшего, Daniel

Ответы [ 4 ]

5 голосов
/ 24 мая 2010

Я думаю, вам нужно изучить лицензирование вашего (их) элемента (ов): http://msdn.microsoft.com/en-us/library/fe8b1eh9.aspx

3 голосов
/ 24 мая 2010

Загляните в IL Merge . Эта утилита позволяет объединять несколько сборок .NET в одну сборку.

Цитирую:

ILMerge - это утилита, которая может использоваться для объединения нескольких сборок .NET в одну сборку. ILMerge принимает набор входных сборок и объединяет их в одну целевую сборку. Первая сборка в списке входных сборок является основной сборкой. Если первичная сборка является исполняемым файлом, то целевая сборка создается как исполняемый файл с той же точкой входа, что и первичная сборка. Кроме того, если первичная сборка имеет строгое имя и предоставляется файл .snk, то целевая сборка повторно подписывается указанным ключом, чтобы у него также было строгое имя.

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

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

1 голос
/ 24 мая 2010

Если вы можете изменить DLL с помощью проприетарного элемента управления, вы можете ...

  1. Пометить все элементы в управляющей DLL как внутренние.
  2. Скомпилировать сборку, чтобы ваша вызывающая DLLимеет доступ к внутренним членам вашей управляющей DLL.
  3. Подпишите вызывающую DLL.

Подробнее о том, как это сделать, см. на этой странице MSDN .

0 голосов
/ 24 мая 2010

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

Вы можете посмотреть этот ответ здесь, чтобы запретить неизвестную сборку ссылаться на вашу сборку: Защищенные сборки C # от неавторизованных абонентов

Вам следует запутать вашу сборку, если вы действительно нервничаете по этому поводу.Это сделает сложнее для декомпиляции.Что-то вроде Babel прекрасно работает: http://babelobfuscator.blogspot.com/

Вы также можете использовать ILMerge для сохранения сборки в другой сборке.Тем не менее, эта сборка будет извлечена и выставлена ​​во время выполнения.Вы можете сделать что-то в этом направлении, чтобы извлечь двоичный ресурс из одной сборки и создать временную сборку, которая будет использоваться во время выполнения.Если кто-то действительно мотивирован, он также может найти временную сборку ...

Реальный вопрос в том, как далеко вы хотите зайти !?В какой-то момент это не будет стоить того.Вот где вы остановитесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...