DLL/EXE查看工具Dumpbin

一般情况下,我们需要查看一个DLL或EXE中的包含的函数或是依赖的函数之类的信息,可以使用VS自带的工具dumpbin;

可以直接在命令行下输入dumpbin就可以查看他的使用说明,如果未显示,可以先运行VS安装目录下的vcvarsall.bat来设置一下环境变量就可以了。

[cpp] view plaincopy

  1. Microsoft Windows XP [版本 5.1.2600]
  2. (C) 版权所有 1985-2001 Microsoft Corp.
  3. C:/Documents and Settings/Administrator>"D:/Program Files/Microsoft Visual Studi
  4. o 9.0/VC/vcvarsall.bat"
  5. Setting environment for using Microsoft Visual Studio 2008 x86 tools.
  6. C:/Documents and Settings/Administrator>dumpbin
  7. Microsoft (R) COFF/PE Dumper Version 9.00.21022.08
  8. Copyright (C) Microsoft Corporation.  All rights reserved.
  9. 用法: DUMPBIN [选项] [文件]
  10. 选项:
  11. /ALL
  12. /ARCHIVEMEMBERS
  13. /CLRHEADER
  14. /DEPENDENTS
  15. /DIRECTIVES
  16. /DISASM[:{BYTES|NOBYTES}]
  17. /ERRORREPORT:{NONE|PROMPT|QUEUE|SEND}
  18. /EXPORTS
  19. /FPO
  20. /HEADERS
  21. /IMPORTS[:文件名]
  22. /LINENUMBERS
  23. /LINKERMEMBER[:{1|2}]
  24. /LOADCONFIG
  25. /OUT:文件名
  26. /PDATA
  27. /PDBPATH[:VERBOSE]
  28. /RANGE:vaMin[,vaMax]
  29. /RAWDATA[:{NONE|1|2|4|8}[,#]]
  30. /RELOCATIONS
  31. /SECTION:名称
  32. /SUMMARY
  33. /SYMBOLS
  34. /TLS
  35. /UNWINDINFO
  36. C:/Documents and Settings/Administrator>

DUMPBIN 选项

/ALL

显示除代码反汇编外的所有可用信息。使用 /DISASM 显示反汇编。可以与 /ALL 一起使用 /RAWDATA :NONE 来省略文件的原始二进制详细资料。

只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。

/ARCHIVEMEMBERS

显示有关库成员对象的最少信息。

只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。

/CLRHEADER file

此处: file 用 /clr 生成的图像文件。

备注

CLRHEADER 显示有关在任何托管程序中使用的 .NET 头的信息。输出显示 .NET 头及其中各节的位置和大小(以字节计)。

File Format Spec.doc 描述 .NET 头中的信息。NET SDK 将 File Format Spec.doc 安装在 Tools Developers Guide 目录中。

只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。

/DIRECTIVES

转储图像中由编译器生成的 .directive 节。

只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。

/DEPENDENTS

转储图像从中导入函数的 DLL 的名称。不要转储导入函数名。

只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。

/DISASM

显示代码段的反汇编,如果出现在文件中则使用符号。

只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。

/EXPORTS

显示从可执行文件或 DLL 导出的所有定义。

只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。

/FPO

显示框架指针优化 (FPO) 记录。

只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。

/HEADERS

显示文件头和每节的头。当用于库时,显示每个成员对象的头。

只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。

/IMPORTS[:file ]

显示导入到可执行文件或 DLL 的 DLL 列表(静态链接的和延迟加载 )和上述每个 DLL 的各个导入。

可选 file 规范允许指定仅显示某个 DLL 的导入。例如:

dumpbin /IMPORTS:msvcrt.dll

显示的输出与 /EXPORTS 输出相似。

只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。

/LINENUMBERS

显示 COFF 行号。如果对象文件是用程序数据库 (/Zi)、C7 兼容 (/Z7) 或仅限行号 (/Zd) 编译的,则它包含行号。如果可执行文件或 DLL 是与生成调试信息 (/DEBUG) 链接的,则它包含 COFF 行号。

只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。

/LINKERMEMBER[:{1|2}]

显示库中定义的公共符号。指定参数 1 将按对象顺序显示符号及其偏移量。指定参数 2 将显示对象的偏移量和索引号,然后按字母顺序列出这些符号及每个符号的对象索引。若要两个输出都获得,指定不带数字参数的 /LINKERMEMBER。

只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。

/LOADCONFIG

转储 IMAGE_LOAD_CONFIG_DIRECTORY 结构,此结构是由 Windows NT 加载程序使用并在 WINNT.H 中定义的可选结构。

只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。

/OUT:filename

指定输出的 filename 。默认情 况下,DUMPBIN 将信息显示到标准输出。

只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。

/PDBPATH[:VERBOSE] filename

此处: filename 要为其查找匹配 .pdb 文件的 .dll 或 .exe 文件名。

VERBOSE(可选)

报告曾尝试在其中定位 .pdb 文件的所有目录。

补充:

/PDBPATH 将沿调试器搜索 .pdb 文件的同一路径搜索计算机,并将报告哪些 .pdb 文件(若有)和 filename 中指定的文件相对应。

使用 Visual Studio 调试器时可能会遇到问题,这是因为调试器对调试文件的不同版本使用 .pdb 文件。

/PDBPATH 将沿下列路径搜索 .pdb 文件:

  • 检查可执行文件驻留的位置。
  • 检查写入可执行文件的 PDB 的位置。这通常是图像被链接时的位置。
  • 沿 Visual Studio IDE 中配置的搜索路径检查。
  • 沿 _NT_SYMBOL_PATH 和 _NT_ALT_SYMBOL_PATH 环境变量中的路径检查。
  • 在 Windows 目录中检查。

/PDATA

仅用于 RISC 处理器。

此选项从图像或对象转储异常表 (.pdata)。

只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。

/RAWDATA[:{1|2|4|8|NONE[, number ]]

此选项显示文件中每节的原始内容。参数控制显示格式,如下所示:


参数


结果


1


默认值。内容以十六进制字节显 示,如果内容具有打印的表示形式,则还显示为 ASCII 字符。


2


内容显示为十六进制的 2 字节值。


4


内容显示为十六进制的 4 字节值。


8


内容显示为十六进制的 8 字节值。


NONE


取消显示原始数据。此参数对控制 /ALL 输出很有用。


Number


显示的行被设置为每行具有 number 个值的宽度。

只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。

/RELOCATIONS

此选项显示对象或图像中的任何重定位。

只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。

/SECTION:section

此选项限制与指定的 section 有关的信息的输出。

只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。

/SUMMARY

此选项显示有关节的最少信息(包括总大小)。如果未指定其他选项,则此选项为默认值。

只有 /HEADERS DUMPBIN 选项可用于由 /GL 编译器选项产生的文件。

/SYMBOLS

此选项显示 COFF 符号表。符号表存在于所有对象文件中。而对于图像文件,只有当它是与 /DEBUG 链接的时,它才包含 COFF 符号表。

可以通过查阅 winnt.h(IMAGE_SYMBOL 和 IMAGE_AUX_SYMBOL)或 COFF 文档,可找到有关 /SYMBOLS 输出含义的附加信息。


[cpp] view plaincopy

  1. C:/Documents and Settings/Administrator>dumpbin -exports E:/WorkStation/CPD项目/程序/UpdataModule/UpdataLibSrv/Results/UpdataLibSrv.dll
  2. Microsoft (R) COFF/PE Dumper Version 9.00.21022.08
  3. Copyright (C) Microsoft Corporation.  All rights reserved.
  4. Dump of file E:/WorkStation/CPD项目/程序/UpdataModule/UpdataLibSrv/Results/UpdataLibSrv.dll
  5. File Type: DLL
  6. Section contains the following exports for UpdataLibSrv.dll
  7. 00000000 characteristics
  8. 4C2C0DC3 time date stamp Thu Jul 01 11:38:43 2010
  9. 0.00 version
  10. 1 ordinal base
  11. 1 number of functions
  12. 1 number of names
  13. ordinal hint RVA      name
  14. 1    0 00011005 Add = @ILT+0([email protected]@[email protected])
  15. Summary
  16. 1000 .data
  17. 1000 .idata
  18. 2000 .rdata
  19. 1000 .reloc
  20. 1000 .rsrc
  21. 4000 .text
  22. 10000 .textbss
  23. C:/Documents and Settings/Administrator>

其中,这一部分为我们重点需要的部分:

[cpp] view plaincopy

  1. ordinal hint RVA      name
  2. 1    0 00011005 Add = @ILT+0([email protected]@[email protected])

这个Add就是我们的DLL中导出的函数名,而且可以看出,我的DLL是使用标准调用的方式导出的.

[cpp] view plaincopy

  1. C:/Documents and Settings/Administrator>dumpbin -imports E:/WorkStation/CPD项目/  
  2. 程序/UpdataModule/UpdataLibSrv/Results/UpdataLibSr  
  3. v.dll  
  4. Microsoft (R) COFF/PE Dumper Version 9.00.21022.08  
  5. Copyright (C) Microsoft Corporation.  All rights reserved.  
  6.   
  7. Dump of file E:/WorkStation/CPD项目/程序/UpdataModule/UpdataLibSrv/Results/UpdataLibSrv.dll  
  8. File Type: DLL  
  9.   Section contains the following imports:  
  10.     MSVCR90D.dll  
  11.               10018218 Import Address Table  
  12.               100180E8 Import Name Table  
  13.                      0 time date stamp  
  14.                      0 Index of first forwarder reference  
  15.                   17F _crt_debugger_hook  
  16.                   1A8 _except_handler4_common  
  17.                   358 _onexit  
  18.                   2B0 _lock  
  19.                    BA __dllonexit  
  20.                   424 _unlock  
  21.                    B0 __clean_type_info_names_internal  
  22.                    8E __CppXcptFilter  
  23.                   132 _adjust_fdiv  
  24.                   144 _amsg_exit  
  25.                   240 _initterm_e  
  26.                   23F _initterm  
  27.                    72 _CrtSetCheckCount  
  28.                   194 _decode_pointer  
  29.                   1A0 _encoded_null  
  30.                   1DB _free_dbg  
  31.                   2C2 _malloc_dbg  
  32.                   19F _encode_pointer  
  33.                    5C _CRT_RTC_INITW  
  34.     KERNEL32.dll  
  35.               1001816C Import Address Table  
  36.               1001803C Import Name Table  
  37.                      0 time date stamp  
  38.                      0 Index of first forwarder reference  
  39.                   266 GetTickCount  
  40.                   415 SetUnhandledExceptionFilter  
  41.                   43E UnhandledExceptionFilter  
  42.                   1A9 GetCurrentProcess  
  43.                   42D TerminateProcess  
  44.                   14C FreeLibrary  
  45.                   45C VirtualQuery  
  46.                   1F5 GetModuleFileNameW  
  47.                   223 GetProcessHeap  
  48.                   29D HeapAlloc  
  49.                   2A1 HeapFree  
  50.                   2F1 LoadLibraryA  
  51.                   220 GetProcAddress  
  52.                   4B5 lstrlenA  
  53.                   31A MultiByteToWideChar  
  54.                   47A WideCharToMultiByte  
  55.                    B4 DebugBreak  
  56.                   35A RaiseException  
  57.                   2D1 IsDebuggerPresent  
  58.                    CB DisableThreadLibraryCalls  
  59.                   2BD InterlockedExchange  
  60.                   421 Sleep  
  61.                   2BA InterlockedCompareExchange  
  62.                   354 QueryPerformanceCounter  
  63.                   1AD GetCurrentThreadId  
  64.                   1AA GetCurrentProcessId  
  65.                   24F GetSystemTimeAsFileTime  
  66.   Summary  
  67.         1000 .data  
  68.         1000 .idata  
  69.         2000 .rdata  
  70.         1000 .reloc  
  71.         1000 .rsrc  
  72.         4000 .text  
  73.        10000 .textbss  

可以看到我们的DLL中依赖的其他资源或是DLL中包含的函数,资源信息。

时间: 2024-11-05 14:38:40

DLL/EXE查看工具Dumpbin的相关文章

使用Visual Studio自带工具dumpbin查看动态链接库(.dll)导出函数

当我们需要查看一个dll或exe文件中的包含的函数或是依赖的函数之类的信息,可以使用Visual Studio自带的工具dumpbin来实现,使用方法为: 1/ 启动Visual Studio 命令行工具: 2/ 查看导出函数,执行 dumpbin /exports (dll或者exe文件路径) 3/ 查看依赖性,执行 dumpbin /dependents (dll或者exe文件路径) 4/ 可以使用 /out:(文件名)参数将打印信息输出到文本文件中.

【转】匹配dll(exe)和pdb方法

1. 静态检查windbg 调试工具包中有一个工具symchk.exe, 选项很多, 下面一个简单的用法可以检查一个 test.exe能不能找到与它匹配的PDB: 这是成功的情形. 下面来个失败的作为对比: 2. 如果已经在windbg内部, 可以通过下面的命令检查 最后一行说 MATCH, 肯定没问题. 3. 在windbg中(在VS中不行), 如果你100%确信源代码没有任何改动, 只不过被重新编译了一下.可以通过 .symopt +40 来关闭对GUID的强行检查. 从而load一个不匹配

Atitit.java 虚拟机的构成 与指令分类 与 指令集合 以及字节码查看工具javjap

Atitit.java 虚拟机的构成 与指令分类 与 指令集合 以及字节码查看工具javjap 1.1. 虚拟机的构成 java虚拟机--处理器.堆栈.寄存器.指令系统. 1 1.2. 虚拟机执行过程1 1.3. 约有250个指令2 2. JVM指令助记符 分类2 2.1. 变量到操作数栈:2 2.2. 算数指令3 2.3. 移位指令3 2.4. 逻辑指令4 2.5. 流程跳转指令4 2.6. Oo指令4 2.7. 运算指令 5 3. 查看指令反编译工具6 3.1.   分析java语言特性的一

MySQL之数据库对象查看工具mysqlshow

mysqlshow:数据库对象查看工具,用来快速查找存在哪些数据库.数据库中的表.表中的列或索引. 选项:--count    显示数据库和表的统计信息 -k         显示指定的表中的索引 -i         显示表的状态信息 不带任何参数显示所有数据库 [[email protected] mysql-5.6.30]# mysqlshow +--------------------+ |     Databases      | +--------------------+ | in

mysqlshow(数据库对象查看工具)

mysqlshow是mysql客户端对象查看工具,可以用来查看数据库.数据库中的表.表中的列.索引等. 1.mysqlshow命令的语法 shell > mysqlshow [options] [db_name [tbl_name [column_name]]] 如果不加任何选项,默认就是显示所有数据库. # mysqlshow -uroot -p Enter password: +--------------------+ | Databases | +--------------------

json格式化和查看工具

以前一直以来都觉得xml个可读性要比json的可读性好,后来使用了JSON Viewer这个小工具之后,发现自己错了.之前认为json的可读性差,完全是因为没有很好的查看工具.JSON Viewer这个小工具可以很方便的查看json数据. 点击Format可以方便的将凌乱的json格式化. 如果json格式不正确,能够得到很好的提示. 方便的查看键值对. 对数据内容进行查询.

推荐一个zookeeper信息查看工具

zookeeper信息查看工具 下载地址:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip 解压,打开: ZooInspector\build\zookeeper-dev-ZooInspector.jar 参考: http://blog.csdn.net/atco/article/details/13628523 转载请标明出处: 2015.6.30 版权声明:本文为博主原创文章,未经博主允许不得

grep文本查看工具及正则表达式

grep文本查看工具及正则表达式 grep:搜索及过滤文本工具: (根据用户所指定的"模式"搜索,过滤条件"对目标文件进行过滤性匹配):grep自带正则表达式引擎工具. 所谓模式:由正则表达式所得元字符及普通文本字符所编写出来的过滤条件"模式" grep:三种支持模式: grep:基本正则表达式 egrep:支持扩展正则表达式 fgrep :不支持正则表达式 三种支持模式因其可以(grep -E:切换扩展,egrep-G:切换基本,分别有以-F切换fgre

一款开源的 Android YUV 格式查看工具

1. YUVDroidTools 最近项目比较忙,好久没有写文章了,也没有为开源社区贡献点啥了,这个周末抽空整理了一下自己一直维护的一份基于 ffmpeg 的 YUV 格式转换代码,写了一个简单的 Android YUV 数据查看工具(代码完全开源),截图如下: 特性如下: (1)支持选择导入本地文件,支持实时显示 YUV 格式的图片,简单易用. (2)支持多种 YUV 格式,包括: YU12.YV12.NV21.NV12.YUYV422.YVYU422.YUV422P.UYVY422 等等.