没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:李显亮|2019-09-17 11:28:02.113|阅读 844 次
概述:建筑保护总是经历两个主要步骤:开发和发布。至于许可,首先创建一个应用程序,将保护集成到其中,然后添加检查和功能限制。只有经过全面测试,才能将产品提供给用户并开始第二阶段。本教程将讲解如何将许可系统集成到应用程序的两个阶段——测试阶段和实操阶段。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
相关链接:
VMProtect是一种很可靠的工具,可以保护应用程序代码免受分析和破解,但只有在应用程序内保护机制正确构建且没有可能破坏整个保护的严重错误的情况下,才能实现最好的效果。
建筑保护总是经历两个主要步骤:开发和发布。至于许可,首先创建一个应用程序,将保护集成到其中,然后添加检查和功能限制。只有经过全面测试,才能将产品提供给用户并开始第二阶段。测试受保护的应用程序是一个复杂的过程,因为需要确保所有检查和条件跳转都能正常运行。许可系统提供“开发者模式”(AKA“测试模式”),在此工作模式下,不对应用程序应用任何保护,并且在配置文件中调整系统对提供的序列号的反应。当应用程序没有错误并且它正确地与许可系统一起使用时,VMProtect将“测试”许可模块替换为执行实际序列号检查的真实模块。
测试模式
在测试模式中,许可系统(它返回的状态和数据)对提供的序列号的所有反应都在配置文件中描述。该文件名为VMPLicense.ini,应位于应用程序的工作文件夹中。在下面提供的10个步骤中,将从创建最简单的应用程序到在测试模式下全面使用许可系统,具有硬件锁定和限制免费升级的时间。
▲步骤一:创建受保护的应用程序
第一步是创建一个应用程序。这将是一个简单的应用程序,没有任何用户界面,没有严重的功能。我们的目标是将序列号传递给许可系统并获得答案。
#include <windows.h> #include <stdio.h> #include#includebool is_registered(const char * serial) { return serial && serial [0] =='X'; } int main(int argc,char ** argv) { char * serial =“Xserialnumber”; //为简单起见,我们直接在代码中设置序列号 if(!is_registered(serial)) { printf(“请注册!\ n”); 返回0; } printf(“我们已注册。\ n”); 返回0; }
该程序使用一种非常简单的方法来检查序列号。该is_registered()函数比较有“X”的序列号的第一个符号,并认为该号码是正确的,如果这两者匹配。对于错误的序列号,将显示注册消息,而如果用户输入正确的密钥,则显示“我们已注册。”
▲步骤二:添加许可证检查代码
如果您之前没有这样做,是时候将VMProtect SDK包含在您的项目中。SDK是三个文件:头文件(VMProtectSDK.h),库文件(VMProtectSDK32.lib)和带实现的dll文件(VMProtectSDK32.dll)。有各自的库实现和64位系统的dll文件。将dll文件,头文件和库文件放到我们的应用程序的工作文件夹中,源文件位于该文件夹中,并将头文件包含在主文件中:
#include <windows.h> #include <stdio.h> #include“VMProtectSDK.h”
将序列号发送到许可系统
现在,在带有序列号的行下方,我们添加了对许可系统的SDK功能的调用:
char * serial =“Xserialnumber”; //为简单起见,我们直接在代码中设置序列号 int res = VMProtectSetSerialNumber(serial); printf(“res = 0x%08X \ n”,res);
如果在执行此操作后,程序将停止并显示缺少所需的dll文件的错误,请确保将相应的DLL文件放入应用程序的工作文件夹中。如果执行成功,您应该看到以下消息:
res = 0x00000002
2对应于API中描述的SERIAL_STATE_FLAG_INVALID标志。这意味着许可系统认为我们的密钥不正确,这是非常正确的,因为我们没有向系统“解释”哪些密钥是正确的,哪些不是。
指定“正确”的序列号
在测试模式下,许可系统会分析VMProtectLicense.ini文件,并根据指定的设置对函数调用做出反应。将在后面的步骤中彻底检查该文件,现在只需创建这样一个文件并在其中添加以下文本:
[TestLicense] AcceptedSerialNumber = Xserialnumber
现在,再次运行我们的程序。如果仍然收到“2”错误代码,请确保ini文件位于应用程序的工作文件夹中。这次我们应该收到“0”。这是许可系统接受并批准序列号的标志。现在我们可以从代码中删除is_registered()函数 - 许可系统现在负责检查序列号
#include <windows.h> #include <stdio.h> #include#include#include“VMProtectSDK.h” int main(int argc,char ** argv) { char * serial =“Xserialnumber”; //为简单起见,我们直接在代码中设置序列号 int res = VMProtectSetSerialNumber(serial); printf(“res = 0x%08X \ n”,res); 如果(res) { printf(“请注册!\ n”); 返回0; } printf(“我们已注册。\ n”); 返回0; }
-- 未完待续 --
VMProtect正版授权专享在线订购特享超低价格!更有免费现金抵扣券领取,还不赶紧加入你的订购清单?>>更多详情可点击咨询购买
扫描关注“慧聚IT”微信公众号,及时获取最新动态及最新资讯
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@wqylolg.cn
借助Aspose.Slides for Java,开发人员可以轻松编辑 PowerPoint 幻灯片(包括表格),以增强演示文稿的效果。
VMProtect 是保护程序代码免遭分析与破解的利器,但很多开发者在实现注册机制时犯了关键性错误,使得再强大的加壳工具也难以阻挡黑客破解。本文将从注册逻辑设计、密钥验证方式、注册状态存储等多个角度,系统拆解常见误区,并结合 VMProtect 的虚拟化和加密策略,提供构建高强度注册保护的实战方案。
在本文中,我们将探讨如何在FastReport .NET中配置与 Apache Ignite 的连接。您将学习通过代码和报表设计器连接插件的必要步骤。
有时,您可能需要将这些文档转换为其他应用程序特定的格式。例如,有时您需要将 Microsoft Word 文件转换为FastReport .NET格式,该格式用于在使用 FastReport 时创建报表模板。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@wqylolg.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢