Защитить DLL файл с помощью файла лицензии

Каков наилучший способ защитить использование/загрузку DLL с помощью файла лицензии?

Ответ 1

Несколько вещей, которые вы, возможно, захотите рассмотреть:

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

Не храните хеш в виде строки, разделите ее на неподписанные шорты в разных местах.

Как сказал Ларри, MAC-адрес довольно распространен. Есть много примеров того, как получить это на Проект кода, но имейте в виду, что это легко подделать в наши дни.

Мое предложение должно быть использовано частные/общедоступные ключи для генерации лицензии.

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

Ответ 2

Вы можете проверить лицензию внутри DllMain() и умереть, если она не найдена.

Ответ 3

Это также зависит от того, как работает ваш алгоритм лицензии. Я бы предложил вам использовать что-то вроде Обмен ключами Diffie-Hellman (или даже RSA) для создания своего рода открытого/закрытого ключа, который может быть передан вашим пользователям на основе некоторой информации.

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

Если вы хотите копать глубже и избегать хакеров, это целая "тема".