DW翻譯係列:Dependency Walker處理的模塊類型
文章網址:https://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的新特性。關於解析,參考使用應用程序解析檢測動態依賴一節。
最後更新:2017-04-03 12:55:06