О привязке по HWID

Issues related to VMProtect
Post Reply
Artur
Posts: 2
Joined: Mon Apr 01, 2019 9:43 am

О привязке по HWID

Post by Artur »

Хотел задать Вам вопрос именно по Delphi: Перед покупкой лицензии. Тест провожу на ПК знакомого.

Как организовать привязку по HWID. Что я делаю:
1. Получаю HWID системы вот в таком виде:

Code: Select all

procedure TForm1.FormCreate(Sender: TObject);
 var pBuf:PAnsiChar;
  nSize:Integer;
begin
  nSize:=VMProtectGetCurrentHWID(nil,0);
  GetMem(pBuf,nSize);
  try
    VMProtectGetCurrentHWID(pBuf,nSize); //<<<<<<<<
    Memo1.Lines.Add(pBuf);
  finally
    FreeMem(pBuf);
  end;
end;
end.
2. А потом привязываю этот HWID вот так:
Image
Image

3. Но как добавить проверку ключа в саму программу, вот так не работает:

Code: Select all

uses
  System.SysUtils, Classes, VMProtectSDK;

var
  FileName: String;
  Lines: TStringList;
  I, SerialState: Integer;
  Serial: AnsiString;
begin
  Serial:='';
  FileName:=ExtractFilePath(ParamStr(0))+'serial.key';
  if FileExists(FileName) then
   begin
     Lines:=TStringList.Create;
     Lines.LoadFromFile(FileName);
     for I:=0 to Lines.Count-1 do
      Serial:=Serial+AnsiString(Lines[I]);
     Lines.Free;
   end;
  if (Serial = '') then
   begin
     Writeln('ERROR: Serial number not foud');
     exit;
   end;
  SerialState := VMProtectSetSerialNumber(PAnsiChar(Serial));
  if (SerialState <> SERIAL_STATE_SUCCESS) then
   begin
     Writeln('ERROR: VMProtectSetSerialNumber returns ' + IntToStr(SerialState));
     exit;
   end;
  Writeln('Hello world!');
end.
Admin
Site Admin
Posts: 2566
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: О привязке по HWID

Post by Admin »

А что конкретно не работает?
Artur
Posts: 2
Joined: Mon Apr 01, 2019 9:43 am

Re: О привязке по HWID

Post by Artur »

Все, разобрался. И если я правильно понял то прокомментируйте мой ответ, всем Ваши клиентам тоже будет полезно.

Получается (К примеру) в настройках программы я делал виртуализацию + мутацию + проверку подходит ли ключ к HWID в процедуре: procedure TForm1.FormCreate(Sender: TObject); То есть привязал саму функцию к ключу. Но исходя из справки VMProtect: Проверку привязки к ключу - нужно проверять до или в ином случаем защищенная программа будет выдавать, в независимости от того правильный ключ или нет, сообщение: This code requires valid serial number to run.Program will be terminated.

То есть, к примеру, сначала нужно сделать проверку:

// И тут в настройках (Ультра (Мутация + Виртуализация))

Code: Select all

procedure TForm1.FormCreate(Sender: TObject);
var
  FileName: String;
  Lines: TStringList;
  I, SerialState: Integer;
  Serial: AnsiString;
begin
  Serial:='';
  FileName:=ExtractFilePath(ParamStr(0))+'serial.key';
  if FileExists(FileName) then
   begin
     Lines:=TStringList.Create;
     Lines.LoadFromFile(FileName);
     for I:=0 to Lines.Count-1 do
      Serial:=Serial+AnsiString(Lines[I]);
     Lines.Free;
   end;
  if (Serial = '') then
   begin
     Writeln('ERROR: Serial number not foud');
     exit;
   end;
  SerialState := VMProtectSetSerialNumber(PAnsiChar(Serial));
  if (SerialState <> SERIAL_STATE_SUCCESS) then
   begin
     Writeln('ERROR: VMProtectSetSerialNumber returns ' + IntToStr(SerialState));
     exit;
   end;
  Writeln('Hello world!');
end;
// А дальше, к примеру, Настройка (Ультра (Мутация + Виртуализация)) + Привязать к серийному номеру:

Code: Select all

procedure TForm1.Button1Click(Sender: TObject);
begin
// Тогда, при запуске, программа будет проверять подходит ли ключ к HWID. И по нажатию на кнопку [b][u](Button1)[/u][/b], если верный запускаться а если нет выдавать сообщение  [b][u]This code requires valid serial number to run.Program will be terminated.[/u][/b] и закрываться. 
end;
При таком подходе у меня все сработало...
Admin
Site Admin
Posts: 2566
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: О привязке по HWID

Post by Admin »

Я не понимаю что нужно прокомментировать :)
Post Reply