翻譯|使用教程|編輯:胡濤|2023-06-28 10:12:57.993|閱讀 159 次
概述:本文主要介紹加密軟件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@fc6vip.cn