所謂動態跟蹤分析是利用SOFTICE或TRW2000一步一步地單步執行軟體。
基本介紹
- 中文名:動態跟蹤分析
- 性質:分析
- 屬性:跟蹤
- 所謂粗跟蹤:即在跟蹤時要大塊大塊地跟蹤
進行動態跟蹤分析的原因,如何有效地進行動態跟蹤分析,
進行動態跟蹤分析的原因
為什麼要對軟體進行動態跟蹤分析呢?這主要是因為:
1、許多軟體在整體上完成的功能,一般要分解成若干模組來完成,而且後一模組在執行時,往往需要使用其前一模組處理的結果,這一結果我們把它叫中間結果。如果我們只對軟體本身進行靜態地分析,一般是很難分析出這些中間結果的。而只有通過跟蹤執行前一模組,才能看到這些結果。另外,在程式的運行過程中,往往會在某一地方出現許多分支和轉移,不同的分支和轉移往往需要不同的條件,而這些條件一般是由運行該分支之前的程式來產生的。如果想知道程式運行到該分支的地方時,去底走向哪一分支,不進行動態地跟蹤和分析是不得而知的。
2、有許多軟體在運行時,其最初執行的一段程式往往需要對該軟體的後面各個模組進行一些初始始化工作,而沒有依賴系統的重定位。
3、有許多加密程式為了阻止非法跟蹤和閱讀,對執行代碼的大部分內容進行了加密變換,而只有很短的一段程式是明文。加密程式運行時,採用了逐塊解密,逐塊執行和方法,首先運行最初的一段明文程式,該程式在運行過程中,不僅要完成阻止跟蹤的任務,而且還要負責對下一塊密碼進行解密。顯然僅對該軟體的密碼部分進行反彙編,不對該軟體動態跟蹤分析,是根本不可能進行解密的。
如何有效地進行動態跟蹤分析
由於上述原因,在對軟體靜態分析不行的條件下,就要進行動態分析了。哪么如何有效地進行動態跟蹤分析呢?一般來說有如下幾點:
1、對軟體進行粗跟蹤
所謂粗跟蹤,即在跟蹤時要大塊大塊地跟蹤,也就是說每次遇到調用CALL指令、重複操作指令REP.循環操作LOOP指令以及中斷調用INT指令等,一般不要跟蹤進去,而是根據執行結果分析該段程式的功能。
2、對關鍵部分進行細跟蹤
對軟體進行了一定程度的粗跟蹤之後,便可以獲取軟體中我們所關心的模組或程式段,這樣就可以針對性地對該模組進行具體而詳細地跟蹤分析。一般情況下,對關鍵代碼的跟蹤可能要反覆進行若干次才能讀懂該程式,每次要把比較關鍵的中間結果或指令地址記錄下來,這樣會對下一次分析有很大的幫助。軟體分析是一種比較複雜和艱苦的工作,上面的幾點分析方法,只是提供了一種基本的分析方法。要積累軟體分析的經驗需要在實踐中不斷地探索和總結。