翻譯|使用教程|編輯:李顯亮|2019-09-20 10:45:50.447|閱讀 687 次
概述:在測試模式中,許可系統(它返回的狀態和數據)對提供的序列號的所有反應都在配置文件中描述。該文件名為VMPLicense.ini,應位于應用程序的工作文件夾中。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
VMProtect是一種很可靠的工具,可以保護應用程序代碼免受分析和破解,但只有在應用程序內保護機制正確構建且沒有可能破壞整個保護的嚴重錯誤的情況下,才能實現最好的效果。
建筑保護總是經歷兩個主要步驟:開發和發布。至于許可,首先創建一個應用程序,將保護集成到其中,然后添加檢查和功能限制。只有經過全面測試,才能將產品提供給用戶并開始第二階段。測試受保護的應用程序是一個復雜的過程,因為需要確保所有檢查和條件跳轉都能正常運行。許可系統提供“開發者模式”(AKA“測試模式”),在此工作模式下,不對應用程序應用任何保護,并且在配置文件中調整系統對提供的序列號的反應。當應用程序沒有錯誤并且它正確地與許可系統一起使用時,VMProtect將“測試”許可模塊替換為執行實際序列號檢查的真實模塊。
測試模式
在測試模式中,許可系統(它返回的狀態和數據)對提供的序列號的所有反應都在配置文件中描述。該文件名為VMPLicense.ini,應位于應用程序的工作文件夾中。在下面提供的10個步驟中,將從創建最簡單的應用程序到在測試模式下全面使用許可系統,具有硬件鎖定和限制免費升級的時間。
▲步驟三:檢索序列號狀態標志
首先,我們需要一個方便的函數來將標志的數值轉換為序列號的可理解狀態。這是這個函數的代碼:
#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"); }
盡管大小很大,但功能非常簡單 - 逐個檢查所有位標志并打印狀態變量中存在的所有位。 在檢查序列號到print_state的調用后,替換代碼中的printf,并更改我們傳遞給許可系統的序列號:
char *serial = "Xserialnumber1"; // we set the serial number directly in the code, for simplicity int res = VMProtectSetSerialNumber(serial); print_state(res);
現在,如果我們運行此程序,將在控制臺上打印以下消息:
state = SERIAL_STATE_FLAG_INVALID please register!
接下來,我們通過刪除“1”將舊密鑰放回去并再次運行程序:
state = 0 We are registered.
最后,我們可以看到序列號的狀態標志,讓我們轉而從序列號中檢索標志和數據。
檢索序列號狀態的方式
每種方法都旨在在特定時間內使用。在安裝期間執行序列號的第一次檢查時,應該拒絕錯誤的數字,過期的數字,黑名單中的數字等等。還應在運行時檢查某些限制,例如程序的最大運行時間或序列號到期日期。
-- 未完待續 --
VMProtect正版授權在線訂購特享超低價格!更有免費現金抵扣券領取>>立即點擊咨詢購買
掃描關注“慧聚IT”微信公眾號,及時獲取最新動態及最新資訊
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn