代碼保護軟件 VMProtect 用戶手冊:分析,破解和保護軟件
VMProtect是一款虛擬機保護軟件,是目前最為流行的保護殼之一。VMProtect將保護后的代碼放到虛擬機中運行, 這將使分析反編譯后的代碼和破解變得極為困難。除了代碼保護,VMProtect還可以生成和驗證序列號,設置過期時間,限制免費更新等等。
靜態(tài)和動態(tài)分析
一個軟件產(chǎn)品可以使用靜態(tài)或動態(tài)分析方法來進行分析。靜態(tài)分析意味著保護破解算法基于反匯編結(jié)果分析或受保護應用程序的反編譯。破解加密或動態(tài)變化的可執(zhí)行文件需要動態(tài)分析,因為使用靜態(tài)分析來達到此目的是十分困難的。
對于動態(tài)分析,正在破解的程序在調(diào)試器框架中執(zhí)行。這樣的話,程序運行期間發(fā)生的一切都可以由調(diào)試器控制。在動態(tài)分析期間,破解者使用調(diào)試模式逐個繞過程序的所有保護算法,特別是注冊密鑰生成和檢查過程。 另一個經(jīng)常使用的動態(tài)分析工具是跟蹤破解程序查詢的文件,系統(tǒng)服務,端口和外部設備。
保護應用程序免受破解的主要工具是軟件保護程序。大多數(shù)保護器提供的保護基于原始可執(zhí)行文件的打包和/或加密,重點放在保護解包/解密過程上。
這種算法通常不足以提供可靠的保護。如果應用程序受到打包保護,黑客可以在解包器完成其工作后立即進行內(nèi)存轉(zhuǎn)儲,從而輕松獲取原始解壓縮文件。此外,還有多種自動化工具可以破解最流行的保護器。 加密也是如此:在獲得適當?shù)脑S可證密鑰(通常是合法購買)之后,破解者可以解密受保護的代碼部分。
反調(diào)試技術
某些軟件保護程序使用許多反調(diào)試技術。但是,它們中的每一個都會影響受保護程序的性能。此外,反調(diào)試方法僅對動態(tài)分析有效,對靜態(tài)分析完全無用。 更重要的是,現(xiàn)代保護器使用的所有反調(diào)試方法都是眾所周知的,而且破解者已經(jīng)編程了許多程序來避免或繞過反調(diào)試方法?;顒颖O(jiān)視器完全不受內(nèi)置反調(diào)試保護的影響。
混淆和虛擬化
保護應用程序更有效的方法是混淆和虛擬化,這會使受保護應用程序代碼的分析變得很復雜。通常,這些保護方法的效率基于人為因素:代碼越復雜,應用程序使用的資源越多,破解者就越難理解程序邏輯,從而無法破解保護。
混淆通過向應用程序添加過多指令來復雜化應用程序的代碼。虛擬化將源代碼轉(zhuǎn)換為由特殊解釋器執(zhí)行的字節(jié)碼,該解釋器使用一組特定命令模擬虛擬機。 因此,虛擬化導致所得代碼的復雜性高且不可簡化,并且如果正確應用,則使用這種方法保護的代碼不包含顯式恢復原始代碼的方法。 所以,虛擬化的主要優(yōu)點是代碼的虛擬化片段在執(zhí)行期間不會轉(zhuǎn)換為機器語言命令,這反過來又阻止了破解者獲取應用程序的原始代碼。
虛擬化片段的逆向工程被簡化為分析虛擬機的體系結(jié)構(gòu),為虛擬機模仿的處理器的相應體系結(jié)構(gòu)構(gòu)建反匯編器,以及分解反匯編代碼。正確實現(xiàn)的虛擬機使得創(chuàng)建反匯編程序非常困難。虛擬化的唯一缺點是執(zhí)行速度相對較低,因此該方法僅應用于對執(zhí)行速度不重要的代碼部分。
如今,大多數(shù)保護軟件都沒有太多關注混淆和虛擬化,這允許破解者以自動或半自動模式移除這種保護?,F(xiàn)代保護軟件的另一個瓶頸是使用未記錄的Windows功能,這會導致在較新版本的OS中受保護應用程序的運行受限。
VMProtect是新一代的軟件保護系統(tǒng),將保護后的代碼放到虛擬機中運行,這將使分析反編譯后的代碼和破解變得極為困難。