眾所周知:Windows的很多應用程序都是不但有可執行的EXE文件,而且還需要有輔助模塊,這些模塊形形色色,品類頗雜,其中名聲最大的就數動態連接庫(DLL)了,另外還有:ocx、sys等等.像應用程序可以分成16位、32位、64位程序一樣,模塊也分為16位、32位、和64位模塊.因刪除應用程序或可執行文件時,相關的動態鏈結庫或模塊往往不能刪除干凈,時間一長,形成許多使人生厭的"垃圾文件".所以,通常很多使用windows的人對DLL文件的關心都集中在研究哪些是有用的,哪些是無用的,以期準確地刪除無用部分,即完成所謂的系統減肥,不過,這不是本次討論的中心,我們的目的是從另一個方面研究模塊文件,下面提到的,就是一個這樣的工具.
a.簡介
Windows2000專業版的Support Tools中有一個專門分析模塊文件的工具,其英文名字是:Dependency Walker,直譯是"從屬漫步者",這個名字無論如何都透著別扭,不符合中文表達的特點.通過使用驗證和查看參考資料,把它進行引申,翻譯為"模塊解析工具"較為合適些.與上述為系統減肥的目的不同,模塊解析工具可以探測出:模塊的從屬關系、建立者、功能接口、調用關系、甚至生成模塊文件所使用的編程語言、程序鏈結時用的鏈結器版本等等信息,解析出的從屬關系是用一個類似目錄樹的圖標格式顯示出來的.當然還能顯示運行模塊至少需要使用哪些關聯文件,連同文件的完整路徑、基本地址、版本號、計算機類型、Debug信息以及其它等等信息,可謂是方方面面、應有盡有.
從這些信息的性質不難看出,對系統管理員、系統測試者、編程人員、自動安裝腳本編寫人員來說,這類信息用處大些.對普通的使用者,用處小些.但也非無可所用.普通使用者可以用這些解析結果來排除由于模塊引起的系統故障,模塊導致的系統故障主要包括:
1.模塊丟失.
2.無效模塊.
3.執行的出口/入口搭配錯誤.
4.循環錯誤.
5.模塊與計算機類型的搭配錯誤.
盡管該工具是win2k的支持工具,但也能運行在win9x、winNT3.51、winNT4.0的操作系統環境中,甚至還包括windows CE.目前Dependency Walker的最新版本是2.0.該版本只支持解析32位或64位模塊,已經不支持16位模塊了.
b.用法略談
與其它工具不同,這個工具只有GUI界面的版本而沒有命令行版本.如果你已經安裝了Support Tools,可以這樣打開:"開始->程序->Support Tools->Tools->Dependency Walker ".這也是一個英文界面的工具,并有英文幫助文件供參考.下面簡單介紹一下使用方法:
1.首先用鼠標點擊”File|Open”.
2.打開一個要解析的EXE、DLL、OCX或SYS文件,找好之后,鼠標雙擊文件名.
3.雙擊后,原來空空如也的窗口立刻"熱鬧"起來,顯示出對選定模塊的解析結果.
一共分成五個窗口,以五種顏色的矩形線框來標識,
1.紅色線框的窗口,里面的內容以類似目錄樹的表示方法,顯示的是模塊之間的從屬關系,點擊節點上的"+"或"-"號,可以將分支展開或折疊.這實際上也顯示了模塊的調用關系,例如大名鼎鼎的KERNEL32.DLL就不止在一處出現,也就是說,這個模塊被多次或多處調用.
2.藍色線框的窗口.顯示的是選定模塊(即紅色線框中的藍色光標選定的模塊)的信息:這些信息有:序號,線索號,函數及登錄指針.
3.綠色線框中顯示的是以C++語言為基準解析的模塊信息:項目與上面相同但表示方法不同,最明顯的是函數部分,列出了假定原程序是以C++環境開發時模塊使用的C++函數名稱,這對于編程人員進行模塊分析很有用處.其余的與上面相似.
4.這是與第一個紅色線框內容對應窗口,但所包含的信息更多更細.該窗口顯示信息整理結果如下表:
項目名稱 | 簡介 | 項目名稱 | 簡介 |
模塊名稱 | DLL文件名稱 | 首地址 | 以十六進制表示的地址 |
文件時間標志 | 文件建立時間 | 真實地址 | (未見顯示有效信息) |
連接時間標志 | 文件鏈結時間 | 實際大小 | 以十六進制表示 |
文件大小 | 無需解釋 | 裝入次序 | 一般僅顯示是否裝入 |
屬性 | 即只讀隱藏等屬性 | 文件版本 | 本行以下無需解釋 |
連接校驗和 | 鏈結檢驗 | 產品版本 | |
真實校驗和 | 亦用于檢驗目的 | 圖標文件版本 | |
CPU類型 | 無需解釋 | 鏈接器版本 | |
子系統 | 所屬系統 | 操作系統版本 | |
符號 | 其作用不詳 | 子系統版本 |
5.黃色矩形線框是顯示錯誤信息的,如果你選定一個16位的模塊文件,由于該工具不支持16位模塊解析,這個窗口就會顯示相關的錯誤信息.
當解析一個模塊文件時,菜單上顯示的項目比上圖會多出3項:Edit、windows和Profile,其中的Edit很容易使用.Windiws的作用更不用說了.只是Profile比較生疏,圖2中將它以青色橢圓框標出,這是一個建立所謂"輪廓文件"的選項.
對圖2顯示的菜單項目,這里難以逐一介紹用法,實際上也無完全介紹的必要,所以只介紹較主要的2項:
1.View:這一項確定顯示哪些解析信息,打開后的情況如圖3: 可供顯示的項目有很多種類,有關于計算機環境方面的信息,例如系統信息等;也有窗口布局方面的,如工具條狀態條等;更多的還是關于選定模塊的信息,你根據需要以鼠標點擊相應的項目,就可以將對應信息顯示出來.
2. Profile:建立"輪廓文件",圖4是點擊該項后出現的對話框.只要輸入相應的參數并對列出項目選定,就可以產生一個相應的輪廓文件.關于輪廓文件的作用以及相關的知識,請自己查找相應的參考資料.
C.結語
Dependency Walker能解析的信息很多,特別是對程序設計中關于動態連接庫程序的調試用處很大.該工具提供詳細英文幫助文件.幫助文件在Dependency Walker打開的時候可以使用,但即使不打開Dependency Walker,也可以單獨使用,打開幫助文件的路徑可以在Tools Help中找到.
文章來源于領測軟件測試網 http://www.kjueaiud.com/