品牌
其他厂商性质
所在地
iBeesoft Data Recovery
面议DBackup
面议Nevron User Interface for .NET
面议NetAdvantage for .NET2
面议Nevron Diagram for .NET
面议Nevron .NET Vision 2009 v1
面议Nevron Chart for .NET 2009 v1
面议Nevron 3DChart for ActiveX
面议LEADTOOLS ePrint Professional
面议LEADTOOLS PDF OCR Module
面议LEADTOOLS Vector Imaging Pro SDK2
面议LEADTOOLS Imaging Pro SDK
面议新一代软件保护程序。被保护的代码部分在虚拟机上执行,这使得被保护的程序很难被分析与破解。反汇编程序与MAP文件的运用使您能快速选择需要保护从而避免破解的代码。
理论
VMProtect是一款全新的软件保护工具。与其它大部分的保护程序不同,VMProtect可修改程序的源代码。VMProtect可将被保护文件中的部分代码转化到在虚拟机(以下称作VM)上运行的程序(以下称作bytecode)中。您同样可把VM想象为具备命令系统的虚拟处理器,该命令系统与Intel 8086处理器所使用的*不同。例如,VM没有负责比较2个操作数的命令,也没有有条件与无条件的移转等。就象您现在看到的,必须开发一款特定的工具以分析与反编译bytecode,而且还相当地耗时。可是,我们知道没有无法破解的保护程序,这也是我们为什么会将保护级别达到破解费用与购买费用相当(或破解费用甚至超过购买费用)的程度。不管怎么样,请您记住VMProtect是一款能帮助您“隐藏”主要软件保护机制的工具。
为保护准备程序
首先,在Delphi中创建一个具有表格(Form1)、文本编辑字段(Edit1)以及一个按键(Button1)的简单工程:
pic 1.
在用户点击Button1后,程序将检查密码是否正确以及显示相应消息(正确或不正确):
procedure TForm1.Button1Click(Sender: TObject); begin if StrToIntDef(Edit1.Text, 0) mod 17=13 then MessageDlg('Correct password', mtInformation, [mbOK], 0) else MessageDlg('Incorrect password', mtError, [mbOK], 0); end; |
判断密码是否正确的算法非常简单—密码被转换为数字。然后,该数字除以17,如果余数为13的话,该密码正确。否则该密码错误。
在编译工程前,我们将在工程中启用生成MAP文件的选项:
pic 2.
我们需要为VMProtect准备MAP文件让它能够通过流程名称确定其地址。此后,我们会运行“Build Project1”然后获得已编译的工程以及MAP文件。
使用书签功能
当您只需要保护流程中的一部分(或某些部分)时,就可以理解使用书签的原因。您应使用汇编程序的插入功能以注明需要标注的部分:
- The start marker of the protected block:
asm db $EB,$10,'VMProtect begin',0 end; |
- The end marker of the protected block:
asm db $EB,$0E,'VMProtect end',0 end; |
当您使用VMProtect时,书签将会有它们自己*的名称如“VMProtectMarker”以及序列号。
水印
VMProtect为您提供了一个的功能,该功能可以将隐藏的文件所有者信息添加到被保护的文件中。您的每个用户都能拥有一个具有*字节排列的水印。在您将水印内置到被保护文件中以后,您就能确定文件的所有者以及可以采取相应的措施(例如,破解程序被非法分发时)。
使用VMProtect
使用"File"-"Open"菜单项加载工程。添加负责检查工程密码是否正确的程序:
pic 3.
VMProtect能根据所选的编译类型以不同的方式处理被保护的代码。让我们来详细了解每个不同的编译类型:
在您将所有必要的程序添加到工程中后,切换到“选项”:
在完所有必要的选项后,开始编译工程。在编译完成后,在工程文件(例如,TEST.EXE)旁边会创建一个新文件(例如,TEST.VMP.EXE)。的程序将在虚拟机的该文件中运行。