軟件保護(hù)工具VMProtect將許可系統(tǒng)集成到應(yīng)用程序(8):硬件鎖定
VMProtect是一種很可靠的工具,可以保護(hù)應(yīng)用程序代碼免受分析和破解,但只有在應(yīng)用程序內(nèi)保護(hù)機(jī)制正確構(gòu)建且沒(méi)有可能破壞整個(gè)保護(hù)的嚴(yán)重錯(cuò)誤的情況下,才能實(shí)現(xiàn)最好的效果。
下載VMProtect 購(gòu)買(mǎi)VMProtect
建筑保護(hù)總是經(jīng)歷兩個(gè)主要步驟:開(kāi)發(fā)和發(fā)布。至于許可,首先創(chuàng)建一個(gè)應(yīng)用程序,將保護(hù)集成到其中,然后添加檢查和功能限制。只有經(jīng)過(guò)全面測(cè)試,才能將產(chǎn)品提供給用戶并開(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í)模塊。
接收硬件標(biāo)識(shí)符
在鎖定硬件之前,必須接收硬件的標(biāo)識(shí)符,然后將標(biāo)識(shí)符放入序列號(hào)中。因?yàn)閷⑵鋫鬟f給許可系統(tǒng)時(shí),將檢查標(biāo)識(shí)符是否匹配。首先,將main()函數(shù)減少到最低限度:
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;
}通過(guò)運(yùn)行程序,將會(huì)收到一個(gè)默認(rèn)的測(cè)試硬件標(biāo)識(shí)符:
HWID:myhwid
將以下行添加到ini文件中可更改標(biāo)識(shí)符:
MyHWID = test
當(dāng)我們事后運(yùn)行程序時(shí)可以看到,系統(tǒng)認(rèn)為“test”是PC的硬件標(biāo)識(shí)符:
HWID:測(cè)試
注意:該程序僅在使用VMProtect處理后才顯示真實(shí)的硬件標(biāo)識(shí)符。
硬件鎖定序列號(hào)
要將測(cè)試序列號(hào)鎖定到硬件,應(yīng)該在ini文件中再增加一行。這次,我們定義“put into”序列號(hào)的標(biāo)識(shí)符:
KeyHWID = test
然后,使main()復(fù)雜一點(diǎn)。它將傳遞一個(gè)序列號(hào)并分析其獲得的結(jié)果:
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;
}運(yùn)行代碼后,將看到以下結(jié)果:
HWID:測(cè)試 狀態(tài)= 0
許可系統(tǒng)已將當(dāng)前的硬件標(biāo)識(shí)符與序列號(hào)中的標(biāo)識(shí)符進(jìn)行了比較。標(biāo)識(shí)符相等,因此VMProtectSetSerialNumber()函數(shù)返回0 –序列號(hào)匹配。
現(xiàn)在,讓我們嘗試在另一個(gè)硬件上“運(yùn)行”程序:只需將ini文件中MyHWID參數(shù)的值從“test”更改為“new test”,然后再次運(yùn)行程序:
HWID: new test state = SERIAL_STATE_FLAG_BAD_HWID
這一次,許可系統(tǒng)返回了SERIAL_STATE_FLAG_BAD_HWID標(biāo)志,這意味著真實(shí)的硬件標(biāo)識(shí)符與序列號(hào)中存儲(chǔ)的標(biāo)識(shí)符不匹配。
我們?cè)谄聊簧峡吹降漠?dāng)前標(biāo)識(shí)符為“new test”,而序列號(hào)為“test”。如果將ini文件中的KeyHWID參數(shù)更改為“new test”,也可以讓序列號(hào)在該“hardware”上運(yùn)行。
-- 未完待續(xù) --
更多VMProtect資源、優(yōu)惠活動(dòng),請(qǐng)點(diǎn)擊了解
掃描關(guān)注“慧聚IT”微信公眾號(hào),及時(shí)獲取最新動(dòng)態(tài)及最新資訊


QQ交談
在線咨詢(xún)

渝公網(wǎng)安備
50010702500608號(hào)

客服熱線