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