第一步
编写源程序。在程序中使用有关license的SDK。下面的例子中定义license文件是 test.lic
demo.for.unpackcn.rar (35.95 KB, 下载次数: 66)
例子主要代码如下:
procedure TForm1.FormCreate(Sender: TObject);
var
i : Longword ;
F : textfile ;
pbuffer: array[0..$1000] of char;
code : Longword ;
licData : TVMProtectSerialNumberdata ;
begin
if fileexists('test.lic') then
begin
fillchar(licData,sizeof(licdata),0);
assignfile(F,'test.lic');
reset(f);
for i := 0 to $1000 do
if not eof(f) then read( f,pbuffer[ i ] ) else break;
closefile(f);
VMProtectSetSerialNumber(pbuffer) ;
code := VMProtectGetSerialNumberState ;
edit1.Text := Format(' Ret Code : %x', [code] ) ;
//////////////////////////////////////////////////////////////////////////////
//////////////检测License后,可在这里增加控制代码 ///////////////////////////
if code <> 0 then
if MessageDlg('检测License有问题,是否继续执行 ? 。', mtInformation, [mbYes, mbNo], 0) = mrNo then halt(2);
//////////////////////////////////////////////////////////////////////////////
i:= sizeof(licdata);
if VMProtectGetSerialNumberData( @licData , i ) then
begin
memo1.Lines[1] := memo1.Lines[1] + format('---- %x',[licData.nState]);
memo1.Lines[2] := memo1.Lines[2] + '----'+ licdata.wUserName ;
memo1.Lines[3] := memo1.Lines[3] + '----'+ licdata.wEMail ;
memo1.Lines[4] := memo1.Lines[4] + format('---- %d',[licData.dtExpire.wYear ])
+ format('-%d',[licData.dtExpire.bMonth ])+format('-%d',[licData.dtExpire.bDay ]);
memo1.Lines[5] := memo1.Lines[5] + format('--- %d',[licData.dtMaxbuild.wYear ])
+ format('-%d',[licData.dtMaxbuild.bMonth ])+format('-%d',[licData.dtMaxbuild.bDay ]);
memo1.Lines[6] := memo1.Lines[6] + format('---- %d',[licData.bRunningTime]);
memo1.Lines[7] := memo1.Lines[7] + format('---- %x',[licData.nUserDataLength]);
memo1.Lines[8] := memo1.Lines[8] + format('---- %x',[licData.bUserData[0]])+ format(' %x',[licData.bUserData[1]])
+ format(' %x',[licData.bUserData[2]])+ format(' %x',[licData.bUserData[3]]);
end;
end else
begin
MessageDlg(VMProtectDecryptStringA('Test.lic file not exist.'), mtError, [mbOK], 0);
halt(2);
end;
end;
第二步:
用VMProtect_LM.exe新建一个产品,保存.VMP 授权项目
第三步:
VMProtect.exe加密程序时,选择授权信息第二步生成的.VMP
第四步:
用VMProtect_LM.exe 创建合法用户、例子程序中所定义的授权文件 test.lic
最后“复制注册码”,用记事本保存为 Test.lic ,放在project.exe目录下即可。
备注:
1、有关license的 SDK 不多说了,看帮助吧。
2、要锁定机器,只要在新建授权时,选择“硬件码”,并输入用户发来的硬件ID即可。
TestVMP.rar (628.54 KB, 下载次数: 70)
3、分发。先导出密钥匙对,替换keygen中相应内容编译一下即可。
4、与WL的不同之处(NB老大指正):WL在主程序中就可以定义了是否锁定机器,license中只要设有机器码即锁定。VMP只能是在license中定义的,在硬件ID前打勾的才锁定。
编写源程序。在程序中使用有关license的SDK。下面的例子中定义license文件是 test.lic
![](http://www.unpack.cn/static/image/filetype/rar.gif)
例子主要代码如下:
procedure TForm1.FormCreate(Sender: TObject);
var
i : Longword ;
F : textfile ;
pbuffer: array[0..$1000] of char;
code : Longword ;
licData : TVMProtectSerialNumberdata ;
begin
if fileexists('test.lic') then
begin
fillchar(licData,sizeof(licdata),0);
assignfile(F,'test.lic');
reset(f);
for i := 0 to $1000 do
if not eof(f) then read( f,pbuffer[ i ] ) else break;
closefile(f);
VMProtectSetSerialNumber(pbuffer) ;
code := VMProtectGetSerialNumberState ;
edit1.Text := Format(' Ret Code : %x', [code] ) ;
//////////////////////////////////////////////////////////////////////////////
//////////////检测License后,可在这里增加控制代码 ///////////////////////////
if code <> 0 then
if MessageDlg('检测License有问题,是否继续执行 ? 。', mtInformation, [mbYes, mbNo], 0) = mrNo then halt(2);
//////////////////////////////////////////////////////////////////////////////
i:= sizeof(licdata);
if VMProtectGetSerialNumberData( @licData , i ) then
begin
memo1.Lines[1] := memo1.Lines[1] + format('---- %x',[licData.nState]);
memo1.Lines[2] := memo1.Lines[2] + '----'+ licdata.wUserName ;
memo1.Lines[3] := memo1.Lines[3] + '----'+ licdata.wEMail ;
memo1.Lines[4] := memo1.Lines[4] + format('---- %d',[licData.dtExpire.wYear ])
+ format('-%d',[licData.dtExpire.bMonth ])+format('-%d',[licData.dtExpire.bDay ]);
memo1.Lines[5] := memo1.Lines[5] + format('--- %d',[licData.dtMaxbuild.wYear ])
+ format('-%d',[licData.dtMaxbuild.bMonth ])+format('-%d',[licData.dtMaxbuild.bDay ]);
memo1.Lines[6] := memo1.Lines[6] + format('---- %d',[licData.bRunningTime]);
memo1.Lines[7] := memo1.Lines[7] + format('---- %x',[licData.nUserDataLength]);
memo1.Lines[8] := memo1.Lines[8] + format('---- %x',[licData.bUserData[0]])+ format(' %x',[licData.bUserData[1]])
+ format(' %x',[licData.bUserData[2]])+ format(' %x',[licData.bUserData[3]]);
end;
end else
begin
MessageDlg(VMProtectDecryptStringA('Test.lic file not exist.'), mtError, [mbOK], 0);
halt(2);
end;
end;
第二步:
用VMProtect_LM.exe新建一个产品,保存.VMP 授权项目
![VMP1.JPG VMP1.JPG](http://www.unpack.cn/data/attachment/forum/month_1005/10051321445cced13accb05b4f.jpg.thumb.jpg)
![VMP2.jpg VMP2.jpg](http://www.unpack.cn/data/attachment/forum/month_1005/10051321411908998e872bb960.jpg.thumb.jpg)
![VMP3.jpg VMP3.jpg](http://www.unpack.cn/data/attachment/forum/month_1005/10051321417350ee2b2dbca730.jpg.thumb.jpg)
第三步:
VMProtect.exe加密程序时,选择授权信息第二步生成的.VMP
![VMP4.jpg VMP4.jpg](http://www.unpack.cn/data/attachment/forum/month_1005/10051321556ca9e633656801a4.jpg.thumb.jpg)
![VMP5.jpg VMP5.jpg](http://www.unpack.cn/data/attachment/forum/month_1005/10051321558d564b318151df28.jpg.thumb.jpg)
第四步:
用VMProtect_LM.exe 创建合法用户、例子程序中所定义的授权文件 test.lic
![VMP6.jpg VMP6.jpg](http://www.unpack.cn/data/attachment/forum/month_1005/1005132220c5a2b224bdf16c74.jpg.thumb.jpg)
![VMP7.jpg VMP7.jpg](http://www.unpack.cn/data/attachment/forum/month_1005/1005132220041ede5dab135104.jpg.thumb.jpg)
![VMP8.jpg VMP8.jpg](http://www.unpack.cn/data/attachment/forum/month_1005/10051322205e2796f4436f2240.jpg.thumb.jpg)
最后“复制注册码”,用记事本保存为 Test.lic ,放在project.exe目录下即可。
备注:
1、有关license的 SDK 不多说了,看帮助吧。
2、要锁定机器,只要在新建授权时,选择“硬件码”,并输入用户发来的硬件ID即可。
![](http://www.unpack.cn/static/image/filetype/rar.gif)
3、分发。先导出密钥匙对,替换keygen中相应内容编译一下即可。
4、与WL的不同之处(NB老大指正):WL在主程序中就可以定义了是否锁定机器,license中只要设有机器码即锁定。VMP只能是在license中定义的,在硬件ID前打勾的才锁定。