2009-12-07 3 views
5

Предположим, у меня есть сборка .NET, которая имеет сильное имя. Только у меня есть доступ к закрытому ключу. Затем я распространяю сборку на какую-то клиентскую систему.Насколько сложно вмешиваться в сильную именованную сборку?

Насколько сложно клиенту изменить сборку? Т.е.: что им нужно сделать, чтобы изменить мою сборку?

ответ

15

Мощное именование не предотвращает модификацию сборки, но предотвращает непреднамеренное использование других приложений, которые ссылаются на сильную именованную сборку с использованием модифицированной версии.

+0

+1 Хорошо сказал, Рекс. –

+1

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

+1

@ Barry, следовательно, «непреднамеренно используя» часть. Если вы изменяете ссылку, это не случайно. –

0

Это ничем не отличается от модификации не строго типизированной сборки. Единственное реальное различие заключается в том, что для использования модифицированной сборки им придется запускать сильную утилиту имен (sn.exe).

+0

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

+0

Прости, вот что я имел в виду. Они будут использовать sn.exe с опцией -Vr, чтобы обойти требование сильного имени. –

0

Как говорили другие, это очень легко.

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