Dependency Walker,探寻DLL和EXE文件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lsq2902101015/article/details/46911457

在WIndows系统中,或者在我们进行Windows程序开发时,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL(Dynamic Link Library)文件。当我们执行某一个程序时,相应的DLL文件就会被调用。

但我们如何知道哪些DLL被调用,DLL里究竟有多少函数,又如何知道EXE调用了哪个DLL的哪些函数呢?其实,这个问题并不难解决,我们可以通过Dependency Walker工具把这些看个通透。


一、下载Dependency Walker


Dependency Walker 是 Microsoft Visual C++ 中提供的非常有用的 PE 模块依赖性分析工具。主要功能如下:

  • 查看 PE 模块的导入模块
  • 查看 PE 模块的导入和导出函数
  • 动态剖析 PE 模块的模块依赖性
  • 解析 C++ 函数名称

Dependency Walker的另一个重要用途就是分析DLL(动态链接库)的详细信息。


首先通过以下地址下载Dependency Walker工具:

扫描二维码关注公众号,回复: 4933910 查看本文章

Dependency Walker主页:http://www.dependencywalker.com/

32位操作系统下载地址:http://www.dependencywalker.com/depends22_x86.zip

64位操作系统下载地址:http://www.dependencywalker.com/depends22_x64.zip

下载完成,解压后,点击depends.exe即可使用。


二、使用Dependency Walker


1、探寻DLL文件


下载解压后,点击运行depends.exe,选择菜单栏“File→Open(文件→打开)”,然后在文件选择框中选中需要分析的DLL文件并打开,此处直接选择depends.dll,打开如下图所示:



在depends界面的左侧,可以看到树状栏中列出了这个DLL调用了哪些其他的DLL;右侧两个分栏分别显示了函数输入及输出表,函数输出表即该DLL提供给其他EXE或者DLL调用的函数的总列表。


2、探寻EXE文件


重复上述操作,我们在depends中打开depends.exe文件,界面左侧的树状列表显示的是depends.exe调用的DLL列表,如下图。并且,如果展开这些DLL分支,还会发现其他DLL,这就说明,被调用的DLL文件还有可能再调用其他的DLL。



3、探查运行时模块的依存关系


要查看模块的依存关系,只需在 Dependency Walker 中打开模块。选择“查看”(View) ->“完整路径”(Full Paths) 来查看依赖文件的完整路径名。

要探查模块,请选择“探查”(Profile) ->“启动探查”(Start Profiling)。提供模块需要的任何输入,选中框“在记录文件名时使用完整路径”(Use full paths when logging filenames),然后点击“确定”(Ok),如下图。



最后,可以使用“文件”(File)->“另存为”(Save As) 保存 Dependency Walker 的输出。应使用 .dwi 扩展名保存该文件。


另外,此过程将显示工作应用程序中的许多失败(例如 MPR.DLL);在大多数系统上,不应存在这些库,因此也不必在意。


另一篇博文写的不错,出门右转:http://http://blog.csdn.net/swort_177/article/details/5426848


才疏学浅,欢迎指正。

猜你喜欢

转载自blog.csdn.net/lsq2902101015/article/details/46911457
今日推荐