軟件保護工具VMProtect將許可系統集成到應用程序(7)——黑名單中的序列號
VMProtect是一種很可靠的工具,可以保護應用程序代碼免受分析和破解,但只有在應用程序內保護機制正確構建且沒有可能破壞整個保護的嚴重錯誤的情況下,才能實現最好的效果。
建筑保護總是經歷兩個主要步驟:開發和發布。至于許可,首先創建一個應用程序,將保護集成到其中,然后添加檢查和功能限制。只有經過全面測試,才能將產品提供給用戶并開始第二階段。測試受保護的應用程序是一個復雜的過程,因為需要確保所有檢查和條件跳轉都能正常運行。
許可系統提供“開發者模式”(AKA“測試模式”),在此工作模式下,不對應用程序應用任何保護,并且在配置文件中調整系統對提供的序列號的反應。當應用程序沒有錯誤并且它正確地與許可系統一起使用時,VMProtect將“測試”許可模塊替換為執行實際序列號檢查的真實模塊。
測試模式
在測試模式中,許可系統(它返回的狀態和數據)對提供的序列號的所有反應都在配置文件中描述。該文件名為VMPLicense.ini,應位于應用程序的工作文件夾中。在下面提供的10個步驟中,將從創建最簡單的應用程序到在測試模式下全面使用許可系統,具有硬件鎖定和限制免費升級的時間。
▲步驟八:黑名單中的序列號
許可系統不應接受VMProtect中標記為“已阻止”的序列號。下次重新構建應用程序時,VMProtect會將列入黑名單的序列號的哈希添加到受保護的應用程序。結果,該應用程序的許可系統將來會拒絕這些序列號。
首先,讓最小化main()函數的內容:
int main(int argc,char ** argv) { char * serial =“ Xserialnumber”; //為了簡單起見,我們直接在代碼中設置序列號 int res = VMProtectSetSerialNumber(序列); print_state(res); 返回0; }
在測試模式下,許可系統將今天視為構建日期,因此,必須通過此行中指定的日期,這一點很重要。即,最大日期是昨天。修改main()函數的代碼,使其如下所示:
然后,運行程序并確保許可系統確實接受我們的序列號:
state = 0
現在,將此序列號添加到許可系統的黑名單中。將以下行添加到ini文件中:
BlackListedSerialNumber = Xserialnumber
再次運行該程序:
state = SERIAL_STATE_FLAG_BLACKLISTED
我們是否應該通知用戶他或她輸入的序列號被列入黑名單?它是由你決定。您可以簡單地告訴序列號不正確,也可以通知用戶密鑰已被盜用。許可系統僅將使用黑名單序列號的事實告知程序。
-- 未完待續 --
掃描關注“慧聚IT”微信公眾號,及時獲取最新動態及最新資訊
