軟件分析、破解與保護(hù)
靜態(tài)和動態(tài)分析
一個軟件產(chǎn)品可以使用靜態(tài)或動態(tài)分析方法來進(jìn)行分析。靜態(tài)分析意味著保護(hù)破解算法基于反匯編結(jié)果分析或受保護(hù)應(yīng)用程序的反編譯。破解加密或動態(tài)變化的可執(zhí)行文件需要動態(tài)分析,因?yàn)槭褂渺o態(tài)分析來達(dá)到此目的是十分困難的。
對于動態(tài)分析,正在破解的程序在調(diào)試器框架中執(zhí)行。這樣的話,程序運(yùn)行期間發(fā)生的一切都可以由調(diào)試器控制。在動態(tài)分析期間,破解者使用調(diào)試模式逐個繞過程序的所有保護(hù)算法,特別是注冊密鑰生成和檢查過程。 另一個經(jī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)儲,從而輕松獲取原始解壓縮文件。此外,還有多種自動化工具可以破解最流行的保護(hù)器。 加密也是如此:在獲得適當(dāng)?shù)脑S可證密鑰(通常是合法購買)之后,破解者可以解密受保護(hù)的代碼部分。
反調(diào)試技術(shù)
一些軟件保護(hù)器使用多種反調(diào)試技術(shù)。但是,它們中的每一個都會影響受保護(hù)程序的性能。此外,反調(diào)試方法僅對動態(tài)分析有效,對靜態(tài)分析完全無效。更重要的是,現(xiàn)代保護(hù)者使用的所有反調(diào)試方法都是眾所周知的,破解者已經(jīng)編寫了許多實(shí)用程序來避免或繞過它們?;顒颖O(jiān)視器完全不受內(nèi)置反調(diào)試保護(hù)的影響。
混淆和虛擬化
保護(hù)應(yīng)用程序的更有效方法是混淆和虛擬化,這會使受保護(hù)應(yīng)用程序代碼的分析變得復(fù)雜。通常,這些保護(hù)方法的高效率是基于人為因素的:代碼越復(fù)雜,應(yīng)用程序使用的資源越多,破解者就越難理解程序邏輯,從而無法破解和保護(hù)。
混淆通過向應(yīng)用程序添加過多的指令來“糾纏”應(yīng)用程序的代碼。虛擬化將源代碼轉(zhuǎn)換為由特殊解釋器執(zhí)行的字節(jié)碼,該解釋器模仿具有特定命令集的虛擬機(jī)。因此,虛擬化導(dǎo)致生成代碼的復(fù)雜度高且不可降低,如果應(yīng)用得當(dāng),用這種方法保護(hù)的代碼不包含顯式恢復(fù)原始代碼的方法。因此,虛擬化的主要優(yōu)點(diǎn)是代碼的虛擬化片段在執(zhí)行過程中不會轉(zhuǎn)換為機(jī)器語言命令,這反過來又可以防止破解者獲取應(yīng)用程序的原始代碼。
虛擬化片段的逆向工程被簡化為分析虛擬機(jī)的架構(gòu),為虛擬機(jī)模擬的處理器的相應(yīng)架構(gòu)構(gòu)建反匯編程序,并分析反匯編代碼。正確實(shí)現(xiàn)的虛擬機(jī)使得為其創(chuàng)建反匯編程序成為一項(xiàng)困難的任務(wù)。虛擬化的唯一缺點(diǎn)是執(zhí)行速度比較慢,所以這種方法應(yīng)該只適用于對執(zhí)行速度不重要的部分代碼。
如今,大多數(shù)保護(hù)者并沒有過多關(guān)注混淆和虛擬化,這允許破解者在自動或半自動模式下移除此類保護(hù)?,F(xiàn)代保護(hù)程序的另一個瓶頸是使用未記錄的 Windows 功能,這會導(dǎo)致受保護(hù)應(yīng)用程序在較新版本的操作系統(tǒng)中或啟用 DEP 時的操作受限。
以上便是本篇文章的分享,如果您有任何疑問或者想獲取更多產(chǎn)品試用/授權(quán)/價(jià)格信息,請點(diǎn)擊VMProtect了解。