翻譯|使用教程|編輯:郎婷|2023-04-24 15:16:20.130|閱讀 231 次
概述:VMProtect是新一代軟件保護實用程序。本文分享VMProtect入門使用教程準備項目之SDK功能,歡迎查閱~
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
VMProtect是新一代軟件保護實用程序。VMProtect支持德爾菲、Borland C Builder、Visual C/C++、Visual Basic(本機)、Virtual Pascal和XCode編譯器。
同時,VMProtect有一個內置的反匯編程序,可以與Windows和Mac OS X可執(zhí)行文件一起使用,并且還可以鏈接編譯器創(chuàng)建的MAP文件,以快速選擇要保護的代碼片段。
為了輕松實現應用程序保護任務的自動化,VMProtect實現了內置腳本語言。VMProtect完全支持Windows系列的32/64位操作系統(從Windows 2000開始)和Mac OSX(從版本10.6開始)。重要的是,無論目標平臺如何,VMProtect都支持所有范圍的可執(zhí)行文件,即Windows版本可以處理Mac OS X版本的文件,反之亦然。
VMProtect 是保護應用程序代碼免遭分析和破解的可靠工具,但只有在正確構建應用程序內保護機制并且沒有可能破壞整個保護的典型錯誤的情況下才能最有效地使用。
SDK 功能可以集成到受保護應用程序的源代碼中,以設置受保護區(qū)域的邊界,以檢測調試器或虛擬化工具。
VMProtectBegin
void VMProtectBegin(const char *MarkerName);
識別代碼保護區(qū)域的開始的標記,必須在受保護代碼塊的第一個命令(或過程或函數調用)之前調用 VMProtectBegin。MarkerName 定義標記的名稱,類似于 VMProtect 中的“VMProtectMarker”+MarkerName。例如,標記 VMProtectBegin('CheckRegistration') 將看起來像 VMProtectMarker “CheckRegistration”。如果未設置標記的名稱,則以“VMProtectMarker”+marker_serial_number 的形式為其指定一個唯一名稱。你可以在 VMProtect 中設置給定受保護塊的編譯類型。
VMProtectBeginVirtualization
void VMProtectBeginVirtualization(const char *MarkerName);
識別具有預定義 "虛擬化 "編譯類型的代碼保護區(qū)域的開始的標記。MarkerName 定義了標記的名稱,在進一步使用 VMProtect 期間,無法更改此標記的編譯類型。
VMProtectBeginMutation
void VMProtectBeginMutation(const char *MarkerName);
識別具有預定 "突變 "編譯類型的代碼保護區(qū)域的開始的標記。MarkerName 定義了標記的名稱,在進一步使用 VMProtect 期間,無法更改此標記的編譯類型
VMProtectBeginUltra
void VMProtectBeginUltra(const char *MarkerName);
識別預定義的“超(虛擬化+變異)”編譯類型標識代碼保護區(qū)開始的標記。MarkerName 定義標記的名稱。在進一步使用 VMProtect 期間,無法更改此標記的編譯類型。
VMProtectBeginVirtualizationLockByKey
void VMProtectBeginVirtualizationLockByKey(const char *MarkerName);
使用預定義的“虛擬化”編譯類型和啟用“鎖定到密鑰”選項標識代碼保護區(qū)開始的標記。MarkerName 定義標記的名稱。在進一步使用 VMProtect 期間,無法更改此標記的編譯類型。
VMProtectBeginUltraLockByKey
void VMProtectBeginUltraLockByKey(const char *MarkerName);
使用預定義的“虛擬化”編譯類型和啟用“鎖定到密鑰”選項標識代碼保護區(qū)開始的標記。MarkerName 定義標記的名稱。在進一步使用 VMProtect 期間,無法更改此標記的編譯類型。
VMProtectEnd
void VMProtectEnd(void);
識別代碼保護區(qū)結束的標記。對 VMProtectEnd 的調用必須放在受保護代碼塊的最后一個命令(過程或函數調用)之后。
VMProtectIsProtected
bool VMProtectIsProtected(void);
如果文件由 VMProtect 處理,則 MProtectIsProtected 函數返回 True。
VMProtectIsDebuggerPresent
bool VMProtectIsDebuggerPresent(bool CheckKernelMode);
VMProtectIsDebuggerPresent函數允許檢測應用程序在調試器下的啟動。結果(真/假)可以被應用內保護機制處理。如果CheckKernelMode=False,該函數檢查用戶模式的調試器(OllyDBG, WinDBG等)。如果CheckKernelMode=True,用戶模式和內核模式的調試器(SoftICE,Syser等)。當保護驅動時,CheckKernelMode的值沒有意義,因為驅動總是在內核模式下工作,所以內核模式調試器的存在總是被檢查。
VMProtectIsVirtualMachinePresent
bool VMProtectIsVirtualMachinePresent(void);
VMProtectIsVirtualMachinePresent函數允許檢測應用程序在虛擬機工具下的啟動: VMware, Virtual PC, VirtualBox, Sandboxie. 結果(真/假)可以用應用內保護機制來處理。
VMProtectIsValidImageCRC
bool VMProtectIsValidImageCRC(void);
VMProtectIsValidImageCRC函數檢測可執(zhí)行模塊在進程的內存中被改變的事實(只檢查不可改變的代碼和數據段)。結果(真/假)可以用應用內保護機制來處理。
VMProtectDecryptStringA
const char * VMProtectDecryptStringA(const char *Value);
VMProtectDecryptStringA函數解密了ANSI字符串常量--Value。要解密常數,你必須把它列入受保護對象的列表中。
VMProtectDecryptStringW
const wchar_t * VMProtectDecryptStringW(const wchar_t *Value);
VMProtectDecryptStringW函數對Unicode字符串常數--Value進行解密。要解密該常量,你必須將其納入受保護對象的列表中。
VMProtectFreeString
bool VMProtectFreeString(const void *Value);
VMProtectFreeString 函數釋放為解密字符串分配的動態(tài)內存。釋放內存不是必須的,但如果你這樣做 – 你必須使用此功能。如果 VMProtectDecryptStringA/VMProtectDecryptStringW 第二次使用相同的參數而不破壞先前解密的字符串,則不會分配額外的內存。
以上便是本篇文章的分享,如果您有任何疑問或者想獲取更多產品試用/授權/價格信息,請點擊VMProtect了解。
加密解密技術QQ群:766135708
本站文章除注明轉載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn