• <menu id="w2i4a"></menu>
  • logo VMPsoft中文文檔
    文檔首頁>>VMPsoft中文文檔>>什么是 VMProtect

    什么是 VMProtect


    VMProtect 是新一代的軟件保護實用程序。VMProtect 支持 Delphi、Borland C Builder、Visual C/C++、Visual Basic(本機)、Virtual Pascal 和 XCode 編譯器。同時 VMProtect 有一個內置的反匯編程序,可以與 Windows 和 Mac OS X 可執(zhí)行文件一起工作,還可以鏈接由編譯器創(chuàng)建的 MAP 文件,以快速選擇要保護的代碼片段。

    為了輕松實現(xiàn)應用程序保護任務的自動化,VMProtect 實施了一種內置腳本語言。VMProtect 完全支持從 Windows 2000 開始的 Windows 系列的 32/64 位操作系統(tǒng),以及從版本 10.6 開始的 Mac OS X。重要的是,無論目標平臺如何,VMProtect 都支持所有范圍的可執(zhí)行文件,也就是說,Windows 版本可以處理 Mac OS X 版本的文件,反之亦然。

    VMProtect 的基石原則是通過使應用程序代碼和邏輯非常復雜以供進一步分析和破解,從而有效地保護應用程序代碼免受檢查。VMProtect 應用的主要軟件代碼保護機制是:虛擬化、變異和涉及應用程序代碼變異與后續(xù)虛擬化的組合保護。

    VMProtect 中使用的虛擬化方法的關鍵優(yōu)勢在于,執(zhí)行虛擬化代碼片段的虛擬機被嵌入到受保護應用程序的結果代碼中。因此,受 VMProtect 保護的應用程序不需要第三方庫或模塊即可運行。VMProtect 允許使用多個不同的虛擬機來保護同一應用程序的不同代碼片段,從而導致更復雜的破解過程,因為黑客現(xiàn)在必須分析多個虛擬機的架構。

    VMProtect 中應用的應用程序代碼變異方法基于混淆——一個向應用程序代碼添加各種過多的“垃圾”命令、代碼的“死”部分、隨機條件跳轉的過程。它還會改變原始命令并將某些操作的執(zhí)行轉移到堆棧。

    VMProtect 與其他軟件保護器的主要區(qū)別在于它能夠使用不同的方法保護代碼的不同部分:部分代碼可以虛擬化,另一部分進行混淆,關鍵片段使用組合方法進行保護。

    為了防止防病毒軟件的誤報,VMProtect 的注冊版本使用Taggant庫,該庫使用許可證所有者的證書對受保護的文件進行簽名。

    VMProtect 的另一個獨特功能是將水印嵌入到應用程序代碼中。水印可以明確識別程序的被黑副本的官方所有者,因此可以對他或她采取某些措施。

    VMProtect 有 3 個版本:

    • 精簡版;
    • 專業(yè)的;
    • 最終的;

    下表列出了某些 VMProtect 版本的功能差異:

    功能 VMProtect 版本區(qū)別
    簡化版 專業(yè)版 終極版
    保護方法
    突變 + + +
    虛擬化 + + +
    Ultra(變異+虛擬化) + + +
    控制臺版本
    + +
    保護選項
    內存保護 + + +
    導出保護 + + +
    資源保護 + + +
    封裝 + + +
    調試器檢測 + + +
    虛盒檢測 + + +
    服務功能
    水印
    + +
    腳本語言
    + +
    許可制度

    +
    許可證管理器

    +
    文件保護

    +

     

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

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