Как организовать привязку по 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.

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.
