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

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

  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 输出含义的附加信息。

  1. 示例:
  1. 查看导出:
  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.  
  5. Dump of file E:/WorkStation/CPD项目/程序/UpdataModule/UpdataLibSrv/Results/UpdataLibSrv.dll
  6.  
  7. File Type: DLL
  8.  
  9. Section contains the following exports for UpdataLibSrv.dll
  10.  
  11. 00000000 characteristics
  12. 4C2C0DC3 time date stamp Thu Jul 01 11:38:43 2010
  13. 0.00 version
  14. 1 ordinal base
  15. 1 number of functions
  16. 1 number of names
  17.  
  18. ordinal hint RVA name
  19.  
  20. 1 0 00011005 Add = @ILT+0(?Add@@YGHHH@Z)
  21.  
  22. Summary
  23.  
  24. 1000 .data
  25. 1000 .idata
  26. 2000 .rdata
  27. 1000 .reloc
  28. 1000 .rsrc
  29. 4000 .text
  30. 10000 .textbss
  31.  
  32. C:/Documents and Settings/Administrator>

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

  1. ordinal hint RVA      name
  2. 1    0 00011005 Add = @ILT+0(?Add@@YGHHH@Z)

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

查看导入:

  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中包含的函数,资源信息.

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

  1. Linux的.a、.so和.o文件 windows下obj,lib,dll,exe的关系 动态库内存管理 动态链接库搜索顺序 符号解析和绑定 strlen函数的汇编实现分析

    Linux的.a..so和.o文件 - chlele0105的专栏 - CSDN博客 https://blog.csdn.net/chlele0105/article/details/23691147 ...

  2. C# 版dll 程序集合并工具

    C# 版dll 程序集合并工具 最近要开发一个控件给同事用,开发中会引用一些第三方DLL,这样交给用户很不方便,希望的效果是直接交付一个DLL文件.网上找了一些资料. 1.       使用 Cost ...

  3. 【调试】DLL EXE 调试技巧

    0.随便说点 最近因为一些原因一直都没有更新博客,从今天开始要逐渐恢复了,也是对自己的鞭策. 1.本文目标 本文要说在有DLL 和 EXE源码的情况下调试DLL 和 EXE, 工具是VC++2010, ...

  4. C# 反编译-Reflector 反混淆-De4Dot 修改dll/exe代码-reflexil

    反编译工具 Reflector 破解版下载地址:http://pan.baidu.com/s/15UwJo 使用方法:略 反混淆工具De4Dot 开源软件 下载地址http://pan.baidu.c ...

  5. windows下apk查看工具的原理

    游戏出了版本之后,提供给渠道,有部分渠道会修改包名(当他们内部系统做出调整后,可能会改包名),这个时候我又需要知道包名.之前没办法,试图反编译apk,发现失败了.然后就安装apk到手机上,手机上再下载 ...

  6. Linux的.a、.so和.o文件 windows下obj,lib,dll,exe的关系

    Linux的.a..so和.o文件 - chlele0105的专栏 - CSDN博客 https://blog.csdn.net/chlele0105/article/details/23691147 ...

  7. WPF - 模板查看工具:Show Me The Template及如何查看第三方主题

    原文:WPF - 模板查看工具:Show Me The Template及如何查看第三方主题 在学习WPF的模板(DataTemplate.ItemsPanelTemplate.ControlTemp ...

  8. 制作dll自动注册工具

    记录一个简单的dll自动注册工具制作:主要用到的是DllRegisterServer()方法,其实我们平常注册dll文件内部都会调用这个方法. 这里我就直接写在主程序里面了,需要注意的地方也直接在代码 ...

  9. c#:Reflector+Reflexil 修改编译后的dll/exe文件

    不知道大家有没有这样的经历:现场实施时测试出一个bug,明明知道某个dll/exe文件只要修改一二行代码即可,但手头没有开发环境,紧急情况下,可以用reflector + reflexil 临时直接修 ...

随机推荐

  1. linux技巧---创建应用快捷方式

    linux中启动或关闭应用有时候比较麻烦,你必须cd到该应用的可执行脚本的目录中再执行该脚本,不能在任意目录下开启或关闭应用..当然,设置了环境变量path可以解决在任意目录下开启应用的问题,但是每个 ...

  2. linux入门系列2--CentOs图形界面操作及目录结构

    上一篇文章"linux入门系列1--环境准备及linux安装"直观演示了虚拟机软件VMware和Centos操作系统的安装,按照文章一步一步操作,一定都可以安装成功.装好系统之后, ...

  3. 关于MySQL幻读的实验

    该实验基于 CentOS 7 + MySQL 5.7 进行 打开两个窗口连接到MySQL 第一个连接的事务我们命名为  T1 第二个连接的事务我们命名为 T2 T2 发生在 T1 的 O1 操作结束以 ...

  4. 【原创】(十六)Linux内存管理之CMA

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

  5. ffmpeg参数编码大全

    ffmpeg version N-49044-g89afa63 Copyright (c) 2000-2013 the FFmpeg developers built on Jan 19 2013 2 ...

  6. python之对象回收机制

    python中,当程序执行完毕之后,python的垃圾回收机制就会将所有对象回收,清除占用的内存 请看如下代码 class Parent(): def __init__(self,name): sel ...

  7. SliverAppBar 介绍及使用

    SliverAppBar控件可以实现页面头部区域展开.折叠的效果,类似于Android中的CollapsingToolbarLayout.先看下SliverAppBar实现的效果,效果图如下: Sli ...

  8. tomcat启动时检测到循环继承而栈溢出的问题:Caused by: java.lang.IllegalStateException: Unable to complete the scan for annotations for web application [/test] due to a StackOverflowError. Possible root causes include

    最近在公司更新一个老项目的时候,发现部署项目后tomcat报错,错误如下: Caused by: java.lang.IllegalStateException: Unable to complete ...

  9. chrome最耐看的主题

    google chrome最耐看的主题James White大家可以尝试一下

  10. Python-直接存储类实例作为序列的元素

    如果我们需要存储的数据有很多属性,并且存储的数量很多,可选择定义一个类来表示数据类型,而类的实体作为单个的成员进行存储,这样做的好处是可以只存储一个容器,而不需要每次都存储大量的数据,并且可以限制对数 ...