軟件保護(hù)工具VMProtect將許可系統(tǒng)集成到應(yīng)用程序(9):用戶數(shù)據(jù)
VMProtect是一種很可靠的工具,可以保護(hù)應(yīng)用程序代碼免受分析和破解,但只有在應(yīng)用程序內(nèi)保護(hù)機(jī)制正確構(gòu)建且沒(méi)有可能破壞整個(gè)保護(hù)的嚴(yán)重錯(cuò)誤的情況下,才能實(shí)現(xiàn)最好的效果。
建筑保護(hù)總是經(jīng)歷兩個(gè)主要步驟:開(kāi)發(fā)和發(fā)布。至于許可,首先創(chuàng)建一個(gè)應(yīng)用程序,將保護(hù)集成到其中,然后添加檢查和功能限制。只有經(jīng)過(guò)全面測(cè)試,才能將產(chǎn)品提供給用戶并開(kāi)始第二階段。測(cè)試受保護(hù)的應(yīng)用程序是一個(gè)復(fù)雜的過(guò)程,因?yàn)樾枰_保所有檢查和條件跳轉(zhuǎn)都能正常運(yùn)行。
許可系統(tǒng)提供“開(kāi)發(fā)者模式”(AKA“測(cè)試模式”),在此工作模式下,不對(duì)應(yīng)用程序應(yīng)用任何保護(hù),并且在配置文件中調(diào)整系統(tǒng)對(duì)提供的序列號(hào)的反應(yīng)。當(dāng)應(yīng)用程序沒(méi)有錯(cuò)誤并且它正確地與許可系統(tǒng)一起使用時(shí),VMProtect將“測(cè)試”許可模塊替換為執(zhí)行實(shí)際序列號(hào)檢查的真實(shí)模塊。
序列號(hào)最多可以包含255個(gè)字節(jié)的任意數(shù)據(jù),許可系統(tǒng)將它們?cè)瓨觽鬟f給程序。數(shù)據(jù)可以包含有關(guān)銷售的任何信息、操作完整版所需的數(shù)據(jù)或其他內(nèi)容。在正式開(kāi)始本教程之前,先修改main()函數(shù),讓其從序列號(hào)讀取數(shù)據(jù)并將其顯示在屏幕上:
int main(int argc,char ** argv) { char * serial =“ Xserialnumber”; int res = VMProtectSetSerialNumber(序列); print_state(res); 如果(res)返回0; VMProtectSerialNumberData sd = {0}; VMProtectGetSerialNumberData(&sd,sizeof(sd)); printf(“序列號(hào)具有%d個(gè)數(shù)據(jù)字節(jié)\ n”,sd.nUserDataLength); 對(duì)于(int i = 0; i <sd.nUserDataLength; i ++) printf(“%02X”,sd.bUserData [i]); printf(“ \ n”); 返回0; }
將Ini文件縮小為:
[TestLicense] AcceptedSerialNumber = Xserialnumber
現(xiàn)在,我們運(yùn)行該程序并確保序列號(hào)運(yùn)行良好,但其中不包含任何數(shù)據(jù):
狀態(tài)= 0 序列號(hào)有0個(gè)字節(jié)的數(shù)據(jù)
要將新的用戶數(shù)據(jù)添加到序列號(hào)中,需要在ini文件中創(chuàng)建UserData變量,并以HEX格式為其分配數(shù)據(jù)。符號(hào)必須成對(duì)出現(xiàn),也就是說(shuō),線的長(zhǎng)度必須是2的倍數(shù)。像這樣:
UserData = 010203A0B0C0D0E0
在這種情況下,如果運(yùn)行程序?qū)⑹盏揭韵陆Y(jié)果:
狀態(tài)= 0 序列號(hào)有8個(gè)字節(jié)的數(shù)據(jù) 01 02 03 A0 B0 C0 D0 E0
-- 未完待續(xù) --
慧都16周年·技術(shù)服務(wù)月,軟件商城優(yōu)惠券不限量免費(fèi)領(lǐng)取,購(gòu)VMProtect享折上折!點(diǎn)此查看詳情>>>
掃描關(guān)注“慧聚IT”微信公眾號(hào),及時(shí)獲取最新動(dòng)態(tài)及最新資訊