翻譯|使用教程|編輯:郎婷|2023-04-24 10:41:03.377|閱讀 152 次
概述:VMProtect是新一代軟件保護實用程序。本文分享VMProtect入門使用教程之準備項目,歡迎查閱~
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
VMProtect是新一代軟件保護實用程序。VMProtect支持德爾菲、Borland C Builder、Visual C/C++、Visual Basic(本機)、Virtual Pascal和XCode編譯器。
同時,VMProtect有一個內置的反匯編程序,可以與Windows和Mac OS X可執行文件一起使用,并且還可以鏈接編譯器創建的MAP文件,以快速選擇要保護的代碼片段。
為了輕松實現應用程序保護任務的自動化,VMProtect實現了內置腳本語言。VMProtect完全支持Windows系列的32/64位操作系統(從Windows 2000開始)和Mac OSX(從版本10.6開始)。重要的是,無論目標平臺如何,VMProtect都支持所有范圍的可執行文件,即Windows版本可以處理Mac OS X版本的文件,反之亦然。
VMProtect 是保護應用程序代碼免遭分析和破解的可靠工具,但只有在正確構建應用程序內保護機制并且沒有可能破壞整個保護的典型錯誤的情況下才能最有效地使用。
讓我們一起來看一個非常簡單的應用程序,它只包含一個表單(Form1),一個文本元素(Edit1)和一個按鈕(Button1)。該應用程序的工作方式如下:單擊Button1時,應用程序會檢查輸入的密碼是否正確并顯示相應的消息。
我們使用非常簡單的算法檢查密碼:第一步,我們將其轉換為數字形式,然后計算除以 17 的余數。如果輸入的密碼的數字表示除以余數,則密碼正確17 等于 13。Delphi 上的密碼檢查程序實現如下所示:
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;
選擇要保護的過程和函數可以通過三種方式完成:
使用 MAP 文件定義受保護代碼的邊界還有一個更重要的優勢。幾乎所有具有局部變量或使用堆棧保存寄存器和/或中間計算結果的過程或函數都有所謂的序言和結語,它們相應地位于已編譯過程或函數的開頭和結尾:
push ebp \ mov ebp, esp \ prologue push 00 / push ebx / ... pop ebx \ pop ecx \ epilogue pop ebp / ret /
由于現代編譯器的工作方式,代碼標記從不包含函數的序言和結尾。即使開始和結束之間的 CheckPassword 函數的整個代碼都包含在標記中。黑客修改函數的序言就足以使虛擬化代碼永遠不會被執行。對于 CheckPassword 函數,這可以按如下方式完成:
mov eax, 1 ret
如果使用 MAP 文件來選擇用于虛擬化的代碼片段,則序言和結尾也會被虛擬化,從而提高受保護程序的防黑客攻擊能力。此外,如果一個虛擬化函數被另一個虛擬化函數調用,則控制權在它們之間轉移而不實際跳轉到被調用函數的地址(在這種情況下,調用是簡單地跳轉到虛擬機解釋器字節碼中的另一個地址)。這也加強了對程序的保護,因為黑客對入口點所做的所有修改都變得毫無用處。使用虛擬化函數時,僅當從未受保護或變異的代碼片段調用受保護函數時,才會將控制權轉移到虛擬化函數的入口點。
以上便是本篇文章的分享,如果您有任何疑問或者想獲取更多產品試用/授權/價格信息,請點擊VMProtect了解。
加密解密技術QQ群:766135708
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn