DW翻譯系列:Dependency Walker處理的模塊類型

文章網址:http://www.dependencywalker.com/help/html/dependency_types.htm


有以下幾種模塊依賴類型:

1. 隱式依賴(也叫加載時依賴,有時也不當地稱爲靜態依賴):模塊A在編譯、鏈接期間隱式地與模塊B中的a.lib鏈接,那麼模塊A的源碼就調用了B中的一個或多個函數。模塊B就是模塊A的加載時依賴。不管A在運行期間有沒有調用B中的函數,B都會被加載進內存。模塊B將會被列在模塊A的導入表中。


2. 延遲加載依賴:模塊A在編譯、鏈接期間延遲與模塊B中的a.lib鏈接,那麼模塊A的源碼就調用了B中的一個或多個函數。模塊B就是一個動態依賴,只有當A在運行時調用了B時,B才被加載。模塊B列在了A的延遲加載導入表中。


3. 前向依賴:模塊A在編譯、鏈接期間與模塊B中的a.lib鏈接,那麼模塊A的源碼就調用了B中的一個或多個函數。而其中的函數實際上又調用了模塊C中的函數。那麼B,C都是A的依賴,但是隻有模塊B被列進了A的導入表中。


4. 顯式依賴(也稱爲動態依賴或運行時依賴):模塊A沒有在編譯、鏈接期間隱式地與模塊B鏈接。A在運行時通過調用LoadLibrary類型的函數調用了B,則B就成了A的運行時依賴,但不被列在A的任何人表中。這種類型的依賴在OCXs,COM對象和Visual Basic程序常見。


5. 系統鉤子依賴(也叫注入依賴):當另一個程序在進程中拋出了一個特定事件(像鼠標事件)時,這種依賴就產生了。當進程去處理那個事件時,操作系統就往進程注入了這個模塊去處理事件。被注入的模塊實際上不是任何其它模塊的依賴,但它確實駐留在進程的地址空間中。


DW完全支持以上幾種技術加載的模塊。在DW中打開一個模塊,就能檢測出1、2、3三種類型的模塊。4、5兩種類型的依賴需要在運行時被解析,這也是DW2.0的新特性。關於解析,參考使用應用程序解析檢測動態依賴一節。

發佈了33 篇原創文章 · 獲贊 17 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章