昆山建设监察网站,西安汇友网站建设,一起做业英语网站,富阳有没有做网站的VMProtect是新一代软件保护实用程序。VMProtect支持德尔菲、Borland C Builder、Visual C/C、Visual Basic#xff08;本机#xff09;、Virtual Pascal和XCode编译器。
同时#xff0c;VMProtect有一个内置的反汇编程序#xff0c;可以与Windows和Mac OS X可执行文件一起…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版本的文件反之亦然。
VMProtect是保护应用程序代码免遭分析和破解的可靠工具但只有在正确构建应用程序内保护机制并且没有可能破坏整个保护的典型错误的情况下才能最有效地使用。
序列号生成器
他们有什么用
除了 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。因此请确保所有这些参数都已传递并且所有参数都具有正确的格式。不要对错误的查询做出任何响应。每当对生成器进行错误查询时向您自己的电子邮件发送消息。这应该有助于调查问题。添加“密码”指定电子商务代理发送的查询中的附加参数即密码。它应该有一个不明显的名称和值。从接收方检查此参数。如果值错误或未指定参数 – 不生成序列号。
序号生成器
Windows版本Net版本UNIX 版本序列号格式序列号加密算法
描述
Windows 密钥生成器是用于 x86 和 x64 平台的 DLL 文件、一个 C 语言头文件和一个 MSVC 兼容的库文件。因此库既可以静态链接也可以动态加载。
生成器的所有文件都位于Keygen\DLL文件夹中。生成序列号的测试应用程序也在那里。
生成器 API
生成器仅导出两个函数第一个函数生成一个序列号而第二个函数释放第一个函数分配的内存。让我们从第一个也是主要的开始
VMProtectErrors __stdcall VMProtectGenerateSerialNumber (
VMProtectProductInfo * pProductInfo
VMProtectSerialNumberInfo * pSerialInfo
char ** pSerialNumber
);
第一个参数是指向VMProtectProductInfo结构的指针其内容已上传到 VMProtect请参阅导出产品参数。该结构包含产品私钥、使用的算法和产品的标识符。有关填充此结构的更多详细信息如下。
第二个参数是指向VMProtectSerialNumberInfo结构的指针其内容被移动到生成的序列号中。该结构包含序列号的所有字段和定义应将哪些字段写入序列号的位掩码。 struct VMProtectSerialNumberInfo
{INT flags;wchar_t * pUserName;wchar_t * pEMail;DWORD dwExpDate;DWORD dwMaxBuildDate;BYTE nRunningTimeLimit;char * pHardwareID;size_t nUserDataLength;BYTE * pUserData;
}; flags字段包VMProtectSerialNumberFlags中的位标志该集合在结构之前进行了描述
HAS_USER_NAME – 将pUserName变量中的用户名放入序列号中。HAS_EMAIL – 将pEMail变量中的电子邮件放入序列号中。HAS_EXP_DATE – 序列号将在dwExpDate变量中指定的日期之后过期。HAS_MAX_BUILD_DATE – 序列号仅适用于在dwMaxBuildDate变量中指定的日期之前构建的产品版本 。HAS_TIME_LIMIT – 程序在nRunningTimeLimit变量指定的时间到期后停止工作时间以分钟为单位指定不应超过 255。HAS_HARDWARE_ID – 该程序仅适用于具pHardwar变量中指定的 ID 的硬件。HAS_USER_DATA – 将nUserDataLength长度的自定义用户数据放在pUserData的地址到序列号。
第三个参数是指向指针的指针。生成的序列号的地址写在那里。生成序列号后应该复制它地址必须传递给生成器的第二个 API 函数该函数将释放序列号占用的内存。
void __stdcall VMProtectFreeSerialNumberMemory ( char * pSerialNumber);
VMProtectGenerateSerialNumber函数返回一个VMProtectErrors值如果成功生成序列号则该值包含 0或者包含一个错误代码。可能的错误代码是
ALL_RIGHT – 没有错误序列号已生成。UNSUPPORTED_ALGORITHM – 在函数的第一个参数中传递了不正确的密钥加密算法。UNSUPPORTED_NUMBER_OF_BITS – 在函数的第一个参数中传递了不正确的位数。USER_NAME_IS_TOO_LONG – UTF-8 编码的用户名长度超过 255 字节。EMAIL_IS_TOO_LONG – UTF-8 编码的用户电子邮件的长度超过 255 字节。USER_DATA_IS_TOO_LONG – 用户数据的长度超过 255 字节。HWID_HAS_BAD_SIZE – 硬件标识符的大小不正确。PRODUCT_CODE_HAS_BAD_SIZE – 在函数的第一个参数中传递的产品标识符大小不正确。SERIAL_NUMBER_TOO_LONG – 序列号太长无法满足算法中指定的位数。BAD_PRODUCT_INFO – 函数的第一个参数不正确或为 NULL。BAD_SERIAL_NUMBER_INFO – 函数的第二个参数不正确或为 NULL。BAD_SERIAL_NUMBER_CONTAINER – 该函数的第三个参数未指向要写入序列号地址的内存。NOT_EMPTY_SERIAL_NUMBER_CONTAINER – 函数的第三个参数不指向空内存单元该单元必须为 NULL。BAD_PRIVATE_EXPONENT – 函数的第一个参数包含不正确的私有指数值。BAD_MODULUS – 函数的第一个参数包含不正确的模数值。
错误可以分为两类由不正确的参数或第一个参数的不正确值引起的错误以及其他所有错误。第一类错误很少见它们表示结构配置不正确。您应该重新上传产品信息并检查结构是否填写正确。可以在下面找到正确填充结构的示例。
第二类错误是由于尝试向键中放入超过其大小所能容纳的更多数据而引起的。在这种情况下我们建议向电子商务提供商发送一条消息其中包含“密钥将在 24 小时内发送”之类的文本而不是实际的序列号并将所有必需的信息发送到您自己的电子邮箱。在这种情况下密钥是在 VMProtect 中手动生成的一些数据被截断以适应最大密钥大小的所有关键信息。
使用示例
下面是调用上述函数并生成序列号的代码示例。注意最开始的代码块。在您将其替换为从 VMProtect 为您的产品导出的示例之前该示例将不起作用 //
// !!! this block should be generated by VMProtect !!! ///
//
VMProtectAlgorithms g_Algorithm ALGORITHM_RSA;
size_t g_nBits 0;
byte g_vModulus[1];
byte g_vPrivate[1];
byte g_vProductCode[1];
//
//
int _tmain(int argc, _TCHAR* argv[])
{
VMProtectProductInfo pi;
pi.algorithm g_Algorithm;
pi.nBits g_nBits;
pi.nModulusSize sizeof(g_vModulus);
pi.pModulus g_vModulus;
pi.nPrivateSize sizeof(g_vPrivate);
pi.pPrivate g_vPrivate;
pi.nProductCodeSize sizeof(g_vProductCode);
pi.pProductCode g_vProductCode;VMProtectSerialNumberInfo si {0};
si.flags HAS_USER_NAME | HAS_EMAIL;
si.pUserName LJohn Doe;
si.pEMail Ljohndoe.com;
char * pBuf NULL;
VMProtectErrors res VMProtectGenerateSerialNumber(pi, si, pBuf);
if (res ALL_RIGHT)
{
printf(Serial number:\n%s\n, pBuf);
VMProtectFreeSerialNumberMemory(pBuf);
}
else
{
printf(Error: %d\n, res);
}
return 0; 这是来自Keygen\DLL\Example的 Microsoft Visual Studio 示例项目。下面是代码中最有趣的部分以及我们的评论。
main函数的第一行使用从 VMProtect 导出的数据填充VMProtectProductInfo结构。此代码是典型的不应更改以避免错误。然后我们创建VMProtectSerialNumberInfo结构并将用户名和电子邮件的位组合插入标志字段。在下一行中我们将用户名和密码放入结构中的相应字段。请注意值在 UNICODE 编码中被接受。密钥生成器会将它们转换为 UTF-8。
然后我们初始化一个指针变量用于存储生成的密钥的地址并调用VMProtectGenerateSerialNumber然后分析返回码。如果没有错误生成的密钥将输出到控制台并调用免费序列号记忆功能。
VMprotectSerialNumberInfo 结构的其余字段
结构的某些字段可能需要一些额外的解释。例如dwExpDate和dwMaxBuildDate字段包含特定格式的日期0xYYYYMMDD即年存储在高位字中月和日分别存储在低位字的高低字节中。为了产生这样的数字使用了以下宏MAKEDATE(y, m, d)。您可以这样称呼它MAKEDATE(2010, 05, 12)。
pHardwareID字段应包含指向许可 SDK的VMProtectGetCurrentHWID方法返回的字符串的指针。
.Net版本
描述 密钥生成器的 .Net 版本是包含生成序列号所需的所有内容的构建。源代码在Keygen\Net中作为两个项目KeyGen密钥生成器本身和 Usage密钥生成器的使用示例。
密钥生成器在源代码中提供以便在给定版本的 .Net Framework 下快速构建但是我们强烈建议不要对代码应用任何更改。在 VMProtect 的未来版本中可能会向生成器添加一些新的可能性这可能会导致重复修改代码。此外这可能会导致非常难以定位的错误。如果您在生成器的原始代码中发现错误或想提出改进建议请联系支持团队。
使用发电机 以Usage项目中的代码为基础然后将指向 VMProtect.KeyGen.dll 构建的链接添加到您的项目中。之后您将能够在您的应用程序中生成序列号。为了正常运行生成器必须“知道”您为哪个产品生成序列号。为此在 VMProtect 中打开“Project | 导出密钥对”对话框并选择“KeyGen.Net 的参数”选项。下面的文本区域将包含文本信息您应该将其作为字符串常量复制并粘贴到您的应用程序中。
下面是调用生成器的示例代码 try
{
string data ; // put the exported data here
Generator g new Generator(data);
g.UserName John Doe;
g.EMail johndoe.com;
g.ExpirationDate DateTime.Now.AddMonths(1);
g.MaxBuildDate DateTime.Now.AddYears(1);
g.RunningTimeLimit 15;
g.HardwareID AQIDBAgHBgU;
g.UserData new byte[] { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
string serial g.Generate();
Console.WriteLine(Serial number:\n{0}\n, serial);
}
catch (Exception ex)
{
Console.WriteLine(Error: {0}, ex);
} 您从 VMProtect 复制的字符串应该放在作为参数传递给序列号类构造函数的数据变量中。如果在解析产品数据时出现任何问题构造函数将抛出包含问题描述的异常。如果构造函数成功完成其工作则生成器已准备好生成序列号。
序列号可以包含使用生成器属性指定的各种信息。上面的示例显示了如何填写序列号的所有字段。某些领域有限制。例如用户名和电子邮件不能接受超过 255 个字符的 UTF-8 编码字符串。如果提供的数据不正确属性会抛出包含问题描述的异常。
生成器设置完成后将调用Generate()方法。此方法生成一个序列号。在此步骤中将序列号的所有数据合并计算校验和并加密数据。如果数据量超过允许的长度该方法将抛出异常。
如果需要生成多个序列号可以连续多次使用生成器类而不需要从头开始创建。要清除生成器的任何给定属性只需为其分配一个空值即可
以上便是本篇文章的分享如果您还有其他问题请私信我~ 文章转载自: http://www.morning.thpns.cn.gov.cn.thpns.cn http://www.morning.pntzg.cn.gov.cn.pntzg.cn http://www.morning.hfrbt.cn.gov.cn.hfrbt.cn http://www.morning.ylph.cn.gov.cn.ylph.cn http://www.morning.wrkhf.cn.gov.cn.wrkhf.cn http://www.morning.mqwdh.cn.gov.cn.mqwdh.cn http://www.morning.djpzg.cn.gov.cn.djpzg.cn http://www.morning.mbmh.cn.gov.cn.mbmh.cn http://www.morning.krjyq.cn.gov.cn.krjyq.cn http://www.morning.rwhlf.cn.gov.cn.rwhlf.cn http://www.morning.nwtmy.cn.gov.cn.nwtmy.cn http://www.morning.qnxkm.cn.gov.cn.qnxkm.cn http://www.morning.txkrc.cn.gov.cn.txkrc.cn http://www.morning.jhwwr.cn.gov.cn.jhwwr.cn http://www.morning.ftmly.cn.gov.cn.ftmly.cn http://www.morning.jxtbr.cn.gov.cn.jxtbr.cn http://www.morning.mzpd.cn.gov.cn.mzpd.cn http://www.morning.rfwgg.cn.gov.cn.rfwgg.cn http://www.morning.kjcll.cn.gov.cn.kjcll.cn http://www.morning.zrkp.cn.gov.cn.zrkp.cn http://www.morning.fmqng.cn.gov.cn.fmqng.cn http://www.morning.bnwlh.cn.gov.cn.bnwlh.cn http://www.morning.zxhhy.cn.gov.cn.zxhhy.cn http://www.morning.hmnhp.cn.gov.cn.hmnhp.cn http://www.morning.ftsmg.com.gov.cn.ftsmg.com http://www.morning.fplwz.cn.gov.cn.fplwz.cn http://www.morning.yqpck.cn.gov.cn.yqpck.cn http://www.morning.rggky.cn.gov.cn.rggky.cn http://www.morning.srcth.cn.gov.cn.srcth.cn http://www.morning.rcntx.cn.gov.cn.rcntx.cn http://www.morning.yrwqz.cn.gov.cn.yrwqz.cn http://www.morning.fbnsx.cn.gov.cn.fbnsx.cn http://www.morning.znpyw.cn.gov.cn.znpyw.cn http://www.morning.plqqn.cn.gov.cn.plqqn.cn http://www.morning.hmbxd.cn.gov.cn.hmbxd.cn http://www.morning.xq3nk42mvv.cn.gov.cn.xq3nk42mvv.cn http://www.morning.gryzk.cn.gov.cn.gryzk.cn http://www.morning.rpljf.cn.gov.cn.rpljf.cn http://www.morning.pbzgj.cn.gov.cn.pbzgj.cn http://www.morning.fkffr.cn.gov.cn.fkffr.cn http://www.morning.nkllb.cn.gov.cn.nkllb.cn http://www.morning.frfnb.cn.gov.cn.frfnb.cn http://www.morning.yhglt.cn.gov.cn.yhglt.cn http://www.morning.shxrn.cn.gov.cn.shxrn.cn http://www.morning.mbmh.cn.gov.cn.mbmh.cn http://www.morning.tgtsg.cn.gov.cn.tgtsg.cn http://www.morning.zbnts.cn.gov.cn.zbnts.cn http://www.morning.pbsfq.cn.gov.cn.pbsfq.cn http://www.morning.2d1bl5.cn.gov.cn.2d1bl5.cn http://www.morning.pfggj.cn.gov.cn.pfggj.cn http://www.morning.jxjrm.cn.gov.cn.jxjrm.cn http://www.morning.c7625.cn.gov.cn.c7625.cn http://www.morning.txmkx.cn.gov.cn.txmkx.cn http://www.morning.ypcd.cn.gov.cn.ypcd.cn http://www.morning.ctfh.cn.gov.cn.ctfh.cn http://www.morning.ljngm.cn.gov.cn.ljngm.cn http://www.morning.pwgzh.cn.gov.cn.pwgzh.cn http://www.morning.gtdf.cn.gov.cn.gtdf.cn http://www.morning.rbzd.cn.gov.cn.rbzd.cn http://www.morning.qyllw.cn.gov.cn.qyllw.cn http://www.morning.ckfqt.cn.gov.cn.ckfqt.cn http://www.morning.plchy.cn.gov.cn.plchy.cn http://www.morning.txlxr.cn.gov.cn.txlxr.cn http://www.morning.dgxrz.cn.gov.cn.dgxrz.cn http://www.morning.c7512.cn.gov.cn.c7512.cn http://www.morning.xtqr.cn.gov.cn.xtqr.cn http://www.morning.yxwrr.cn.gov.cn.yxwrr.cn http://www.morning.pslzp.cn.gov.cn.pslzp.cn http://www.morning.ddrdt.cn.gov.cn.ddrdt.cn http://www.morning.ykrg.cn.gov.cn.ykrg.cn http://www.morning.lbpfl.cn.gov.cn.lbpfl.cn http://www.morning.oioini.com.gov.cn.oioini.com http://www.morning.sbncr.cn.gov.cn.sbncr.cn http://www.morning.kjyfq.cn.gov.cn.kjyfq.cn http://www.morning.bhpsz.cn.gov.cn.bhpsz.cn http://www.morning.pmlgr.cn.gov.cn.pmlgr.cn http://www.morning.yyngs.cn.gov.cn.yyngs.cn http://www.morning.jyyw.cn.gov.cn.jyyw.cn http://www.morning.csdgt.cn.gov.cn.csdgt.cn http://www.morning.jbctp.cn.gov.cn.jbctp.cn