翻譯|使用教程|編輯:陳津勇|2019-11-04 13:46:04.850|閱讀 708 次
概述:在使用虛擬機保護軟件VMProtect將許可系統集成到應用程序過程中,首先要接收硬件標識符,并將其傳遞給許可系統。當許可系統檢測到標識符與序列號中的標識符一致后,才能進行后續步驟。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
VMProtect是一種很可靠的工具,可以保護應用程序代碼免受分析和破解,但只有在應用程序內保護機制正確構建且沒有可能破壞整個保護的嚴重錯誤的情況下,才能實現最好的效果。
建筑保護總是經歷兩個主要步驟:開發和發布。至于許可,首先創建一個應用程序,將保護集成到其中,然后添加檢查和功能限制。只有經過全面測試,才能將產品提供給用戶并開始第二階段。測試受保護的應用程序是一個復雜的過程,因為需要確保所有檢查和條件跳轉都能正常運行。
許可系統提供“開發者模式”(AKA“測試模式”),在此工作模式下,不對應用程序應用任何保護,并且在配置文件中調整系統對提供的序列號的反應。當應用程序沒有錯誤并且它正確地與許可系統一起使用時,VMProtect將“測試”許可模塊替換為執行實際序列號檢查的真實模塊。
接收硬件標識符
在鎖定硬件之前,必須接收硬件的標識符,然后將標識符放入序列號中。因為將其傳遞給許可系統時,將檢查標識符是否匹配。首先,將main()函數減少到最低限度:
int main(int argc,char ** argv) { int nSize = VMProtectGetCurrentHWID(NULL,0); char * buf =新的char [nSize]; VMProtectGetCurrentHWID(buf,nSize); printf(“ HWID:%s \ n”,buf); 刪除[] buf; 返回0; }
通過運行程序,將會收到一個默認的測試硬件標識符:
HWID:myhwid
將以下行添加到ini文件中可更改標識符:
MyHWID = test
當我們事后運行程序時可以看到,系統認為“test”是PC的硬件標識符:
HWID:測試
注意:該程序僅在使用VMProtect處理后才顯示真實的硬件標識符。
硬件鎖定序列號
要將測試序列號鎖定到硬件,應該在ini文件中再增加一行。這次,我們定義“put into”序列號的標識符:
KeyHWID = test
然后,使main()復雜一點。它將傳遞一個序列號并分析其獲得的結果:
int main(int argc,char ** argv) { int nSize = VMProtectGetCurrentHWID(NULL,0); char * buf =新的char [nSize]; VMProtectGetCurrentHWID(buf,nSize); printf(“ HWID:%s \ n”,buf); 刪除[] buf; char * serial =“ Xserialnumber”; int res = VMProtectSetSerialNumber(序列); print_state(res); 返回0; }
運行代碼后,將看到以下結果:
HWID:測試 狀態= 0
許可系統已將當前的硬件標識符與序列號中的標識符進行了比較。標識符相等,因此VMProtectSetSerialNumber()函數返回0 –序列號匹配。
現在,讓我們嘗試在另一個硬件上“運行”程序:只需將ini文件中MyHWID參數的值從“test”更改為“new test”,然后再次運行程序:
HWID: new test state = SERIAL_STATE_FLAG_BAD_HWID
這一次,許可系統返回了SERIAL_STATE_FLAG_BAD_HWID標志,這意味著真實的硬件標識符與序列號中存儲的標識符不匹配。
我們在屏幕上看到的當前標識符為“new test”,而序列號為“test”。如果將ini文件中的KeyHWID參數更改為“new test”,也可以讓序列號在該“hardware”上運行。
-- 未完待續 --
更多VMProtect資源、優惠活動,請點擊了解
掃描關注“慧聚IT”微信公眾號,及時獲取最新動態及最新資訊
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: