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