jjjjjj8889 发表于 2022-2-8 11:52

VMP的5种保护方式示例程序,你能搞定几个?

本帖最后由 jjjjjj8889 于 2022-2-8 12:37 编辑

输入密码,点下面按钮,经过简单加密后判定,正确的话会在memo显示密码正确,错误不显示任何信息。
按钮就是如图的几种代码保护,非常简单,大家可以尝试每一种保护。代码也贴出来了,为lazarus编译,所以显得文件比较大。
序列号文件可按自己需求改名或删除。

下载:https://m01.lanzouq.com/igPY3zqtkwh



unit vmptest;

{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, des, VMProtectSDK;

type

{ TForm1 }

TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button6: TButton;
    Button7: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
private

public

end;

var
Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }


procedure TForm1.Button6Click(Sender: TObject);
begin
VMProtectBeginVirtualizationLockByKey('Button6Click');//虚拟化并锁定序列号
if EncryStrHex(edit1.Text,'key')=EncryStrHex('123456','key') then memo1.Lines.Add('密码正确!'+FormatdateTime('hh:mm:ss', now));
VMProtectEnd;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
VMProtectBeginUltraLockByKey('Button7Click');         //变异+虚拟化并锁定序列号
if EncryStrHex(edit1.Text,'key')=EncryStrHex('123456','key') then memo1.Lines.Add('密码正确!'+FormatdateTime('hh:mm:ss', now));
VMProtectEnd;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin                                                   //无保护
if EncryStrHex(edit1.Text,'key')=EncryStrHex('123456','key') then memo1.Lines.Add('密码正确!'+FormatdateTime('hh:mm:ss', now));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
VMProtectBeginMutation('Button2Click');                //代码变异
if EncryStrHex(edit1.Text,'key')=EncryStrHex('123456','key') then memo1.Lines.Add('密码正确!'+FormatdateTime('hh:mm:ss', now));
VMProtectEnd;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
VMProtectBeginVirtualization('Button3Click');          //代码虚拟化
if EncryStrHex(edit1.Text,'key')=EncryStrHex('123456','key') then memo1.Lines.Add('密码正确!'+FormatdateTime('hh:mm:ss', now));
VMProtectEnd;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
VMProtectBeginUltra('Button4Click');                  //代码变异+虚拟化
if EncryStrHex(edit1.Text,'key')=EncryStrHex('123456','key') then memo1.Lines.Add('密码正确!'+FormatdateTime('hh:mm:ss', now));
VMProtectEnd;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
load_xlh:Tstringlist;
begin
if FileExists('序列号.txt') then
begin
    load_xlh:=Tstringlist.Create;
    load_xlh.LoadFromFile(ExtractFilePath(Application.ExeName) + '序列号.txt');
    if VMProtectSetSerialNumber(PAnsiChar(AnsiString(load_xlh.Text)))=0 then //将序列号载入vmp系统
    begin
      memo1.Lines.Add('序列号成功载入vmp系统');
    end;
    load_xlh.Free;
end;
end;

end.


jjjjjj8889 发表于 2022-2-8 15:03

ynboyinkm 发表于 2022-2-8 14:26
这个必须收藏,我也在用vm壳!

我是新手,还不太会用,更摸到皮毛,希望能跟你多学习。
还有,我感觉vmp加壳后启动太慢了,好像比winlicense慢很多,不知道是不是错觉,我有点想换到winlicense

submariner 发表于 2022-2-9 00:02

请教楼主一个问题,我发现vm的授权系统的rsa算法的公钥很短,而且是一个不变的定值,似乎不管是1024位、2048还是4096位,公钥始终是EAAQAA==,这个是破解不完全造成的,还是说原本就是这么设计的?

xxhaishixx 发表于 2022-2-9 00:55

submariner 发表于 2022-2-9 00:02
请教楼主一个问题,我发现vm的授权系统的rsa算法的公钥很短,而且是一个不变的定值,似乎不管是1024位、204 ...

公私这个没有多少重要关系,主要是公用的。

wgz001 发表于 2022-2-9 10:38

submariner 发表于 2022-2-9 00:02
请教楼主一个问题,我发现vm的授权系统的rsa算法的公钥很短,而且是一个不变的定值,似乎不管是1024位、204 ...

EAAQAA==
看一下base64解密后的结果

jjjjjj8889 发表于 2022-2-9 10:44

wgz001 发表于 2022-2-9 10:38
EAAQAA==
看一下base64解密后的结果

哈哈哈哈,笑死

submariner 发表于 2022-2-9 15:13

wgz001 发表于 2022-2-9 10:38
EAAQAA==
看一下base64解密后的结果

不是准确的EAAQAA==,就是很短的意思;我查了一下,准确的数据是AAEAAQ==,解密后的HEX数据:00010001,十进制就是65537

snakenba580 发表于 2022-2-11 07:50

正在学习中,感觉好复杂呀,谢谢分享。

jjjjjj8889 发表于 2022-2-11 11:26

snakenba580 发表于 2022-2-11 07:50
正在学习中,感觉好复杂呀,谢谢分享。

你搞定了几个?
页: [1]
查看完整版本: VMP的5种保护方式示例程序,你能搞定几个?