




Вы можете проверить наличие лицензии внутри DllMain () и умереть, если она не найдена.
Это также зависит от того, как работает ваш алгоритм лицензирования. Я предлагаю вам изучить использование чего-то вроде Обмен ключами Диффи – Хеллмана (или даже ЮАР) для генерации какого-либо открытого / закрытого ключа, который может быть передан вашим пользователям на основе некоторой информации.
(В зависимости от приложения, я знаю один случай, когда я написал код лицензии по контракту для компании, они использовали MAC-адрес и некоторые другие данные, хэшировали их и зашифровали хеш, дав им «значение ключа», если регистрационный номер был правильным). Это гарантирует, что ключевой файл нельзя переместить (или передать) на другой компьютер, что приведет к «краже» программного обеспечения.
Если вы хотите копнуть глубже и избежать хакеров, это отдельная тема ...
Возможно, вам стоит подумать о нескольких вещах:
Контрольная сумма DLL. Используя криптографическая хеш-функция, вы можете сохранить его внутри файла лицензии или внутри DLL. Это обеспечивает метод проверки, чтобы определить, не взломан ли мой исходный файл DLL или это файл лицензии для этой DLL. Несколько простых методов перестановки байтов могут быстро сбить вашу хеш-функцию с проторенной дорожки (и, следовательно, ее нелегко воспроизвести).
Не храните хэш в виде строки, разбейте его на короткие отрезки без знака в разных местах.
Как сказал Ларри, MAC-адрес встречается довольно часто. Есть много примеров того, как получить это на Кодовый проект, но имейте в виду, что в наши дни легко подделать.
Мое предложение, следует использовать ключи частный / публичный для генерации лицензий.
Короче говоря, режимы атаки будут двоичными (изменить инструкции вашего файла DLL), чтобы защитить от этого, или генерации ключей, чтобы сделать каждого пользователя лицензии, машину и даже установку специфическими.
ЧИТАЙТЕ, что вам разрешено делать в DllMain, это немного!