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(модуль + пример использования)

Похожие статьи:

  1. Компонент Antigate для Delphi
  2. Использование XML в Delphi (msxml_tlb)
  3. Взаимодействие Oracle и Delphi
  4. Установка Indy на Portable Delphi
  5. Многопоточность в Delphi

Добавить комментарий

Ваш адрес email не будет опубликован.