Microsoft Visual Studio VS dumpbin使用查看.obj、.lib、.dll、.exe文件头、段函数

前言全局说明

dumpbin 是VS自带的 Microsoft COFF二进制文件转换器,它显示有关通用对象文件格式(COFF)二进制文件的信息。可以使用dumpbin检查COFF对象文件、标准COFF对象库、可执行文件和动态链接库等。
被查看的文件名后缀可以为:.obj、.lib、.dll、.exe

除了 VS 的 dumpbin 查看,还可以用 用工具depends来查看
http://www.dependencywalker.com/


一、说明

正确情况下,安装好VS后路径被加入到系统 PATH 中了,可以任意路径调用 dumpbin

dumpbin 文件路径:
VS 2010: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin
VS 2013: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
VS 2019: C:\Program Files (x86)\Microsoft Visual Studio 10.0\2019\Community
VS 2022:X:\vs2022\VC\Tools\MSVC\14.40.33807\bin\Hostx64\x86

以上路径只是示例,为了更块知道大概路径


二、dumpbin 命令

2.1 查看帮助

dumpbin

dumpbin /SUMMARY

dumpbin /?

dumpbin -?

如果没有给dumpbin指定任何选项,它将等同于使用了/SUMMARY参数。如果没有指定任何输入文件,它将列出所有的选项。

2.2 使用格式为

dumpbin [选项] <文件名>

2.3 参数

参数 说明 备注
/ALL 显示除代码反汇编外的所有可用信息
/ARCHIVEMEMBERS 显示有关库成员对象的最少信息
/CLRHEADER 显示有关在任何托管程序中使用的 .NET 头的信息
/DEPENDENTS 转储映像从中导入函数的 DLL 的名称
/DIRECTIVES 转储映像中由编译器生成的 .directive 节
/DISASM[:{BYTES|NOBYTES}] 显示代码段的反汇编,如果出现在文件中则使用符号
/ERRORREPORT:{NONE PROMPTt|QUEUE|SEND}
/EXPORTS 显示从可执行文件或 DLL 导出的所有定义
/FPO 显示框架指针优化 (FPO) 记录
/HEADERS 显示文件头和每节的头。当用于库时,显示每个成员对象的头
/IMPORTS[:文件名] 显示导入到可执行文件或 DLL 的 DLL 列表(静态链接的和延迟加载 )和上述每个 DLL 的各个导入
/LINENUMBERS 显示 COFF 行号
/LINKERMEMBER[:{1|2}] 显示库中定义的公共符号。指定参数 1 将按对象顺序显示符号及其偏移量。指定参数 2 将显示对象的偏移量和索引号,然后按字母顺序列出这些符号及每个符号的对象索引
/LOADCONFIG 转储 IMAGE_LOAD_CONFIG_DIRECTORY 结构,此结构是由 Windows NT 加载程序使用并在 WINNT.H 中定义的可选结构。
/NOLOGO
/OUT:filename
/PDATA 仅用于 RISC 处理器。此选项从映像或对象转储异常表 (.pdata)
/PDBPATH[:VERBOSE] 将沿调试器搜索 .pdb 文件的同一路径搜索计算机,并将报告哪些 .pdb 文件(若有)和 filename 中指定的文件相对应
/RANGE:vaMin[,vaMax]
/RAWDATA[:{NONE|1|2|4|8}[,#]] 此选项显示文件中每节的原始内容
/RELOCATIONS 此选项显示对象或映像中的任何重定位
/SECTION:名称
/SUMMARY 如果没有给dumpbin指定任何选项,它将等同于使用了/SUMMARY参数
/SYMBOLS
/TLS
/UNWINDINFO

2.3 选项说明:

参数的使用可以用”-”或者”/”(如-ALL等于/ALL)后面跟选项名。

有些选项可以在选项名后接”:”。使用空格或制表符(Tab)分割命令选项。

选项名,关键字和文件名是不区分大小写的。大多数的参数可以应用于所有的二进制文件,有少部分参数只能用于特定的文件。


三、示例

3.1 查看 exe 信息

查看一个exe引用了哪些动态库

dumpbin /HEADERS E:\main.exe

dumpbin -HEADERS E:\main.exe

3.2 查看 dll 信息

查看动态库包含哪些接口函数

dumpbin /exports E:\main.exe

dumpbin –exports dlltest.dll

Your_Functions_Here 就是接口函数名。

image

3.3 查看系统dll

dumpbin.exe /exports c:\windows\system32\user32.dll

dumpbin /exports C:\Windows\System32\msvcrt.dll

四、扩展用法

4.1 过滤函数名

函数名太多时,可以用管道和findstr来过滤

dumpbin /EXPORTS "gdal.lib" | findstr GDALDropCache

4.2 多个参数

多个选项间用空格分开,多个文件名间也用空格分开

dumpbin /ALL/RAWDATA:NONE /OUT:1.txt text.obj

dmpbin /ALL /RAWDATA:NONE test.obj >1.txt

4.3 输出到文件中

dumpbin.exe /ALL D:\xxx.dll > D:\VS_dumpbin_file_info.txt


免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。




参考、来源:
https://www.cnblogs.com/cyx-b/p/13488380.html (#### 2.2)
https://blog.51cto.com/u_14523369/6123768 (#### 3.2)
https://blog.csdn.net/jiangnanan/article/details/134893353 (#### 3.2)
https://www.bilibili.com/opus/963232349848338436 (#### 4.1)
https://zhuanlan.zhihu.com/p/646528551 (#### 4.2)
https://jingyan.baidu.com/article/5553fa82b953b365a23934b7.html (#### 3.3)
https://blog.csdn.net/zztoll/article/details/105325155 (#### 3.3) (depends来查看)
https://zhuanlan.zhihu.com/p/646528551 (depends来查看)



posted @ 2024-11-17 22:26  悟透  阅读(91)  评论(0编辑  收藏  举报