第一步
  编写源程序。在程序中使用有关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 授权项目

VMP1.JPG 

VMP2.jpg 

VMP3.jpg 

第三步:
   VMProtect.exe加密程序时,选择授权信息第二步生成的.VMP

VMP4.jpg 

VMP5.jpg 

第四步:
  用VMProtect_LM.exe 创建合法用户、例子程序中所定义的授权文件 test.lic 

VMP6.jpg 

VMP7.jpg 

VMP8.jpg 

最后“复制注册码”,用记事本保存为 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前打勾的才锁定。 
posted on 2012-06-27 22:20  zeroengine  阅读(680)  评论(0编辑  收藏  举报