• <menu id="w2i4a"></menu>
  • logo VMProtect用戶手冊

    文檔首頁>>VMProtect用戶手冊>>軟件保護(hù)工具VMProtect用戶手冊——將許可系統(tǒng)集成到應(yīng)用程序(1)

    軟件保護(hù)工具VMProtect用戶手冊——將許可系統(tǒng)集成到應(yīng)用程序(1)


    VMProtect是一種很可靠的工具,可以保護(hù)應(yīng)用程序代碼免受分析和破解,但只有在應(yīng)用程序內(nèi)保護(hù)機(jī)制正確構(gòu)建且沒有可能破壞整個(gè)保護(hù)的嚴(yán)重錯(cuò)誤的情況下,才能實(shí)現(xiàn)最好的效果。

    【下載VMProtect最新試用版】

    建筑保護(hù)總是經(jīng)歷兩個(gè)主要步驟:開發(fā)和發(fā)布。至于許可,首先創(chuàng)建一個(gè)應(yīng)用程序,將保護(hù)集成到其中,然后添加檢查和功能限制。只有經(jīng)過全面測試,才能將產(chǎn)品提供給用戶并開始第二階段。測試受保護(hù)的應(yīng)用程序是一個(gè)復(fù)雜的過程,因?yàn)樾枰_保所有檢查和條件跳轉(zhuǎn)都能正常運(yùn)行。許可系統(tǒng)提供“開發(fā)者模式”(AKA“測試模式”),在此工作模式下,不對(duì)應(yīng)用程序應(yīng)用任何保護(hù),并且在配置文件中調(diào)整系統(tǒng)對(duì)提供的序列號(hào)的反應(yīng)。當(dāng)應(yīng)用程序沒有錯(cuò)誤并且它正確地與許可系統(tǒng)一起使用時(shí),VMProtect將“測試”許可模塊替換為執(zhí)行實(shí)際序列號(hào)檢查的真實(shí)模塊。


    測試模式

    在測試模式中,許可系統(tǒng)(它返回的狀態(tài)和數(shù)據(jù))對(duì)提供的序列號(hào)的所有反應(yīng)都在配置文件中描述。該文件名為VMPLicense.ini,應(yīng)位于應(yīng)用程序的工作文件夾中。在下面提供的10個(gè)步驟中,將從創(chuàng)建最簡單的應(yīng)用程序到在測試模式下全面使用許可系統(tǒng),具有硬件鎖定和限制免費(fèi)升級(jí)的時(shí)間。

    ▲步驟一:創(chuàng)建受保護(hù)的應(yīng)用程序

    第一步是創(chuàng)建一個(gè)應(yīng)用程序。這將是一個(gè)簡單的應(yīng)用程序,沒有任何用戶界面,沒有嚴(yán)重的功能。我們的目標(biāo)是將序列號(hào)傳遞給許可系統(tǒng)并獲得答案。

    #include <windows.h>
    #include <stdio.h>
    
    #include#includebool is_registered(const char * serial)
    {
            return serial && serial [0] =='X';
    }
    
    int main(int argc,char ** argv)
    {
            char * serial =“Xserialnumber”; //為簡單起見,我們直接在代碼中設(shè)置序列號(hào)
            if(!is_registered(serial))
            {
                    printf(“請注冊!\ n”);
                    返回0;
            }
            printf(“我們已注冊。\ n”);
            返回0;
    }

    該程序使用一種非常簡單的方法來檢查序列號(hào)。該is_registered()函數(shù)比較有“X”的序列號(hào)的第一個(gè)符號(hào),并認(rèn)為該號(hào)碼是正確的,如果這兩者匹配。對(duì)于錯(cuò)誤的序列號(hào),將顯示注冊消息,而如果用戶輸入正確的密鑰,則顯示“我們已注冊?!?/span>

    ▲步驟二:添加許可證檢查代碼

    如果您之前沒有這樣做,是時(shí)候?qū)MProtect SDK包含在您的項(xiàng)目中。SDK是三個(gè)文件:頭文件(VMProtectSDK.h),庫文件(VMProtectSDK32.lib)和帶實(shí)現(xiàn)的dll文件(VMProtectSDK32.dll)。有各自的庫實(shí)現(xiàn)和64位系統(tǒng)的dll文件。將dll文件,頭文件和庫文件放到我們的應(yīng)用程序的工作文件夾中,源文件位于該文件夾中,并將頭文件包含在主文件中:

    #include <windows.h>
    #include <stdio.h>
    #include“VMProtectSDK.h”

    將序列號(hào)發(fā)送到許可系統(tǒng)

    現(xiàn)在,在帶有序列號(hào)的行下方,我們添加了對(duì)許可系統(tǒng)的SDK功能的調(diào)用:

    char * serial =“Xserialnumber”; //為簡單起見,我們直接在代碼中設(shè)置序列號(hào)
    int res = VMProtectSetSerialNumber(serial);
    printf(“res = 0x%08X \ n”,res);

    如果在執(zhí)行此操作后,程序?qū)⑼V共@示缺少所需的dll文件的錯(cuò)誤,請確保將相應(yīng)的DLL文件放入應(yīng)用程序的工作文件夾中。如果執(zhí)行成功,您應(yīng)該看到以下消息:

    res = 0x00000002

    2對(duì)應(yīng)于API中描述的SERIAL_STATE_FLAG_INVALID標(biāo)志。這意味著許可系統(tǒng)認(rèn)為我們的密鑰不正確,這是非常正確的,因?yàn)槲覀儧]有向系統(tǒng)“解釋”哪些密鑰是正確的,哪些不是。

    指定“正確”的序列號(hào)

    在測試模式下,許可系統(tǒng)會(huì)分析VMProtectLicense.ini文件,并根據(jù)指定的設(shè)置對(duì)函數(shù)調(diào)用做出反應(yīng)。將在后面的步驟中徹底檢查該文件,現(xiàn)在只需創(chuàng)建這樣一個(gè)文件并在其中添加以下文本:

    [TestLicense]
    AcceptedSerialNumber = Xserialnumber

    現(xiàn)在,再次運(yùn)行我們的程序。如果仍然收到“2”錯(cuò)誤代碼,請確保ini文件位于應(yīng)用程序的工作文件夾中。這次我們應(yīng)該收到“0”。這是許可系統(tǒng)接受并批準(zhǔn)序列號(hào)的標(biāo)志?,F(xiàn)在我們可以從代碼中刪除is_registered()函數(shù) - 許可系統(tǒng)現(xiàn)在負(fù)責(zé)檢查序列號(hào)

    #include <windows.h>
    #include <stdio.h>
    #include#include#include“VMProtectSDK.h”
    
    int main(int argc,char ** argv)
    {
            char * serial =“Xserialnumber”; //為簡單起見,我們直接在代碼中設(shè)置序列號(hào)
    
            int res = VMProtectSetSerialNumber(serial);
            printf(“res = 0x%08X \ n”,res);
    
            如果(res)
            {
                    printf(“請注冊!\ n”);
                    返回0;
            }
            printf(“我們已注冊。\ n”);
            返回0;
    }


    -- 未完待續(xù) --



    VMProtect正版授權(quán)專享在線訂購特享超低價(jià)格!更有免費(fèi)現(xiàn)金抵扣券領(lǐng)取,還不趕緊加入你的訂購清單?>>更多詳情可點(diǎn)擊咨詢購買

    掃描關(guān)注“慧聚IT”微信公眾號(hào),及時(shí)獲取最新動(dòng)態(tài)及最新資訊

    1562572142.jpg


    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    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); })();