UNIX 密鑰生成器
VMProtect 是新一代軟件盜版保護解決方案。VMProtect 是目前強大的反盜版解決方案之一,許多領先的軟件發行商都在使用它。VMProtect允許保護可執行文件(EXE,SCR),動態鏈接庫(DLL,OCX,BPL)和驅動程序(SYS)。
加密解密技術交流群(766135708)
.UNIX 版本的密鑰生成器是一個 PHP 文件,其中包含生成序列號所需的所有信息。該文件位于Keygen\PHP中。下面我們描述使用這種生成器的要點。
配置生成器
在 PHP 文件的開頭,設置代碼位于:
////////////////////////////////////////////////////////////////////////////////////////////// // The following lines should be generated by VMProtect License Manager $exported_algorithm = "RSA"; $exported_bits = 2048; $exported_private = "PJvj4kEpoQMIpYK+9wEt......xKeiSZgzdiln8Q=="; $exported_modulus = "rOlny/3QgZb/VmGr3CmY......I6ESAUmtQ+RBqQ=="; $exported_product_code = "oLQdGUn8kVk="; //////////////////////////////////////////////////////////////////////////////////////////////
此代碼由 VMProtect 自動生成(請參閱導出產品參數)并且對于每個特定產品都是唯一的。準確復制它至關重要,否則生成器將無法正常工作。
密鑰的內容
生成器指定一個序列號的內容。這些內容在一個數組中指定,下面列出了密鑰的所有可能參數。然而,在實際應用中,其中一些可能會被省略:
$params = array( user_name => "John Doe", // UTF-8! email => "john@doe.com", hwid => "vHGMdMRvGCPjWcCQ", // Exactly as returned by VMProtectGetCurrentHWID expire_date => array(year => 2009, month => 10, day => 1), maxbuild_date => array(year => 2009, month => 10, day => 1), time_limit => 10, user_data => base64_decode("CGCvRvMWcPHGdMjQ"), // string of bytes );
成功的密鑰生成處理函數
您可以在下面看到成功生成序列號時調用的最簡單的函數。發送給它的唯一參數是序列號字符串。該函數必須將序列號傳遞給調用者(電子商務代理),通常使用echo命令。為了方便起見,該字符串被初步拆分為每個 75 個符號的子字符串。此外,此功能可以通過電子郵件將生成的序列號發送給開發人員或將其添加到數據庫中。
function OnSerialGenerated($serial) { $serial = wordwrap($serial, 75, "\n", true); echo $serial; }
密鑰生成器錯誤處理函數
需要我們注意的代碼的最后一部分是出現問題時調用的函數。此函數接收帶有錯誤消息的字符串,完成后調用die()函數。處理程序函數必須做兩件事:代替密鑰,向電子商務代理返回一條消息,說明將手動發送密鑰。并向開發人員發送有關錯誤的詳盡信息以修復它并手動生成密鑰。
function OnSerialGenerationFailed($details) { echo "You will receive serial number in the next 24 hours"; // message to the customer // mail("support@vendor.com", "Houston, we have a problem", $details); // message to vendor }
有幾種可能的錯誤原因:算法參數不正確,密鑰參數不正確,用戶名或電子郵件太長,或者序列號太長不適合算法中指定的位數. 這就是為什么OnSerialGenerationFailed函數必須向開發人員發送有關該問題的詳細信息,以便他可以生成序列號并將其發送給客戶。
其他需要考慮的事情
示例包含密鑰生成器的簡化版本。它沒有考慮開發網絡生成器的建議。它不檢查調用方的 IP 地址,也不分析輸入參數。在開發自己的生成器時請注意這一點。用戶名和電子郵件必須作為 UTF-8 字符串傳遞。確保您的電子商務代理以 UTF-8 編碼發送這些數據,如果不是這樣,則對信息進行轉碼。
錯誤的編碼不會導致生成錯誤的序列號,但這樣的序列號顯示的注冊名可能與真實用戶名不同,所以他或她可能會在“關于”窗口中看到它時感到驚訝。應用非對稱加密是一個復雜的數學過程。如果使用純PHP實現,沒有任何第三方庫,生成序列號可能需要幾十秒。生成器在可用時使用gmp_powm、bi_powmod、bcpowod函數。如果在您的主機上生成序列號的時間太長,我們建議要求主機提供商啟用這些功能。例如,gmp_powm函數的運行速度是bcpowmod的十倍。