• <menu id="w2i4a"></menu>
  • logo VMProtect用戶手冊(cè)

    文檔首頁(yè)>>VMProtect用戶手冊(cè)>>將VMProtect集成到應(yīng)用程序教程之實(shí)模式(四):將代碼鎖定到序列號(hào)上

    將VMProtect集成到應(yīng)用程序教程之實(shí)模式(四):將代碼鎖定到序列號(hào)上


    在實(shí)模式下,VMProtect許可系統(tǒng)向受保護(hù)的應(yīng)用程序放置一個(gè)特殊的許可模塊。該模塊執(zhí)行與SDK中的測(cè)試功能相同的功能,但是使用序列號(hào)的內(nèi)容而不是配置ini文件。本系列教程的五個(gè)步驟說(shuō)明了使用基于VMProtect和許可系統(tǒng)的全功能保護(hù)來(lái)保護(hù)簡(jiǎn)單應(yīng)用程序的過(guò)程。

    免費(fèi)下載VMProtect  優(yōu)惠購(gòu)買VMProtect


    破解程序最常見(jiàn)的方法之一是找到要檢查序列號(hào)的位置,以及其后的附近條件跳轉(zhuǎn)。如果序列號(hào)正確,則程序以一種方式執(zhí)行,否則就以另一種方式執(zhí)行。黑客找到了該跳轉(zhuǎn)并將其替換為“正確”方式的跳轉(zhuǎn)。

    本文,我們將使用這種技術(shù)直接在源代碼中“破解”測(cè)試程序。首先,“關(guān)掉”條件跳轉(zhuǎn):

    char *serial = read_serial("serial.txt");
    int res = VMProtectSetSerialNumber(serial);
    delete [] serial;
    if (false && res)
    {

    現(xiàn)在,程序可以接受任何序列號(hào),并且可以正常工作。當(dāng)然,如果文件受到VMProtect的保護(hù),即使是經(jīng)驗(yàn)豐富的黑客也會(huì)花費(fèi)數(shù)月的時(shí)間來(lái)定位和修改條件跳轉(zhuǎn)??紤]到程序在不同條件下多次檢查序列號(hào),即使是這樣一個(gè)簡(jiǎn)單的檢查也是相當(dāng)安全的。

    步驟五  將代碼鎖定到序列號(hào)上

    VMProtect的演示版對(duì)已處理函數(shù)的數(shù)量有所限制:僅處理一個(gè)函數(shù)。因此,如果使用demo-version,應(yīng)該只將foo()函數(shù)包括到項(xiàng)目中,否則VMProtect的demo-version可以選擇main()函數(shù),并且對(duì)序列號(hào)的鎖定將不起作用。

    VMProtect的授權(quán)系統(tǒng)允許您將一個(gè)或多個(gè)功能的代碼鎖定到一個(gè)序列號(hào),這樣,如果沒(méi)有提供正確的序列號(hào),它們將無(wú)法工作。該函數(shù)的主體將被虛擬化,然后進(jìn)行加密,并且只能使用正確的序列號(hào)進(jìn)行解密。這意味著,即使黑客在序列號(hào)檢查中找到并修復(fù)了有條件的跳轉(zhuǎn),鎖定到序列號(hào)的功能仍然無(wú)法使用。

    下面讓我們嘗試一下。在“Functions”部分中,選擇foo()函數(shù),然后在右側(cè)面板中將“Lock to Serial Number”選項(xiàng)更改為“Yes”。

    然后,保護(hù)應(yīng)用程序。由于我們已經(jīng)“破解”了它,所以可以將任意文本放入serial.txt文件中并運(yùn)行該應(yīng)用程序。以下文本將出現(xiàn)在控制臺(tái)中:

    C:\test>dummy_app.vmp.exe
    serial number is correct, calling foo()

    這意味著,黑客“修復(fù)”了條件跳轉(zhuǎn),程序以“正確”方式運(yùn)行。但是當(dāng)調(diào)用foo()時(shí),程序?qū)@示一條消息:

    由于我們將foo()函數(shù)鎖定在序列號(hào)上,而黑客沒(méi)有此序列號(hào),因此嘗試解密該函數(shù)的代碼會(huì)導(dǎo)致故障和無(wú)法繼續(xù)執(zhí)行程序。當(dāng)按下“OK”時(shí),程序關(guān)閉,并且“done”消息永遠(yuǎn)不會(huì)不顯示在控制臺(tái)中。

    什么應(yīng)該被鎖定到序列號(hào)?

    將只在程序的注冊(cè)版本中運(yùn)行的功能鎖定到序列號(hào)是有必要的。由于鎖定需要虛擬化,所以應(yīng)該考慮一些性能損失。例如,如果文本編輯器不允許在演示版中保存結(jié)果,則可以將保存文檔功能鎖定到序列號(hào)。如果該函數(shù)在其操作期間調(diào)用其他函數(shù),則也不必鎖定它們,因?yàn)闆](méi)有主函數(shù),它們將不會(huì)有任何用處。

    注意,在沒(méi)有序列號(hào)的情況下調(diào)用鎖定的函數(shù)會(huì)導(dǎo)致程序關(guān)閉,并且沒(méi)有機(jī)會(huì)保存工作結(jié)果。這就是為什么應(yīng)該徹底測(cè)試應(yīng)用程序,以確保它在試用模式下不會(huì)調(diào)用此類功能。在上面的示例中,文本編輯器必須在演示模式下禁用“Save”命令,不能對(duì)Ctrl + S快捷鍵作出反應(yīng),也不應(yīng)該要求在退出時(shí)保存文檔。如果您不注意這一點(diǎn),用戶可能會(huì)對(duì)“錯(cuò)誤”的演示版本感到失望。

    鎖定序列號(hào)和無(wú)效序列號(hào)

    當(dāng)調(diào)用VMProtectSetSerialNumber()函數(shù)時(shí),授權(quán)許可模塊檢查傳遞給該函數(shù)的序列號(hào)。只有當(dāng)序列號(hào)在檢查時(shí)絕對(duì)正確時(shí)才執(zhí)行代碼的加密片段——未列入黑名單,具有正確的硬件標(biāo)識(shí)符、未過(guò)期等等。在這種情況下,所有加密的過(guò)程都將執(zhí)行,直到應(yīng)用程序關(guān)閉,或再次調(diào)用VMProtectSetSerialNumber()。

    在程序執(zhí)行期間,某些限制可能會(huì)“觸發(fā)”:例如,程序的運(yùn)行時(shí)間可能到期或序列號(hào)過(guò)期日期到來(lái)。在這種情況下,許可模塊仍會(huì)加密并執(zhí)行鎖定在序列號(hào)上的功能。這是因?yàn)槭鼙Wo(hù)的應(yīng)用程序很難檢測(cè)到這些限制觸發(fā)的時(shí)刻并相應(yīng)地更改行為(阻止相應(yīng)的菜單項(xiàng)等)。如果許可模塊突然停止執(zhí)行鎖定到序列號(hào)的代碼片段,很可能導(dǎo)致應(yīng)用程序故障。這就是為什么要在設(shè)置序列號(hào)時(shí)做出決策,并選擇相應(yīng)的執(zhí)行模式等原因。


    有關(guān) VMProtect 更多資源,請(qǐng)聯(lián)系【慧都客服】了解


    12月,慶圣誕,迎元旦,上“慧都網(wǎng)”小程序簽到兌軟件商城無(wú)門(mén)檻抵價(jià)券>>>   領(lǐng)優(yōu)惠券購(gòu)VMProtect享折上折>>>

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();