提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:胡涛|2023-06-28 10:12:57.993|阅读 75 次
概述:本文主要介绍加密软件VMProtect中的序列号格式,欢迎查阅~
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
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版本的文件,反之亦然。
序列号结构
序列号由块组成。每个区块从一个标识符字节开始,表示该区块的内容和可能的长度。最后一个区块有255个标识符,包含除最后一个区块外的序列号的校验。
根据块的类型,它可以有恒定的或可变的长度。在后一种情况下,长度在块标识符之后的字节中指定。每个区块的确切格式在下面描述。
区块格式
ID | Name | Size (byte) | Description | Example |
---|---|---|---|---|
0×01 | Version | 1 | 该块包含一个版本的序列号,1字节大小。该版本应是1。 | 01 01 |
0×02 | User name | 1 + N | 该块包含一个UTF-8编码的用户名。在用户名之前,有1个字节保存着用户名的长度。因此,一个用户名的总长度不能超过255字节。不需要尾部的0。 | 02 04 4A 5F 48 4E |
0×03 | 1 + N | 该块包含一个UTF-8编码的用户的电子邮件。在电子邮件之前,有1个字节用来表示长度。因此,一封电子邮件的总长度不能超过255字节。不需要尾部的0。 | 03 07 61 40 62 2E 63 6F 6D | |
0×04 | Hardware identifier | 1 + N | 该块包含由VMProtectGetCurrentHWID()函数返回的硬件标识符。该函数返回一个base-64的字符串。该字符串的解码版本被放到序列号中。数据块的长度应是4的倍数,数据块前有一个长度字节。最大的数据块长度是32字节。 | 04 08 E1 E2 E3 E4 A1 A2 A3 A4 |
0×05 | License expiration date | 4 | 该区块包含序列号过期日期 日期格式描述如下。 | 05 01 0A 07 DA |
0×06 | Maximum operation time | 1 | 该块包含1个字节,保存程序可以运行的时间(分钟)。因此,最大的时间可以是255分钟。 | 06 05 |
0×07 | Product code | 8 | 该块包含一个产品代码--由VMProtect创建的8个字节,与产品参数一起导出。这些数据是以base-64编码导出的,在放到序列号之前必须解码为一个字节数组。该数组的大小应正好是8个字节。 若缺失,受保护的程序将不能正常工作。 | 07 01 02 03 04 05 06 07 08 |
0×08 | User data | 1 + N | 该块最多包含255字节的自定义用户数据。许可证系统不分析这些数据,当调用VMProtectGetSerialNumberData()函数时,会返回这些数据。在数据块之前,有一个字节保存着用户数据的大小。 | 08 05 01 02 03 04 05 |
0×09 | Maximum build date | 4 | 该块包含应用程序的最大构建日期。其格式描述如下。 | 09 01 0A 07 DA |
0xFF | Checksum | 4 | 该区块包含序列号校验和。该区块位于最后一个区块之前,校验和是针对之前所有区块计算的。下面描述了校验和的计算机制。 | FF 01 02 03 04 |
日期存储格式
日期以双字的形式存储在序列号中 - 0xYYYYMMDD。高阶字包含年,低阶字包含日和月。字节遵循小尾数表示法--从低到高。如果有一个指向记录的第一个字节的指针,可以用下面的代码读取或写入日期:
byte *pDate = 0xNNNNNN; // date address
*(DWORD *)pDate = (2010 << 16) | (10 << 8) | 1; // October 1, 2010
DWORD dwExp = *(DWORD *)pDate;
校验和计算
序列号的校验和是使用SHA-1散列算法计算的。其结果是五个32位的字组成。第一个字既被用作序列号的校验和又是小端数(从低到高)。SHA-1散列的字符串表示法使用的是Big Endian - 数字从高字节到低字节,所以如果SHA-1散列是由字符串函数生成的(比如在PHP中),散列的前四个字节应颠倒过来。
其他信息
许可证系统会忽略那些编号不在上面的区块。在较新的版本中可能会增加新的区块。我们不建议使用非占用的标识符创建新的区块! 首先,这可能使密钥在较新版本的授权系统中失去功能。其次,受保护的程序无论如何也无法读取这些区块的值。要在密钥中存储额外的信息,请通过用户数据字段来代替。
序列号没有SALT,这是一种随机信息,旨在提供相同输入数据的密钥。这个任务是强加给加密算法的。例如,在向一个组织出售一系列密钥时,你可以在用户名字段中添加单独的索引("公司 "LLC,10个密钥中的1个),或者以任何适当的格式将这些信息插入到用户数据字段中。
以上便是关于几个秘钥生成器的分享,如果您有任何疑问或者想获取更多产品试用/授权/价格信息,可以咨询我们的了解~
欢迎体验更多加密解密相关软件或者加入我们技术交流群(766135708)
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
在处理电子表格时,尤其是在专业和数据导向型环境中,正确设置 Excel 单元格内的数字格式至关重要。本文将介绍如何使用 Spire.XLS for Java 设置 Excel 单元格的数字格式,帮助轻松创建精美且结构清晰的电子表格。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢