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

    文檔首頁(yè)>>VMPsoft中文文檔>>序列號(hào)格式

    序列號(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)

    序列號(hào)結(jié)構(gòu)

    序列號(hào)由塊組成。每個(gè)區(qū)塊從一個(gè)標(biāo)識(shí)符字節(jié)開(kāi)始,表示該區(qū)塊的內(nèi)容和可能的長(zhǎng)度。最后一個(gè)區(qū)塊有255個(gè)標(biāo)識(shí)符,包含除最后一個(gè)區(qū)塊外的序列號(hào)的校驗(yàn)。

    根據(jù)塊的類型,它可以有恒定的或可變的長(zhǎng)度。在后一種情況下,長(zhǎng)度在塊標(biāo)識(shí)符之后的字節(jié)中指定。每個(gè)區(qū)塊的確切格式在下面描述。

    區(qū)塊格式

    ID Name Size (byte) Description Example
    0×01 Version 1 該塊包含一個(gè)版本的序列號(hào),1字節(jié)大小。該版本應(yīng)是1。 01 01
    0×02 User name 1 + N 該塊包含一個(gè)UTF-8編碼的用戶名。在用戶名之前,有1個(gè)字節(jié)保存著用戶名的長(zhǎng)度。因此,一個(gè)用戶名的總長(zhǎng)度不能超過(guò)255字節(jié)。不需要尾部的0。 02 04 4A 5F 48 4E
    0×03 E-Mail 1 + N 該塊包含一個(gè)UTF-8編碼的用戶的電子郵件。在電子郵件之前,有1個(gè)字節(jié)用來(lái)表示長(zhǎng)度。因此,一封電子郵件的總長(zhǎng)度不能超過(guò)255字節(jié)。不需要尾部的0。 03 07 61 40 62 2E 63 6F 6D
    0×04 Hardware identifier 1 + N 該塊包含由VMProtectGetCurrentHWID()函數(shù)返回的硬件標(biāo)識(shí)符。該函數(shù)返回一個(gè)base-64的字符串。該字符串的解碼版本被放到序列號(hào)中。數(shù)據(jù)塊的長(zhǎng)度應(yīng)是4的倍數(shù),數(shù)據(jù)塊前有一個(gè)長(zhǎng)度字節(jié)。最大的數(shù)據(jù)塊長(zhǎng)度是32字節(jié)。 04 08 E1 E2 E3 E4 A1 A2 A3 A4
    0×05 License expiration date 4 該區(qū)塊包含序列號(hào)過(guò)期日期 日期格式描述如下。 05 01 0A 07 DA
    0×06 Maximum operation time 1 該塊包含1個(gè)字節(jié),保存程序可以運(yùn)行的時(shí)間(分鐘)。因此,最大的時(shí)間可以是255分鐘。 06 05
    0×07 Product code 8 該塊包含一個(gè)產(chǎn)品代碼--由VMProtect創(chuàng)建的8個(gè)字節(jié),與產(chǎn)品參數(shù)一起導(dǎo)出。這些數(shù)據(jù)是以base-64編碼導(dǎo)出的,在放到序列號(hào)之前必須解碼為一個(gè)字節(jié)數(shù)組。該數(shù)組的大小應(yīng)正好是8個(gè)字節(jié)。 若缺失,受保護(hù)的程序?qū)⒉荒苷9ぷ鳌?strong> 07 01 02 03 04 05 06 07 08
    0×08 User data 1 + N 該塊最多包含255字節(jié)的自定義用戶數(shù)據(jù)。許可證系統(tǒng)不分析這些數(shù)據(jù),當(dāng)調(diào)用VMProtectGetSerialNumberData()函數(shù)時(shí),會(huì)返回這些數(shù)據(jù)。在數(shù)據(jù)塊之前,有一個(gè)字節(jié)保存著用戶數(shù)據(jù)的大小。 08 05 01 02 03 04 05
    0×09 Maximum build date 4 該塊包含應(yīng)用程序的最大構(gòu)建日期。其格式描述如下。 09 01 0A 07 DA
    0xFF Checksum 4 該區(qū)塊包含序列號(hào)校驗(yàn)和。該區(qū)塊位于最后一個(gè)區(qū)塊之前,校驗(yàn)和是針對(duì)之前所有區(qū)塊計(jì)算的。下面描述了校驗(yàn)和的計(jì)算機(jī)制。 FF 01 02 03 04

    日期存儲(chǔ)格式
    日期以雙字的形式存儲(chǔ)在序列號(hào)中 - 0xYYYYMMDD。高階字包含年,低階字包含日和月。字節(jié)遵循小尾數(shù)表示法--從低到高。如果有一個(gè)指向記錄的第一個(gè)字節(jié)的指針,可以用下面的代碼讀取或?qū)懭肴掌冢?

    byte *pDate = 0xNNNNNN; // date address
    
    *(DWORD *)pDate = (2010 << 16) | (10 << 8) | 1; // October 1, 2010
    
    DWORD dwExp = *(DWORD *)pDate;

    校驗(yàn)和計(jì)算

    序列號(hào)的校驗(yàn)和是使用SHA-1散列算法計(jì)算的。其結(jié)果是五個(gè)32位的字組成。第一個(gè)字既被用作序列號(hào)的校驗(yàn)和又是小端數(shù)(從低到高)。SHA-1散列的字符串表示法使用的是Big Endian - 數(shù)字從高字節(jié)到低字節(jié),所以如果SHA-1散列是由字符串函數(shù)生成的(比如在PHP中),散列的前四個(gè)字節(jié)應(yīng)顛倒過(guò)來(lái)。

    其他信息

    許可證系統(tǒng)會(huì)忽略那些編號(hào)不在上面的區(qū)塊。在較新的版本中可能會(huì)增加新的區(qū)塊。我們不建議使用非占用的標(biāo)識(shí)符創(chuàng)建新的區(qū)塊! 首先,這可能使密鑰在較新版本的授權(quán)系統(tǒng)中失去功能。其次,受保護(hù)的程序無(wú)論如何也無(wú)法讀取這些區(qū)塊的值。要在密鑰中存儲(chǔ)額外的信息,請(qǐng)通過(guò)用戶數(shù)據(jù)字段來(lái)代替。


    序列號(hào)沒(méi)有SALT,這是一種隨機(jī)信息,旨在提供相同輸入數(shù)據(jù)的密鑰。這個(gè)任務(wù)是強(qiáng)加給加密算法的。例如,在向一個(gè)組織出售一系列密鑰時(shí),你可以在用戶名字段中添加單獨(dú)的索引("公司 "LLC,10個(gè)密鑰中的1個(gè)),或者以任何適當(dāng)?shù)母袷綄⑦@些信息插入到用戶數(shù)據(jù)字段中。

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    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); })();