Защитите файл DLL с помощью файла лицензии
Каков наилучший способ обеспечить использование / загрузку DLL с файлом лицензии?
3 ответа
Несколько вещей, которые вы можете рассмотреть:
Проверьте сумму в DLL. Используя криптографическую хеш-функцию, вы можете сохранить ее внутри файла лицензии или внутри DLL. Это обеспечивает способ проверки, чтобы определить, если мой исходный файл DLL не был взломан, или это файл лицензии для этой библиотеки DLL. Несколько простых методов замены байтов могут быстро убрать вашу хэш-функцию с проторенной дорожки (и, следовательно, ее нелегко воспроизвести).
Не храните свой хеш как строку, разбейте его на неподписанные шорты в разных местах.
Как сказал Ларри, MAC-адрес довольно распространен. Есть много примеров того, как получить это в проекте Code Project, но имейте в виду, что в наши дни легко подделать.
Мое предложение, должно быть использование закрытых / открытых ключей для генерации лицензии.
Короче говоря, режимы атаки будут бинарными (измените инструкции вашего DLL-файла), поэтому защититесь от этого или от генерации ключа, чтобы сделать каждую лицензию пользователя, машины и даже установки конкретной.
Вы можете проверить наличие лицензии внутри DllMain() и умереть, если она не найдена.
Это также зависит от того, как работает ваш лицензионный алгоритм. Я бы посоветовал вам использовать что-то вроде обмена ключами Диффи-Хеллмана (или даже RSA) для генерации своего рода открытого / закрытого ключа, который может быть передан вашим пользователям на основе некоторой информации.
(В зависимости от приложения, я знаю один случай, когда я написал лицензионный код для компании, они использовали MAC-адрес и некоторые другие данные, хешировали его и шифровали хеш, давая им "значение ключа", если регистрационный номер был верным). Это гарантирует, что файл ключа не может быть перемещен (или передан) на другую машину, таким образом "крадя" программное обеспечение.
Если вы хотите копать глубже и избегать хакеров, это целая другая тема....