- DUMPBIN 允许您列出 DLL 或可执行文件的依赖项 Windows.
- /DEPENDENTS 选项显示文件所需的库。
- 可以自动使用 PowerShell的 用于复杂的任务。
- 其他有用的选项包括 /HEADERS、/EXPORTS 或 /IMPORTS。
在调查应用程序行为、调试库加载问题或仅仅试图了解可执行文件正常运行所需的附加组件时,分析 DLL 依赖项是一项常见任务。在这种情况下,微软的 DUMPBIN 工具已成为 Windows 中处理二进制文件人员最有用的资源之一,无论是在开发、取证、逆向工程还是软件维护领域。
垃圾桶,也称为 Microsoft COFF Binary File Dumper,是一个命令行工具 comandos 包含在 Visual Studio 开发环境中。它允许您检查与 COFF(通用对象文件格式)格式兼容的所有类型的二进制文件,例如可执行文件 (.exe)、静态库 (.lib) 或动态库 (.dll)。其最常用的功能包括: 查看 DLL 或可执行文件运行所需的依赖项.
查看DLL依赖关系的目的是什么?
当应用程序抛出错误,指出无法找到特定的 DLL 时,人们通常首先会怀疑系统上没有该依赖项。在这种情况下使用 DUMPBIN 可以 准确识别 DLL 文件需要哪些其他库,帮助解决软件加载或分发错误。
此外,在企业环境或重新分发整个应用程序的项目中,了解需要哪些 DLL 可以让您正确地将它们包含在安装程序中或验证它们是否已经存在于目标系统中。
如何访问 DUMPBIN
运行此工具最简单的方法是 打开 系统符号 Visual Studio 开发人员此环境已经配置了所有必要的环境变量,包括 DUMPBIN 路径。
例如,对于 Visual Studio 2017,可执行文件通常位于如下路径:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\bin\Hostx86\x86
进入该目录后,您现在就可以按如下方式调用该工具:
dumpbin.exe /dependents 路径\to\file.dll
DUMPBIN /DEPENDENTS 命令
选择 /受抚养人 负责展示 指定文件从中导入函数的 DLL 库列表也就是说,它依赖于这些才能正常运转。
此命令不提供有关正在使用的特定功能的信息(这是/IMPORTS 的用途),但它是 确定应该存在哪些 DLL 在系统中,以便执行不会失败。
运行生成的输出的真实示例:
dumpbin /DEPENDENTS MathClient.exe
提供如下输出:
文件 MathClient1322.exe 的转储文件类型:可执行映像映像具有以下依赖项:MathLibrary.dll MSVCP140D.dll VCRUNTIME140D.dll ucrtbased.dll KERNEL32.dll
这些文件名表示 MathClient1322.exe 可执行文件所需的 DLL。
其他有用的 DUMPBIN 选项
DUMPBIN 工具包括 为开发人员提供一些有用的选项 以及安全分析师等:
- /标题: 显示文件头。包括文件类型、体系结构等信息。
- /符号: 列出表格 符号,对于调试或逆向工程很有用。
- /出口: 显示文件导出的函数。也就是说,那些可以被其他可执行文件或 DLL 使用的函数。
- /进口: 显示从其他 DLL 导入的特定函数。
PowerShell 的实际示例
除了从命令提示符中使用 DUMPBIN 之外,还可以从 PowerShell 中使用,从而轻松集成到自动化脚本或工作流中。
一个典型的例子是检查 DLL 的依赖关系,例如 zipfldr.dll
位于 C:\Windows\System32
脚本如下:
cd "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\bin\Hostx86\x86" .\dumpbin.exe /dependents C:\Windows\System32\zipfldr.dll
此命令从 PowerShell 运行 DUMPBIN 没有任何问题,并直接显示依赖项。
使用脚本获取导出函数的名称
除了依赖关系之外,还可能想知道 函数导出 DLL例如,在开发需要直接调用外部函数的应用程序时,这一点至关重要。
在 PowerShell 中,您可以使用选项运行 DUMPBIN /出口 然后处理输出以获取函数名称。例如:
$内容= .\dumpbin.exe /exports C:\Windows\System32\zipfldr.dll
然后通过删除空行来清理输出,并使用字符串来识别以 ordinal hint RVA name
并以 Summary
.
这种自动化方法可以轻松执行审计、文档或验证,而无需目视检查。
DUMPBIN 的替代品
在某些情况下,你可能不想依赖 Visual Studio。 以 DLL 形式作为依赖项的外部替代方案 允许您从 Visual Basic 表单(例如 recursosvisualbasic.com.ar 提供的表单)检索文件的依赖项列表。
此 DLL 返回一个数组,其中包含应用程序所依赖的文件的名称,可以使用以下命令调用:
列表 = Obj.Dependencies
此外,它还允许您打开一个对话框来选择目标文件并使用注册 DLL regsvr32
.
分析和调试中的用例
DUMPBIN 的用途不仅限于基本的软件开发。分析师 恶意软件安全研究人员甚至 IT 技术人员使用它来 检测缺失的依赖项验证文件签名或对可疑二进制文件进行逆向工程。
例如,使用命令 /ALL
您可以获取有关文件的所有可用信息,包括依赖项、反汇编的 ASM、指令和节。但是,更建议 使用单独的命令 并以更有条理的方式分析信息。
一种常见的做法是与 /SECTIONS
在分析可执行文件并试图了解其内部结构时,有助于识别哪些部分包含代码、数据、资源等。
对字节世界和一般技术充满热情的作家。我喜欢通过写作分享我的知识,这就是我在这个博客中要做的,向您展示有关小工具、软件、硬件、技术趋势等的所有最有趣的事情。我的目标是帮助您以简单而有趣的方式畅游数字世界。