軟體的黑盒和白盒分析方法
在無法獲得程式原始碼檔案的情況下,町以通過黑盒分析和白盒分析的方法來分
析一個可執行程式。黑盒分析不能深入可執行程式的內部結構,儀通過剖析器的輸
入和輸…來推斷其內部工作原理和流程。而白盒分析則是通過軟體逆向分析,對可執
行程式反}L編,通過研究程式的彙編代碼來確定其工怍原理和流程。
傳統的黑盒分析技術相對'm言容易實施,而且可以快速瞭解軟體的大致工作流程
程。
僅憑傳統的黑盒分
析方法難以準確地瞭解軟體的工作過程以及所使用的秘密資訊。
採用白盒分析技術,通過仔細地閱讀程式的彙編代碼,分
析軟體的每一個操作,從而獲得軟體的整體工作流程以及所使用的各種秘密資訊。但
是白盒分析也有其弱點,即容易陷入細枝末節,難以對軟體的工作流程建立1個清晰
和直觀的印象。氹此我們採用黑盒分析和白盒分析相結合的策略,通過兩者的優勢互
補,高效而準確地分析軟體。
在軟體的白盒分析中,主要是對軟體的二進位代碼進行分析,這其中
也包含兩種不同的分析技術,
靜態分析技術
動態分析技術
。所謂靜態分析,是指不
運行軟體,而僅僅觀察軟體的,_進位代碼而進行的分析,這種分析不涉及軟體在運行
過程中可能從外界擷取的資料,僅僅是做邏輯上的判斷。
靜態分析的最大優點,是對
沒有運行起來的軟體的-進位代碼進行掃描,得到其中的函數調用關係,劃分出功能
模組,並通過一定的手段分析出部分資料結構,再結合手工分析,從而得到軟體的一
個整體架構圖。但由於軟體並不是一個靜態實體,它的行為相邏輯流程還要依賴於
程式的輸入輸出和外界控制,因此,在靜態分析中我們在得不到資料的情況下,對軟
件的行為進行精確判斷,在多數情況下是困難的。此外,由於涉及到作業系統的系統
調用和外部的庫檔案調用,程式碼中不可能實現所有的功能,我們還需要觀察其調
用外部函數的行為,然而僅憑靜態分析難以得出外部函數執行的結果[zl。
動態分析技術正是為了彌補靜態分析的不足之處而產生的調試技術,這種分析使
用調試器運行待分析的程式,通過單步跟蹤和設定斷點,並觀察程式運行過程中記憶體
和寄存器等的資料變化情況,研究程式的具體行為。動態分析技術具有以'優勢:
(l)藉助CPU執行指令的準確性,確保了程式啟動並執行流程,不會因為人工分析的
錯誤而把程式的功能邏輯判斷錯誤。
(2)可以在較高層而上抽象分析,即對於某砦函數調用,並不需要分析其具體實現,
而只需要令其執行並觀察執行前後數槲結果變化即町。
(3)在執行期問根據需要更改程式的資料甚至指令,以實現更高效的分析。
但純粹的動態分析也有缺陷:程式在調試器中運行,有'町能產生不穩定的結果,
甚至有可能導致電腦的系統崩潰。同時,動態分析不能分析整個程式的全貌,對整
個程式的結構分析不能得到令入滿意的結果。
因此,我們採用了動態分析和靜態分析結合的策略,在程式運行前先進行靜態分
析,進行模組功能的劃分,然後在此基礎上進行動態調試。這樣,我們既可以一直觀清
晰的看到軟體的結構,義可吼動態觀察軟體的行為,從而極大地提高了軟體逆向分析的效率
Powered by Zoundry