zoukankan      html  css  js  c++  java
  • vmp

    第一步
      编写源程序。在程序中使用有关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前打勾的才锁定。 
  • 相关阅读:
    键值表
    CRC校验方法
    extern 使用
    编码格式简介(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)
    学习积累
    二分查找写法
    生活技术常识
    JAVA实例
    JAVA_Sprint学习(一)
    手把手使用Git?
  • 原文地址:https://www.cnblogs.com/zerovirs/p/2566433.html
Copyright © 2011-2022 走看看