用于查看PE依賴關(guān)系,Microsoft Visual C++ 中提供的非常有用的 PE 模塊依賴性分析工具。Windows下開發(fā)比較頭疼的一個問題就是依賴問題,程序常常因為一個dll文件不存在而無法正常運行。我使用Dependency Walker這個工具,到無法正常運行的機器上查看缺少了哪些依賴。使我很輕松地解決了問題。
Dependency Walker優(yōu)缺點:
打開此工具直接將你的exe拖拽進(jìn)去即可,然后窗口中會顯示exe依賴的dll
優(yōu)點是:他會找到發(fā)布需要最少的dll,有利于我們做體積小的發(fā)布包。
缺點是:雖然我們做程序的一般都會把path系統(tǒng)變量配置好。這個工具比較傻,只會在system32下找,并不能找到所有dll的真正路徑。
Dependency Walker怎么用?
1、打開DependencyWalker軟件
2、在左上角的“文件”菜單中找到“打開”按鈕,或者直接使用快捷鍵Ctrl+O打開。
3、在“打開”對話框中,找到一個DLL文件選中后,就可以查看此DLL文件的信息了。這里我們查看的是System32文件夾中的kernel32,這是操作系統(tǒng)中的一個比較重要的DLL文件。
3、在界面左上部分的樹狀圖中可以看到該DLL文件調(diào)用了哪些其他的文件中的內(nèi)容。單擊這些文件可以查看這些文件各自的導(dǎo)入與導(dǎo)出函數(shù)。
4、右上方一共有兩個部分,其中,PI是Parent Import Function List View的簡寫,E是Export Function List View的簡寫。通過這兩個部分,用戶可以觀察到該DLL文件從哪些其他文件中調(diào)用了函數(shù)(PI),又提供了哪些接口,讓其他的程序調(diào)用(E)。
5、需要特別注意的是,DependencyWalker中提供的函數(shù)名是C語言可以調(diào)用的函數(shù)名。
6、中下側(cè)模塊中的內(nèi)容與左上方的樹狀圖是對應(yīng)的。該模塊詳細(xì)描述了要這次檢查的DLL文件所調(diào)用的其他文件詳細(xì)信息。
7、最下側(cè)的模塊是信息模塊,如果DependencyWalker在解析某個DLL文件時出錯,錯誤信息會顯示在該模塊中。就如下圖打開的一個帶有錯誤的DLL文件。
8、在左上方的“文件”菜單內(nèi)可以“保存”或“另存為”本次對DLL文件的解析結(jié)果。
9、在保存或另存為界面中,可以將解析結(jié)果保存到DWI格式的文件。保存成此類的文件可以直接用DependencyWalker快速識別并打開。
10、到這里DependencyWalker的主要功能就介紹完畢了。下面再介紹兩個該軟件實用的附加功能。在上方“查看”菜單中的“系統(tǒng)信息”中可以看到自己當(dāng)前的系統(tǒng)信息。
11、在上方“查看”菜單中的“屬性”中可以看到當(dāng)前被解析DLL文件的屬性。
DependencyWalker是個非常實用的軟件。其操作非常簡單,細(xì)心些就好。
主要功能如下:
查看 PE 模塊的導(dǎo)入模塊。
查看 PE 模塊的導(dǎo)入和導(dǎo)出函數(shù)。
動態(tài)剖析 PE 模塊的模塊依賴性。
解析 C++ 函數(shù)名稱。