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