翻譯|使用教程|編輯:李顯亮|2019-10-15 09:59:58.867|閱讀 929 次
概述:在測試模式中,許可系統(它返回的狀態和數據)對提供的序列號的所有反應都在配置文件中描述。該文件名為VMPLicense.ini,應位于應用程序的工作文件夾中。本文將介紹第五步——限制程序的運行時間。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
VMProtect是一種很可靠的工具,可以保護應用程序代碼免受分析和破解,但只有在應用程序內保護機制正確構建且沒有可能破壞整個保護的嚴重錯誤的情況下,才能實現最好的效果。
建筑保護總是經歷兩個主要步驟:開發和發布。至于許可,首先創建一個應用程序,將保護集成到其中,然后添加檢查和功能限制。只有經過全面測試,才能將產品提供給用戶并開始第二階段。測試受保護的應用程序是一個復雜的過程,因為需要確保所有檢查和條件跳轉都能正常運行。
許可系統提供“開發者模式”(AKA“測試模式”),在此工作模式下,不對應用程序應用任何保護,并且在配置文件中調整系統對提供的序列號的反應。當應用程序沒有錯誤并且它正確地與許可系統一起使用時,VMProtect將“測試”許可模塊替換為執行實際序列號檢查的真實模塊。
致改變世界的程序員——10月在線購買VMProtect低至801元起,更有現金抵扣紅包邀您來領!更多活動詳情可哦~
測試模式
在測試模式中,許可系統(它返回的狀態和數據)對提供的序列號的所有反應都在配置文件中描述。該文件名為VMPLicense.ini,應位于應用程序的工作文件夾中。在下面提供的10個步驟中,將從創建最簡單的應用程序到在測試模式下全面使用許可系統,具有硬件鎖定和限制免費升級的時間。
▲步驟六:限制程序的運行時間
VMProtect可以限制程序自啟動以來的運行時間。這對演示很有用:您可以向用戶提供真實的序列號,但是該程序的運行時間不得超過5分鐘。許可系統不會強制此類程序關閉,而只是設置狀態標志。因此,通過將以下行添加到ini文件中,讓我們將最長工作時間設置為一分鐘:
TimeLimit = 1
并修改程序如下:
int main(int argc, char **argv) { char *serial = "Xserialnumber"; // we set the serial number directly in the code, for simplicity int res = VMProtectSetSerialNumber(serial); print_state(res); if (res) return 0; VMProtectSerialNumberData sd = {0}; VMProtectGetSerialNumberData(&sd, sizeof(sd)); printf("I will run for %d minute(s)\n", sd.bRunningTime); print_state(VMProtectGetSerialNumberState()); Sleep(60 * 1000 * sd.bRunningTime); printf("After %d minute(s):\n", sd.bRunningTime); print_state(VMProtectGetSerialNumberState()); return 0; }
程序在啟動時會打印序列號的狀態,然后計算最大運行時間并等待其到期。然后再次打印序列號狀態。將最大操作時間設置為一分鐘,我們應該收到以下結果:
state = 0 I will run for 1 minute(s) state = 0 After 1 minute(s): state = SERIAL_STATE_FLAG_RUNNING_TIME_OVER
受保護的程序應定期分析序列號的狀態,如果設置了該標志,則將其關閉。許可系統不會自動執行此操作,因為該程序可能需要釋放內存,將數據保存到文件等。
-- 未完待續 --
掃描關注“慧聚IT”微信公眾號,及時獲取最新動態及最新資訊
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn