軟件分析、破解與保護
靜態和動態分析
一個軟件產品可以使用靜態或動態分析方法來進行分析。靜態分析意味著保護破解算法基于反匯編結果分析或受保護應用程序的反編譯。破解加密或動態變化的可執行文件需要動態分析,因為使用靜態分析來達到此目的是十分困難的。
對于動態分析,正在破解的程序在調試器框架中執行。這樣的話,程序運行期間發生的一切都可以由調試器控制。在動態分析期間,破解者使用調試模式逐個繞過程序的所有保護算法,特別是注冊密鑰生成和檢查過程。 另一個經常使用的動態分析工具是跟蹤破解程序查詢的文件,系統服務,端口和外部設備。
保護應用程序免受破解的主要工具是。大多數保護器提供的保護基于原始可執行文件的,重點放在保護解包/解密過程上。
這種算法通常不足以提供可靠的保護。如果應用程序受到打包保護,黑客可以在解包器完成其工作后立即進行內存轉儲,從而輕松獲取原始解壓縮文件。此外,還有多種自動化工具可以破解最流行的保護器。 加密也是如此:在獲得適當的許可證密鑰(通常是合法購買)之后,破解者可以解密受保護的代碼部分。
反調試技術
一些軟件保護器使用多種反調試技術。但是,它們中的每一個都會影響受保護程序的性能。此外,反調試方法僅對動態分析有效,對靜態分析完全無效。更重要的是,現代保護者使用的所有反調試方法都是眾所周知的,破解者已經編寫了許多實用程序來避免或繞過它們。活動監視器完全不受內置反調試保護的影響。
混淆和虛擬化
保護應用程序的更有效方法是,這會使受保護應用程序代碼的分析變得復雜。通常,這些保護方法的高效率是基于人為因素的:代碼越復雜,應用程序使用的資源越多,破解者就越難理解程序邏輯,從而無法破解和保護。
混淆通過向應用程序添加過多的指令來“糾纏”應用程序的代碼。虛擬化將源代碼轉換為由特殊解釋器執行的,該解釋器模仿具有特定命令集的虛擬機。因此,虛擬化導致生成代碼的復雜度高且不可降低,如果應用得當,用這種方法保護的代碼不包含顯式恢復原始代碼的方法。因此,虛擬化的主要優點是代碼的虛擬化片段在執行過程中不會轉換為機器語言命令,這反過來又可以防止破解者獲取應用程序的原始代碼。
的架構,為虛擬機模擬的處理器的相應架構構建反匯編程序,并分析反匯編代碼。正確實現的虛擬機使得為其創建反匯編程序成為一項困難的任務。虛擬化的唯一缺點是執行速度比較慢,所以這種方法應該只適用于對執行速度不重要的部分代碼。
如今,大多數保護者并沒有過多關注混淆和虛擬化,這允許破解者在自動或半自動模式下移除此類保護。現代保護程序的另一個瓶頸是使用未記錄的 Windows 功能,這會導致受保護應用程序在較新版本的操作系統中或啟用 DEP 時的操作受限。
以上便是本篇文章的分享,如果您有任何疑問或者想獲取更多產品試用/授權/價格信息,請點擊VMProtect了解。