• <menu id="w2i4a"></menu>
  • logo VMPsoft中文文檔

    文檔首頁(yè)>>VMPsoft中文文檔>>Windows序列號(hào)生成器

    Windows序列號(hào)生成器


    VMProtect 是新一代軟件盜版保護(hù)解決方案。VMProtect 是目前強(qiáng)大的反盜版解決方案之一,許多領(lǐng)先的軟件發(fā)行商都在使用它。VMProtect允許保護(hù)可執(zhí)行文件(EXE,SCR),動(dòng)態(tài)鏈接庫(kù)(DLL,OCX,BPL)和驅(qū)動(dòng)程序(SYS)。

    VMProtect最新版下載

    加密解密技術(shù)交流群(766135708)

    Windows 密鑰生成器是用于 x86 和 x64 平臺(tái)的 DLL 文件、一個(gè) C 語(yǔ)言頭文件和一個(gè) MSVC 兼容的庫(kù)文件。因此,庫(kù)既可以靜態(tài)鏈接也可以動(dòng)態(tài)加載。生成器的所有文件都位于Keygen\DLL文件夾中。生成序列號(hào)的測(cè)試應(yīng)用程序也在那里。

    生成器 API

    生成器僅導(dǎo)出兩個(gè)函數(shù):第一個(gè)函數(shù)生成一個(gè)序列號(hào),而第二個(gè)函數(shù)釋放第一個(gè)函數(shù)分配的內(nèi)存。讓我們從第一個(gè)開始:

    VMProtectErrors __stdcall VMProtectGenerateSerialNumber (
    VMProtectProductInfo * pProductInfo,
    VMProtectSerialNumberInfo * pSerialInfo,
    char ** pSerialNumber
    );
    第一個(gè)參數(shù)是指向VMProtect  ProductInfo結(jié)構(gòu)的指針,其內(nèi)容已上傳到 VMProtect(請(qǐng)參閱導(dǎo)出產(chǎn)品參數(shù))。該結(jié)構(gòu)包含產(chǎn)品使用的算法和產(chǎn)品的標(biāo)識(shí)符號(hào)。

    第二個(gè)參數(shù)是指向VMProtectSerialNumberInfo結(jié)構(gòu)的指針,其內(nèi)容被移動(dòng)到生成的序列號(hào)中。該結(jié)構(gòu)包含序列號(hào)的所有字段和定義應(yīng)將哪些字段寫入序列號(hào)的位掩碼。 

    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中的位標(biāo)志,該集合在結(jié)構(gòu)之前進(jìn)行了描述:
    • HAS_USER_NAME – 將pUserName變量中的用戶名放入序列號(hào)中。
    • HAS_EMAIL – 將pEMail變量中的電子郵件放入序列號(hào)中。
    • HAS_EXP_DATE – 序列號(hào)將在dwExpDate變量中指定的日期之后過(guò)期。
    • HAS_MAX_BUILD_DATE – 序列號(hào)僅適用于在dwMaxBuildDate變量中指定的日期之前構(gòu)建的產(chǎn)品版本 。
    • HAS_TIME_LIMIT – 程序在nRunningTimeLimit變量指定的時(shí)間到期后停止工作(時(shí)間以分鐘為單位指定,不應(yīng)超過(guò) 255)。
    • HAS_HARDWARE_ID – 該程序僅適用于具pHardwar變量中指定的 ID 的硬件。
    • HAS_USER_DATA – 將nUserDataLength長(zhǎng)度的自定義用戶數(shù)據(jù)放在pUserData的地址到序列號(hào)。

    第三個(gè)參數(shù)是指向指針的指針。生成的序列號(hào)的地址寫在那里。生成序列號(hào)后,應(yīng)該復(fù)制它,地址必須傳遞給生成器的第二個(gè) API 函數(shù),該函數(shù)將釋放序列號(hào)占用的內(nèi)存。

    void __stdcall VMProtectFreeSerialNumberMemory ( char * pSerialNumber);

    VMProtectGenerateSerialNumber函數(shù)返回一個(gè)VMProtectErrors值,如果成功生成序列號(hào),則該值包含 0,或者包含一個(gè)錯(cuò)誤代碼。可能的錯(cuò)誤代碼是:

    • ALL_RIGHT – 沒有錯(cuò)誤,序列號(hào)已生成。
    • UNSUPPORTED_ALGORITHM – 在函數(shù)的第一個(gè)參數(shù)中傳遞了不正確的密鑰加密算法。
    • UNSUPPORTED_NUMBER_OF_BITS – 在函數(shù)的第一個(gè)參數(shù)中傳遞了不正確的位數(shù)。
    • USER_NAME_IS_TOO_LONG – UTF-8 編碼的用戶名長(zhǎng)度超過(guò) 255 字節(jié)。
    • EMAIL_IS_TOO_LONG – UTF-8 編碼的用戶電子郵件的長(zhǎng)度超過(guò) 255 字節(jié)。
    • USER_DATA_IS_TOO_LONG – 用戶數(shù)據(jù)的長(zhǎng)度超過(guò) 255 字節(jié)。
    • HWID_HAS_BAD_SIZE – 硬件標(biāo)識(shí)符的大小不正確。
    • PRODUCT_CODE_HAS_BAD_SIZE – 在函數(shù)的第一個(gè)參數(shù)中傳遞的產(chǎn)品標(biāo)識(shí)符大小不正確。
    • SERIAL_NUMBER_TOO_LONG – 序列號(hào)太長(zhǎng),無(wú)法滿足算法中指定的位數(shù)。
    • BAD_PRODUCT_INFO – 函數(shù)的第一個(gè)參數(shù)不正確或?yàn)?NULL。
    • BAD_SERIAL_NUMBER_INFO – 函數(shù)的第二個(gè)參數(shù)不正確或?yàn)?NULL。
    • BAD_SERIAL_NUMBER_CONTAINER – 該函數(shù)的第三個(gè)參數(shù)未指向要寫入序列號(hào)地址的內(nèi)存。
    • NOT_EMPTY_SERIAL_NUMBER_CONTAINER – 函數(shù)的第三個(gè)參數(shù)不指向空內(nèi)存單元,該單元必須為 NULL。
    • BAD_PRIVATE_EXPONENT – 函數(shù)的第一個(gè)參數(shù)包含不正確的私有指數(shù)值。
    • BAD_MODULUS – 函數(shù)的第一個(gè)參數(shù)包含不正確的模數(shù)值。

    錯(cuò)誤可以分為兩類:由不正確的參數(shù)或第一個(gè)參數(shù)的不正確值引起的錯(cuò)誤,以及其他所有錯(cuò)誤。第一類錯(cuò)誤很少見,它們表示結(jié)構(gòu)配置不正確。您應(yīng)該重新上傳產(chǎn)品信息并檢查結(jié)構(gòu)是否填寫正確??梢栽谙旅嬲业秸_填充結(jié)構(gòu)的示例。

    第二類錯(cuò)誤是由于嘗試向鍵中放入超過(guò)其大小所能容納的更多數(shù)據(jù)而引起的。在這種情況下,我們建議向電子商務(wù)提供商發(fā)送一條消息,其中包含“密鑰將在 24 小時(shí)內(nèi)發(fā)送”之類的文本,而不是實(shí)際的序列號(hào),并將所有必需的信息發(fā)送到您自己的電子郵箱。在這種情況下,密鑰是在 VMProtect 中手動(dòng)生成的,一些數(shù)據(jù)被截?cái)嘁赃m應(yīng)最大密鑰大小的所有關(guān)鍵信息。

    使用示例

    下面是調(diào)用上述函數(shù)并生成序列號(hào)的代碼示例。注意最開始的代碼塊。在您將其替換為從 VMProtect 為您的產(chǎn)品導(dǎo)出的示例之前,該示例將不起作用:

    
    
    
    //////////////////////////////////////////////////////////////////////////
    // !!! 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 = L"John Doe";
    si.pEMail = L"john@doe.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;

    這是來(lái)自Keygen\DLL\Example的 Microsoft Visual Studio 示例項(xiàng)目。下面是代碼中最有趣的部分以及我們的評(píng)論。

    main函數(shù)的第一行使用從 VMProtect 導(dǎo)出的數(shù)據(jù)填充VMProtectProductInfo結(jié)構(gòu)。此代碼是典型的,不應(yīng)更改以避免錯(cuò)誤。然后我們創(chuàng)建VMProtectSerialNumberInfo結(jié)構(gòu)并將用戶名和電子郵件的位組合插入標(biāo)志字段。在下一行中,我們將用戶名和密碼放入結(jié)構(gòu)中的相應(yīng)字段。請(qǐng)注意,值在 UNICODE 編碼中被接受。密鑰生成器會(huì)將它們轉(zhuǎn)換為 UTF-8。


    然后,我們初始化一個(gè)指針變量,用于存儲(chǔ)生成的密鑰的地址,并調(diào)用VMProtectGenerateSerialNumber,然后分析返回碼。如果沒有錯(cuò)誤,生成的密鑰將輸出到控制臺(tái),并調(diào)用免費(fèi)序列號(hào)記憶功能。


    VMprotect SerialNumberInfo 結(jié)構(gòu)的其余字段

    結(jié)構(gòu)的某些字段可能需要一些額外的解釋。例如,dwExpDate和dwMaxBuildDate字段包含特定格式的日期:0xYYYYMMDD,即年存儲(chǔ)在高位字中,月和日分別存儲(chǔ)在低位字的高低字節(jié)中。為了產(chǎn)生這樣的數(shù)字,使用了以下宏:MAKEDATE(y, m, d)。您可以這樣稱呼它:MAKEDATE(2010, 05, 12)。pHardwareID字段應(yīng)包含指向許可 SDK的VMProtectGetCurrentHWID方法返回的字符串的指針。

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();