提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:李显亮|2019-09-17 11:28:02.113|阅读 842 次
概述:建筑保护总是经历两个主要步骤:开发和发布。至于许可,首先创建一个应用程序,将保护集成到其中,然后添加检查和功能限制。只有经过全面测试,才能将产品提供给用户并开始第二阶段。本教程将讲解如何将许可系统集成到应用程序的两个阶段——测试阶段和实操阶段。
# 慧都年终大促·界面/图表报表/文档/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@cahobeh.cn
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢