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

    文檔首頁(yè)>>VMProtect用戶手冊(cè)>>代碼保護(hù)軟件 VMProtect 用戶手冊(cè)之使用VMProtect: 準(zhǔn)備項(xiàng)目

    代碼保護(hù)軟件 VMProtect 用戶手冊(cè)之使用VMProtect: 準(zhǔn)備項(xiàng)目


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

    VMProtect最新試用版下載

    接下來(lái)我們一起來(lái)看一個(gè)非常簡(jiǎn)單的應(yīng)用程序,它只包含一個(gè)表單(Form1),一個(gè)文本元素(Edit1)和一個(gè)按鈕(Button1)。該應(yīng)用程序的工作方式如下:?jiǎn)螕鬊utton1時(shí),應(yīng)用程序會(huì)檢查輸入的密碼是否正確并顯示相應(yīng)的消息。

    delphi_project

    這里使用的是一種非常簡(jiǎn)單的算法來(lái)檢查密碼:第一步,我們將其轉(zhuǎn)換為數(shù)字形式,然后我們通過(guò)除以17來(lái)計(jì)算余數(shù)。如果輸入密碼的數(shù)字表示除以17的余數(shù)等于13,則密碼正確。Delphi上的密碼檢查程序?qū)崿F(xiàn)如下:

    function TForm1.CheckPassword: Boolean;
    begin
      Result:=(StrToIntDef(Edit1.Text, 0) mod 17=13);
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      if CheckPassword then
       MessageDlg('Correct password', mtInformation, [mbOK], 0)
      else
       begin
        MessageDlg('Incorrect password', mtError, [mbOK], 0);
        Edit1.SetFocus;
       end;
    end;

    保護(hù)程序和功能的選擇可以通過(guò)三種方式完成:

    • 使用編譯器創(chuàng)建的MAP文件以及程序的可執(zhí)行文件。MAP文件包含有關(guān)應(yīng)用程序的所有過(guò)程和功能的名稱以及地址的所有必要信息。如果使用MAP文件,則可以選擇按名稱保護(hù)的過(guò)程和函數(shù)。使用MAP文件,每次重新編譯項(xiàng)目時(shí),VMProtect都會(huì)自動(dòng)確定過(guò)程和函數(shù)的新地址。
    • 使用插入應(yīng)用程序源代碼的標(biāo)記。 標(biāo)記是VMProtect用于確定受保護(hù)片段邊界的特殊標(biāo)記。 此外,VMProtect支持具有預(yù)定義編譯類型的標(biāo)記。當(dāng)你只想保護(hù)函數(shù)或過(guò)程的一部分時(shí),使用標(biāo)記非常有用的。使用標(biāo)記可以指定要保護(hù)的字符串常量的代碼部分。
    • 通過(guò)可執(zhí)行文件中受保護(hù)過(guò)程的地址。 與上述兩種方式相比,這種方式使用起來(lái)不太方便。 每次修改和重新編譯應(yīng)用程序時(shí),都必須再次指定所有地址。 對(duì)于沒有源代碼的應(yīng)用,建議使用此類保護(hù)。

    使用MAP文件來(lái)定義受保護(hù)代碼的邊界有一個(gè)很重要的優(yōu)點(diǎn)。幾乎所有具有局部變量或使用堆棧來(lái)保存寄存器和/或中間計(jì)算結(jié)果的過(guò)程或函數(shù)都有所謂的序言(prologue)和結(jié)尾(epilogue),它們相應(yīng)地位于編譯過(guò)程或函數(shù)的開頭和結(jié)尾:

    push ebp      mov ebp, esp   \ prologue
    push 00        / 
    push ebx      /
    
    ...
    
    pop ebx       pop ecx        \ epilogue
    pop ebp        /
    ret           /

    由于現(xiàn)代編譯器的工作方式,代碼標(biāo)記從不包含功能的序言和結(jié)尾。即使開始和結(jié)束之間的 CheckPassword 函數(shù)的整個(gè)代碼都包含在標(biāo)記中。對(duì)于黑客來(lái)說(shuō),只需要修改函數(shù)的序言讓程序不執(zhí)行虛擬化代碼可能就足夠了。 對(duì)于CheckPassword 函數(shù),可以按如下方式完成:

    mov eax, 1
    ret

    注意:

    如果使用MAP文件來(lái)選擇用于虛擬化的代碼片段,則序言和結(jié)尾也被虛擬化,從而顯著提高受保護(hù)程序的防黑客能力。此外,一個(gè)虛擬化函數(shù)是從另一個(gè)虛擬化函數(shù)調(diào)用的,控件在它們之間傳輸而不實(shí)際跳轉(zhuǎn)到被調(diào)用函數(shù)的地址(在這種情況下,調(diào)用是一個(gè)簡(jiǎn)單的跳轉(zhuǎn)到虛擬機(jī)解釋器的字節(jié)碼內(nèi)的另一個(gè)地址)。 這也加強(qiáng)了對(duì)程序的保護(hù),因?yàn)楹诳蛯?duì)入口點(diǎn)的所有修改都沒有用。使用虛擬化函數(shù)時(shí),只有在從未受保護(hù)或變異的代碼片段調(diào)用受保護(hù)函數(shù)時(shí),才會(huì)將控制權(quán)轉(zhuǎn)移到虛擬化函數(shù)的入口點(diǎn)。

    下篇文章將給大家介紹 VMProtect 準(zhǔn)備項(xiàng)目之使用MAP文件,敬請(qǐng)期待~   如果你有任何問題或建議,請(qǐng)?jiān)谙路搅粞脏蕖?/p>

    VMProtect 在線訂購(gòu) 低至¥710 (稅前),立即購(gòu)買正版VMProtect>>>


    想要購(gòu)買正版授權(quán),或者獲取更多VMProtect相關(guān)信息的朋友可以點(diǎn)擊" 咨詢?cè)诰€客服 "~

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

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