Dependency Walker简介

如果软件复杂,那么依赖关系的整理是一个很严重的问题,软件设计到的模块可能存在多个版本,可能在不断的改动;如果版本对不上或者有依赖文件丢失,

那么就需要这样一个工具来协助判断哪里出了问题.

软件的主窗口截图如下:

截图的标号分别对应于:

1、  常用工具栏

工具栏按钮功能分别是

Open(打开): 打开(dll/exe)以查看依赖关系,或者保存的视图

Save(保存): 保存打开的文件视图,保存的视图可以重新打开

Copy(拷贝): 将选中的内容拷贝为文本

Auto Expand(自动展开): 自动展开依赖树的所有节点

View Full Path(显示路径): 显示所有被依赖模块的绝对路径

Undecorate C++ Function(去除c++修饰符):所有的c++函数都被编译器进行修饰改名,这个按钮用于查看在头文件中声明的名字;关于c++的编译器改名可以google了解详情

View Modules In External Viewer(在新的试图中查看依赖关系): 同时查看多个dll/exe时可以用单独的窗口来查看各自的依赖关系

Properties(查看属性): 查看文件属性,等同于右键点击文件在弹出菜单里选择属性进行查看

Start Profile():[似乎是开始分析运行时依赖关系,未使用过此功能]

Stop Profile(停止分析)

2、  依赖树

3、  调用接口列表

4、  所有接口列表

上边两个图分别是在目录树上选择不同文件时的状态;在第一个截图里;选择的是根节点 Swscale-2.dll;右侧的函数列表可以看到右上侧的列表是空的,

因为根节点被调用的关系在这里无法看到;右下侧的窗口则是当前选中的节点(根节点)的所有导出函数列表;当我们选择根节点下的子

节点时(根节点依赖子节点里的那些文件);右上侧显示子节点的导出函数有哪些是被子节点的父节点所调用;右下侧的窗口则显示所有子节点的导出函数;

如果我们展开子节点到更下一级子节点进行查看,右侧窗口的逻辑仍然与前述保持一致.

5、  所有依赖的模块列表

6、  警告和出错消息

我们从Swscale-2.dll所在目录下移除AVUTIL-52.dll;然后重新打开Swscale-2.dll;

我们会看到一个弹出窗口告知遇到了依赖问题;依赖问题可能是依赖的文件找不到;或者依赖文件的版本不对;关掉对话框;我们会在左上侧的依赖树窗口

看到红色的子节点;表明该文件找不到或者版本不对;如果是版本不对;那么可以查看模块的绝对路径来看当前依赖的版本在那个目录下;

备注:

1、最后需要强调的是,这个软件有32位和64位两个版本;32位的版本只能查看32位dll/exe的依赖关系;64位软件只能查看64位dll/exe的依赖关系;

2、现在很多软件是使用多种语言进行开发的;但Dependency Walker支持的不仅仅是c/c++; .net/vb等编写的windows平台的模块都可以进行分析;

但对于其他语言起到的作用比较有限;

3、更多内容可以查看软件的帮助文档;

Ref:

http://www.dependencywalker.com/

时间: 2024-10-29 03:45:48

Dependency Walker简介的相关文章

Windows下程序打包发布时的小技巧(使用Dependency Walker侦测不理想,改用VS自带的dumpbin则万无一失,还可查看dll导出的函数)

Windows下开发的应用程序在发布时,需要将其依赖的一些动态链接库一起打进安装包里面去.这个时候,快速确定这个程序到底依赖哪些动态链接库变得非常重要.很久以前写过一篇关于Qt程序安装包制作的博客,里面介绍了Dependency Walker这个小工具.但是实际操作起来并不理想,因为Dependency Walker将exe文件依赖的所有动态库以及动态库所依赖的动态库都列出来了.看得你一脸懵逼: 你很难分清楚:倒底哪些DLL是需要打包的,哪些DLL是系统自带的.而作为打包过程中的一个小步骤,我根

Dependency Walker使用说明 转载

转载地址:http://blog.csdn.net/swort_177/article/details/5426848?reload 在Windows世界中,有无数块活动的大陆,它们都有一个共同的名字——动态链接库.现在就让我们走进这些神奇的活动大陆,找出它们隐藏已久的秘密吧! 初窥门径:Windows的基石 随便打开一个系统目录,一眼望去就能看到很多扩展名DLL的文件,这些就是经常说的“动态链接库”,DLL是Dynamic Link Library(即“动态链接库”)的缩写.从Microsof

Dependency Walker使用说明[转]

在Windows世界中,有无数块活动的大陆,它们都有一个共同的名字--动态链接库.现在就让我们走进这些神奇的活动大陆,找出它们隐藏已久的秘密吧! 初窥门径:Windows的基石 随便打开一个系统目录,一眼望去就能看到很多扩展名DLL的文件,这些就是经常说的"动态链接库",DLL是Dynamic Link Library(即"动态链接库")的缩写.从Microsoft公司推出首个版本的Windows以来,动态链接库就一直是这个操作系统的基础. 1.看看DLL里有什么

关于DLL调试的两个工具(dependency walker和dumpbin.exe)

Dependency Walker工具: 该工具用来查看dll依赖库和依赖库内的函数. 左上角:模块依赖树,表示该dll所依赖的其它dll文件 右上角:导入函数,即与当前根模块有关系的函数(即根模块或根模块的子模块使用到的模块) 右中间:导出函数,即当前模块所有可以导出的函数(即可以被外界调用的函数). 下面:模块列表视图,用于显示所依赖的dll模块的信息,如果加载错误会红色标出 最下面:日志视图,显示出错模块的信息 具体查看:如何使用查看DLL神器DependencyWalker 另一篇文章生

Dependency Walker +Everything查找DLL文件加载不上的问题

软件开发过程中,经常会出现DLL文件模块加载不上的情况,这时候通常采用Dependency Walker软件查找问题,直接打开Dependency Walker安装包运行depends.exe即可. 在Dependency Walker界面上主要分为三块:左侧树状栏.右侧函数输入输出分栏.底侧模块栏. 左侧树状栏:该DLL依赖了那些DLL 右侧函数输入输出分栏:该DLL调用函数列表 底侧模块栏:依赖的DLL具体说明情况 DLL文件模块加载不上最常见的情况就是依赖的DLL文件不存在,这时候错误提示

Dependency Walker使用说明

在Windows世界中,有无数块活动的大陆,它们都有一个共同的名字——动态链接库.现在就让我们走进这些神奇的活动大陆,找出它们隐藏已久的秘密吧! 初窥门径:Windows的基石 随便打开一个系统目录,一眼望去就能看到很多扩展名DLL的文件,这些就是经常说的“动态链接库”,DLL是Dynamic Link Library(即“动态链接库”)的缩写.从Microsoft公司推出首个版本的Windows以来,动态链接库就一直是这个操作系统的基础. 1.看看DLL里有什么 与其用晦涩的专业术语来解决DL

C++应用程序性能优化(一)——应用程序性能优化简介

C++应用程序性能优化(一)--应用程序性能优化简介 一.程序性能优化简介 1.程序性能优化简介 在计算机发展的早期阶段,硬件资源相对而言是非常昂贵的,CPU运行时间与内存容量给程序开发人员设置了极大限制.因此,早期的程序对运行性能和内存空间占用的要求是非常严格的,很多开发人员为了减少1%的CPU运行时间,为减少几十个甚至几个字节而不懈努力.随着计算机技术的快速发展,硬件资源变得相对便宜.但如果认为软件开发时,程序的性能优化不再重要,硬件将解决性能问题也是片面的.计算机硬件的发展解决了部分软件的

DLL详解及Denpendcy Walker的使用

下面的文章被N次转载,为了尊重原作,\(^o^)/~,贴出最早发布这篇文章的地址及作者.   动态链接库 Windows的活动大陆 2006-07-26 09:21  作者:狂ρκ来源:电脑爱好者 在Windows世界中,有无数块活动的大陆,它们都有一个共同的名字--动态链接库.现在就让我们走进这些神奇的活动大陆,找出它们隐藏已久的秘密吧! 初窥门径:Windows的基石 随便打开一个系统目录,一眼望去就能看到很多扩展名DLL的文件,这些就是经常说的"动态链接库",DLL是Dynami

shellcode在栈溢出中的利用与优化

0x00 前言 在<Windows Shellcode学习笔记--shellcode的提取与测试>中介绍了如何对shellcode作初步优化,动态获取Windows API地址并调用,并通过程序实现自动提取机器码作为shellcode并保存到文件中. 弹框实例shellcode的bin文件已上传至github,地址如下: https://github.com/3gstudent/Shellcode-Generater/blob/master/shellcode.bin 注:shellcode.