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

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

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


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

    【下載VMProtect最新試用版】

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


    測試模式

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

    ▲步驟三:檢索序列號狀態(tài)標(biāo)志

    首先,我們需要一個方便的函數(shù)來將標(biāo)志的數(shù)值轉(zhuǎn)換為序列號的可理解狀態(tài)。這是這個函數(shù)的代碼:

    #define PRINT_HELPER(state, flag) if (state & flag) printf("%s ", #flag)
    void print_state(INT state)
    {
            if (state == 0)
            {
                    printf("state = 0\n");
                    return;
            }
    
            printf("state = ");
            PRINT_HELPER(state, SERIAL_STATE_FLAG_CORRUPTED);
            PRINT_HELPER(state, SERIAL_STATE_FLAG_INVALID);
            PRINT_HELPER(state, SERIAL_STATE_FLAG_BLACKLISTED);
            PRINT_HELPER(state, SERIAL_STATE_FLAG_DATE_EXPIRED);
            PRINT_HELPER(state, SERIAL_STATE_FLAG_RUNNING_TIME_OVER);
            PRINT_HELPER(state, SERIAL_STATE_FLAG_BAD_HWID);
            PRINT_HELPER(state, SERIAL_STATE_FLAG_MAX_BUILD_EXPIRED);
            printf("\n");
    }

    盡管大小很大,但功能非常簡單 - 逐個檢查所有位標(biāo)志并打印狀態(tài)變量中存在的所有位。 在檢查序列號到print_state的調(diào)用后,替換代碼中的printf,并更改我們傳遞給許可系統(tǒng)的序列號:

    char *serial = "Xserialnumber1"; // we set the serial number directly in the code, for simplicity
    int res = VMProtectSetSerialNumber(serial);
    print_state(res);

    現(xiàn)在,如果我們運行此程序,將在控制臺上打印以下消息:

    state = SERIAL_STATE_FLAG_INVALID
    please register!

    接下來,我們通過刪除“1”將舊密鑰放回去并再次運行程序:

    state = 0
    We are registered.

    最后,我們可以看到序列號的狀態(tài)標(biāo)志,讓我們轉(zhuǎn)而從序列號中檢索標(biāo)志和數(shù)據(jù)。


    檢索序列號狀態(tài)的方式

    • 調(diào)用VMProtectSetSerialNumber(),將狀態(tài)標(biāo)志放入結(jié)構(gòu)的一個字段中
    • 調(diào)用VMProtectGetSerialNumberState(),將狀態(tài)標(biāo)志放入結(jié)構(gòu)的一個字段中
    • 調(diào)用VMProtectGetSerialNumberData(),將狀態(tài)標(biāo)志放入結(jié)構(gòu)的一個字段中

    每種方法都旨在在特定時間內(nèi)使用。在安裝期間執(zhí)行序列號的第一次檢查時,應(yīng)該拒絕錯誤的數(shù)字,過期的數(shù)字,黑名單中的數(shù)字等等。還應(yīng)在運行時檢查某些限制,例如程序的最大運行時間或序列號到期日期。


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


    VMProtect正版授權(quán)在線訂購特享超低價格!更有免費現(xiàn)金抵扣券領(lǐng)取>>立即點擊咨詢購買

    掃描關(guān)注“慧聚IT”微信公眾號,及時獲取最新動態(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); })();