erik schouten Ответов: 1

Проверка лицензий при импорте DLL-файлов с помощью MEF, .NET C#


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

Что я уже пробовал:

У меня абсолютно 0 опыта работы по теме лицензирования. Я прочитал много статей, но ничего действительно не подходит к моей проблеме.

1 Ответов

Рейтинг:
1

bling

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

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

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

var self = System.Reflection.Assembly.GetExecutingAssembly();

var assembly = System.Reflection.Assembly.LoadFile("suspect.dll");

Агрегат Класса (Система.Отражение)[^]

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

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

Вы должны защитить закрытый ключ, не делясь им ни с кем.

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