Vmprotect.ULTIMATE 授权功能 使用教程

Eddy 发布于2010-7-17 10:34:16 分类: 加密解密 已浏览loading 网友评论2条 我要评论

From UPK. By davidhee

第一步
  编写源程序。在程序中使用有关license的SDK。下面的例子中定义license文件是 test.lic

例子主要代码如下:

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即可。

   3、分发。先导出密钥匙对,替换keygen中相应内容编译一下即可。

   4、与WL的不同之处(NB老大指正):WL在主程序中就可以定义了是否锁定机器,license中只要设有机器码即锁定。VMP只能是在license中定义的,在硬件ID前打勾的才锁定。

已经有(2)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/decryption/440.html     欢迎订阅Eddy Blog

关于 VMProtect  SDK  授权功能  使用教程  的相关文章

  1. 发表于2010-8-28 8:47:44

    很好,学习了

  2. 发表于2013-10-8 21:52:13

    请问如何我用VMProtectGetSerialNumberData获取注册码,一直返回2,是什么问题呢,我的qq是292397

    Eddy 于 2013-10-9 22:17:24 回复
    应该是VMProtectGetSerialNumberState返回2吧。。。返回2说明Serial number无效。VMProtectGetSerialNumberData返回值为BOOL型。

记住我的信息,下次不用再输入 欢迎给Eddy Blog留言