翻譯|使用教程|編輯:李顯亮|2019-09-20 10:45:50.447|閱讀 687 次
概述:在測(cè)試模式中,許可系統(tǒng)(它返回的狀態(tài)和數(shù)據(jù))對(duì)提供的序列號(hào)的所有反應(yīng)都在配置文件中描述。該文件名為VMPLicense.ini,應(yīng)位于應(yīng)用程序的工作文件夾中。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
相關(guān)鏈接:
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)品提供給用戶(hù)并開(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í)模塊。
測(cè)試模式
在測(cè)試模式中,許可系統(tǒng)(它返回的狀態(tài)和數(shù)據(jù))對(duì)提供的序列號(hào)的所有反應(yīng)都在配置文件中描述。該文件名為VMPLicense.ini,應(yīng)位于應(yīng)用程序的工作文件夾中。在下面提供的10個(gè)步驟中,將從創(chuàng)建最簡(jiǎn)單的應(yīng)用程序到在測(cè)試模式下全面使用許可系統(tǒng),具有硬件鎖定和限制免費(fèi)升級(jí)的時(shí)間。
▲步驟三:檢索序列號(hào)狀態(tài)標(biāo)志
首先,我們需要一個(gè)方便的函數(shù)來(lái)將標(biāo)志的數(shù)值轉(zhuǎn)換為序列號(hào)的可理解狀態(tài)。這是這個(gè)函數(shù)的代碼:
#define PRINT_HELPER(state, flag) if (state & flag) printf("%s ", #flag) void print_state(INT state) { if (state == 0) { printf("state = 0\n"); return; } printf("state = "); PRINT_HELPER(state, SERIAL_STATE_FLAG_CORRUPTED); PRINT_HELPER(state, SERIAL_STATE_FLAG_INVALID); PRINT_HELPER(state, SERIAL_STATE_FLAG_BLACKLISTED); PRINT_HELPER(state, SERIAL_STATE_FLAG_DATE_EXPIRED); PRINT_HELPER(state, SERIAL_STATE_FLAG_RUNNING_TIME_OVER); PRINT_HELPER(state, SERIAL_STATE_FLAG_BAD_HWID); PRINT_HELPER(state, SERIAL_STATE_FLAG_MAX_BUILD_EXPIRED); printf("\n"); }
盡管大小很大,但功能非常簡(jiǎn)單 - 逐個(gè)檢查所有位標(biāo)志并打印狀態(tài)變量中存在的所有位。 在檢查序列號(hào)到print_state的調(diào)用后,替換代碼中的printf,并更改我們傳遞給許可系統(tǒng)的序列號(hào):
char *serial = "Xserialnumber1"; // we set the serial number directly in the code, for simplicity int res = VMProtectSetSerialNumber(serial); print_state(res);
現(xiàn)在,如果我們運(yùn)行此程序,將在控制臺(tái)上打印以下消息:
state = SERIAL_STATE_FLAG_INVALID please register!
接下來(lái),我們通過(guò)刪除“1”將舊密鑰放回去并再次運(yùn)行程序:
state = 0 We are registered.
最后,我們可以看到序列號(hào)的狀態(tài)標(biāo)志,讓我們轉(zhuǎn)而從序列號(hào)中檢索標(biāo)志和數(shù)據(jù)。
檢索序列號(hào)狀態(tài)的方式
每種方法都旨在在特定時(shí)間內(nèi)使用。在安裝期間執(zhí)行序列號(hào)的第一次檢查時(shí),應(yīng)該拒絕錯(cuò)誤的數(shù)字,過(guò)期的數(shù)字,黑名單中的數(shù)字等等。還應(yīng)在運(yùn)行時(shí)檢查某些限制,例如程序的最大運(yùn)行時(shí)間或序列號(hào)到期日期。
-- 未完待續(xù) --
VMProtect正版授權(quán)在線(xiàn)訂購(gòu)特享超低價(jià)格!更有免費(fèi)現(xiàn)金抵扣券領(lǐng)取>>立即點(diǎn)擊咨詢(xún)購(gòu)買(mǎi)
掃描關(guān)注“慧聚IT”微信公眾號(hào),及時(shí)獲取最新動(dòng)態(tài)及最新資訊
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn