VMProtect是新一代软件保护实用程序。VMProtect支持德尔菲、Borland C Builder、Visual C/C++、Visual Basic(本机)、Virtual Pascal和XCode编译器。
同时,VMProtect有一个内置的反汇编程序,可以与Windows和Mac OS X可执行文件一起使用,并且还可以链接编译器创建的MAP文件,以快速选择要保护的代码片段。
为了轻松实现应用程序保护任务的自动化,VMProtect实现了内置脚本语言。VMProtect完全支持Windows系列的32/64位操作系统(从Windows 2000开始)和Mac OSX(从版本10.6开始)。重要的是,无论目标平台如何,VMProtect都支持所有范围的可执行文件,即Windows版本可以处理Mac OS X版本的文件,反之亦然。有其他问题请咨询加密解密技术QQ群:766135708
VMProtect最新版下载(qun:766135708)https://www.evget.com/product/1859/download
VMProtect 是保护应用程序代码免遭分析和破解的可靠工具,但只有在正确构建应用程序内保护机制并且没有可能破坏整个保护的典型错误的情况下才能最有效地使用。
许可制度
“许可制度”包含以下小节:
许可系统功能
许可系统如何运作
管理许可证
如何将系统集成到您的应用程序的示例
自动序列号生成
集成到应用程序
在下面描述的几个步骤中,我们将创建一个查询许可系统的测试应用程序:向其提供序列号,接收序列号的状态及其内容。第一阶段,我们在测试模式下使用许可系统;第二阶段我们使用它,因为它会在实际实践中使用。
许可制度的工作模式
建筑保护总是经历两个主要步骤:开发和发布。至于许可,首先您创建一个应用程序,将保护集成到其中,然后添加检查和功能限制。只有经过全面测试,您才能将产品提供给用户并开始第二阶段。受保护应用程序的测试是一个复杂的过程,因为您需要确保所有检查和条件跳转都正确运行。为所有可能的测试用例制作“真实的”序列号是不方便的。这就是许可系统也提供“开发者模式”(又名“测试模式”)的原因。在这种工作模式下,不对应用程序进行保护,系统对提供的序列号的反应在配置文件中进行调整。当应用程序没有错误并且可以正确地与许可系统一起工作时,VMProtect 将“测试”许可模块替换为执行真实序列号检查的真实许可模块。这是在应用程序受到保护时完成的,因此您不能错误地避免这一步。
第一阶段:测试模式
在测试模式下,许可系统(状态和它返回的数据)对提供的序列号的所有反应都在配置文件中描述。该文件名为 VMPLicense.ini,应位于应用程序的工作文件夹中。在下面提供的 10 个步骤中,我们将从创建最简单的应用程序到在具有硬件锁定和限制免费升级期限的测试模式下使用许可系统的全功能。
- 步骤 1.1:创建受保护的应用程序
- 步骤 1.2:添加许可证检查代码
- 步骤 1.3:检索序列号状态标志
- 步骤 1.4:检索用户的姓名和电子邮件
- 步骤 1.5:检查序列号的到期日期
- 步骤1.6:限制程序的运行时间
- 步骤 1.7:限制免费升级期限
- 步骤 1.8:黑名单中的序列号
- 步骤 1.9:硬件锁
- 步骤 1.10:用户数据
第二阶段:实模式
在实模式下,VMProtect 许可系统为受保护的应用程序放置了一个特殊的许可模块。该模块执行与 SDK 中的测试模块相同的功能,但使用序列号的内容而不是配置 ini 文件。接下来的五个步骤说明了使用基于 VMProtect 和许可系统的全功能保护来保护简单应用程序的过程。
- 步骤 2.1:创建新的受保护应用程序
- 步骤 2.2:创建 VMProtect 保护项目
- 步骤 2.3:受保护产品的首次启动
- 步骤 2.4:测试结果
- 步骤 2.5:将代码锁定为序列号
附加信息
所有位标志、结构格式和函数调用参数的值都可以在该帮助文件的许可系统 API部分找到。使用此部分作为参考,而上面提供的步骤有助于轻松实现典型的即用型保护。
序列号生成器
他们有什么用?
除了 VMProtect,其他软件也可以生成序列号。这是自动发送序列号所必需的。客户购买产品,电子商务代理向供应商网站发送 HTTP 查询,生成器在服务器上运行并根据客户数据生成序列号。序列号被发送给客户和供应商。然后,供应商使用导入许可证对话框手动将序列号添加到 VMProtect。
怎么运行的
VMProtect 的许可系统基于非对称算法,这就是为什么需要秘密产品密钥来生成序列号的原因。您可以在项目属性窗口中导出此密钥,并以任何合适的方式将其传递给生成器。
电子商务代理使用 HTTP 查询调用生成器。可以直接调用 PHP 生成器,基于 DLL 的生成器 - 间接调用,但原理是相同的:
- 从电子商务代理接收用户数据
- 添加供应商指定的所有必需信息
- 生成序列号
- 使用其中一种算法对其进行加密
- 将结果发送给电商代理
有现成的发电机吗?
许可系统带有三个随时可用的序列号生成器作为 DLL,用于 .Net 平台和PHP。
我可以制作自己的发电机吗?
是的你可以。序列号的格式在这里,序列号的加密算法在这里描述。
安全吗?
一般来说,是的,这是安全的。但是,您应该遵循以下建议:
- 使用 HTTPS——如果您的电子商务提供商可以发送 HTTPS 查询,并且您的网络托管提供商可以回答此类请求——您应该更喜欢这种变体而不是典型的 HTTP,因为在这种情况下,所有数据都以加密形式传输,生成的序列无法截取号码。
- “隐藏”你的发电机——确保没有人可以偶尔打开发电机。www.site.com/keygen.php 地址是个坏主意。虽然 www.site.com/abc123.php 要好得多。确保您没有放置任何指向密钥生成器的外部链接,它没有列在网站目录中,也没有将它放入任何服务文件(如 robot.txt)中。对发电机的位置了解得越少越好。或者,您甚至可以将生成器放在另一个网站上。
- 确保调用生成器的是电子商务代理——处理来自代理的查询的程序应该检查调用者的 IP 地址。电子商务提供商通常会发布用于查询序列号生成器的 IP 范围。在您的代理处找到该列表并在程序中添加支票。如果发送查询的 IP 地址超出指定的 IP 范围,则不要生成可理解的错误消息。要么不返回任何内容,要么生成一个简单的 404。不要提供任何有关查询失败原因的线索。
- 检查输入参数——电子商务代理控制面板中的产品设置通常允许您指定代理为接收许可证而应进行的查询字符串。例如,您想要接收用户名、电子邮件地址、购买日期和订单 ID。因此,请确保所有这些参数都已传递并且所有参数都具有正确的格式。不要对错误的查询做出任何响应。每当对生成器进行错误查询时,向您自己的电子邮件发送消息。这应该有助于调查问题。
- 添加“密码”指定电子商务代理发送的查询中的附加参数,即密码。它应该有一个不明显的名称和值。从接收方检查此参数。如果值错误或未指定参数 – 不生成序列号。