Проверьте, является ли DLL подлинной / правильной, прежде чем запускать приложение в C # / .NET - PullRequest
2 голосов
/ 08 ноября 2010

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

Это не «проблема обновления», а просто - как мы можем проверить:

  1. его правильный двоичный файл / сборка

  2. клиент / клиент подделал файл и, возможно, заменил его на одноименное с похожими функциями для возврата неверных значений?

Несколько причин

Это может быть использовано для защиты от копирования / проверки лицензий или других важных проблем проверки, поэтому я пытаюсь выяснить, достаточно ли контрольной суммы MD5 + какой-либо информации о сборке? (если так, как получить доступ к деталям сборки или аналогичным?)

Конечно, ничто не является отказоустойчивым, когда вы МОЖЕТЕ декомпилировать DLL-библиотеки .NET, но именно поэтому мы хотим убедиться, что кто-то не просто декомпилирует наш список функций, а затем записывает туда собственную замену DLL наших «ооооооооооооооооооыыыких».

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

Ответы [ 2 ]

4 голосов
/ 08 ноября 2010

вижу два варианта:

  1. Цифровая подпись . Вам нужно купить цифровой сертификат, но, как только вы сделаете это, вы можете быть очень уверены в происхождении файла. Если у вас также есть преимущество в том, что ваши программы не будут помечены как «неизвестные издатели» в Windows Vista и выше.

  2. хэширования. Вы можете использовать хеш MD5 (или лучше SHA-1 ). Очень прост в реализации, но возможен обход защиты (хотя это не тривиально).

0 голосов
/ 08 ноября 2010

В Visual Studio вы можете указать ссылку на «конкретную версию» библиотеки. Вы просто меняете значение по умолчанию «False» на «True» в свойствах ссылки. Это поможет вам найти информацию о сборке. Тривиально изменить это с помощью перенаправления привязки, но это предотвратит попытку запуска программы в ситуациях, когда случайно установлена ​​неправильная версия.

Я рекомендую цифровую подпись, чтобы получить лучшую защиту от преднамеренного вмешательства, как упоминал @Alberto Martinez.

...