Как вы блокируете DLL? - PullRequest
2 голосов
/ 05 июня 2009

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

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

Есть идеи? Заранее спасибо.

A

Ответы [ 5 ]

5 голосов
/ 05 июня 2009

Для библиотек .net это уже встроено в каркас, вам просто нужно его настроить. Вот статья MSDN об этом.

Как: Лицензировать компоненты и элементы управления

Кроме лицензирования, вы должны также запутывать свой код, используя такой инструмент, как dotFuscator.

DotFuscator от PreEmptive

5 голосов
/ 05 июня 2009

Как вы думаете, насколько вероятно, что вы действительно будете страдать от каких-либо вредных последствий (потерянного дохода и т. Д.) Из-за этого? Насколько значительными будут такие вредные последствия? Взвесьте это в сравнении с затратами на это. Вы могли бы использовать обфускацию (потенциально - это зависит от того, какая это DLL: нативная или .NET?), Но это даст только определенную меру защиты.

Вы должны признать, что маловероятно (или невозможно), что вы найдете решение, которое на 100% безопасно. Существуют оттенки серого, и чем сложнее вы делаете это для негодяев, тем больше усилий (или денег) вы тоже должны вкладывать в него. Это может также усложнить диагностику проблем (например, трассировки стека в обфускаторах; некоторые позволяют инструменту картирования вернуться к оригиналу, но вы можете потерять некоторую информацию).

3 голосов
/ 05 июня 2009

Похоже, вам нужно создать и использовать лицензионные ключи:

http://www.google.com/search?q=creating+license+keys+for+applications&rls=com.microsoft:pt&ie=UTF-8&oe=UTF-8&startIndex=&startPage=1

2 голосов
/ 05 июня 2009

Быстрый и грязный в .NET: строгое имя всех ваших сборок и всех сборок, которые будут иметь доступ к вашей "заблокированной" dll. Отметьте все свои классы API как внутренний вместо public . Затем на вашей «заблокированной» dll укажите те dll, которые должны иметь доступ к вашему внутреннему API с атрибутом InternalsVisibleTo .

1 голос
/ 05 июня 2009

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

Любое решение, которое вы найдете, будет взломано. Кто-то может просто открыть dll в hex-редакторе и исправить вашу функцию, которая выполняет проверки, валидацию и верификацию.

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