Delphi→Привязка к железу в Delphi
Сен 2, 2011
Занимаясь разработкой программ для продажи, рано или поздно программист начинает задумываться о защите своих приложений. Учитывая менталитет нашего населения, обычная защита в виде серийного номера здесь не подойдет. Так как это не даст гарантии, что программа в дальнейшем не будет перепродана или выложена в паблик с этими серийными номерами. Решением данной проблемы может стать привязка вашего продукта к определенному компьютеру.
Как это происходит?
Пользователь получает ваш продукт и генератор серийного номера. Затем он запускает генератор, который выводит код текущего компьютера, после чего клиент сообщает его вам. Вы, используя генератор лицензий, создаете уникальный файл на основе полученного кода, и после оплаты передаете его пользователю. В свою очередь, он помещает его в папку с вашей программой и запускает её. Приложение запустится только в том случае, если существует корректный файл лицензии.
Модуль
Для того, чтобы постоянно не переписывать защитный код, я решил создать отдельный модуль — BindEx. С помощью него можно произвести быструю привязку к железу в несколько строк кода. Шифрование/сжатие файла лицензии производится библиотекой Zlib, которая использует комбинацию алгоритма LZ77 и алгоритма Хаффмана. Сам серийный номер преобразуется в хэш через алгоритм MD5.
Описание модуля
Disk
property Disk: char write FDisk;
Свойство, принимающее в качестве значения, букву диска для которой будет формироватся серийный номер (по умолчанию — C).
KeyFile
property KeyFile: string write FKeyFile;
Свойство, принимающее в качестве значения, имя файла лицензии (по умолчанию — key.lic).
Salt
property Salt: string write FSalt;
Свойство, принимающее в качестве значения, добавочное секретное слово (соль) для создания уникального серийного номера (по умолчанию пусто).
CreateKeyFile
procedure CreateKeyFile(ASerial: string);
Процедура создает файл лицензии на основе серийного номера ASerial.
CheckNow
procedure CheckNow;
Процедура проверяет файл лицензии и если он неверный завершает работу.
GetDiskSerial
function GetDiskSerial: string;
Функция возвращает серийный номер текущего компьютера.
В архиве вы также найдете пример реализации типичного приложения с использованием модуля BindEx.
Скачать bindex.zip(модуль + пример использования)
Похожие статьи: