问题标签 [dumpbin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1231 浏览

c++ - DUMPBIN 不显示所有功能

DUMPBIN在以下程序中使用了 Microsoft Visual C++ 的实用程序。我确定调用remove最终会调用DeleteFileW来自的 Microsoft 系统调用kernel32.dll(我用另一个工具确认此调用)。那么为什么当我申请DUMPBIN /imports以下程序的.EXE 时,我没有看到DeleteFileW系统调用呢?

如何查看DeleteFileWusing的系统调用DUMPBIN

谢谢,吉拉德

0 投票
1 回答
119 浏览

c++ - 为什么导入表中没有 memcpy?

当我在符号列表中看到时,我正在使用由 Visual Studio 生成的 pdb memcpy,因此我使用 dumpbin 检查可执行文件中的导入表,但没有对memcpy那里的引用。

不是memcpy从crt库导出的函数吗?如果是这样,为什么我在 dumpbin 的输出中看不到它?

0 投票
1 回答
237 浏览

c - C程序新段声明

我有这个简单的代码测试代码:

谁能告诉我为什么如果我转储这个文件我只得到这个默认部分:

  • 。数据
  • .rdata
  • .reloc
  • .rsrc
  • 。存根
  • 。文本

它没有生成的 .code 段。我想我曾经在一些以前的项目中这样做过,我做错了什么吗?

-- 进一步测试 --

  • 转储.obj文件.code部分显示。
  • .stub显示倾销.exe.obj
  • 删除#pragma comment(linker,"/SECTION:.code,ERW")不起作用
  • 添加#pragma comment(linker,"/SECTION:.stub,ERW")并没有改变dumpbin结果.exe.stub仍然显示
  • 将名称从 更改.code.somethingelse也不起作用,结果相同
0 投票
1 回答
94 浏览

c++ - 为什么我需要为不同的图像类型提供不同的转储选项?

我最近一直在使用.dumpbin来查看一些静态库中的符号dumpbin foo.lib /symbols。我想看看它如何用于可执行文件和 DLL。

我的第一个观察结果是dumpbin foo.{exe|dll} /symbols什么都不返回。

对于 DLL,我观察到 export 选项是获取符号数据所必需的: dumpbin foo.dll /exports. 为什么在这种情况下需要这个选项?如果相应的 *.iobj 文件可用,我可以使用dumpbin foo.iobj /symbols转储所有符号,而我假设 DLL 上的 /exports 仅显示 DLL 公开的符号。

对于可执行文件,dumpbin bar.exe /symbols什么也不产生,dumpbin bar.exe /exports似乎转储了一些符号。

谁能解释这里的引擎盖下发生了什么?

0 投票
2 回答
545 浏览

c++ - 查找导致依赖的目标文件

我的情况有点特殊:我有一个应用程序在使用 MSVC 编译时会编译、链接和启动。我现在正在重新编译它 clang-cl,这会导致它编译、链接和崩溃。

感谢 Dependency Walker,我发现正在加载意外的 DLL。就我而言,要找到std::allocator<char>::allocator(allocator const &).

有了这个,我目前有以下信息:

  • 需要此符号的 DLL
  • 暴露符号的 DLL
  • 给出问题的符号

为了记录错误,我应该能够将代码减少到可接受的大小。上传整个专有代码库不是一种选择,上传一个 20 行的 .cpp 文件是一种选择。

为了减少,我需要找到需要这个符号的 .cpp/.obj 文件。从那里开始,减少它就变得容易了。

有了这个,我正在寻找一种方法来检测 .obj 文件是否在不同的 DLL 中搜索符号。

我已经发现:

  • dumpbin /SYMBOLS:告诉我符号导出的位置
  • dumpbin /DEPENDENTS:告诉我一个 DLL 依赖的 DLL

dumpbin /DEPENDENTS状态:

不转储导入函数名称。

如何根据 .obj 文件转储导入函数的名称?

0 投票
2 回答
377 浏览

c++ - 为什么导出的 dll 函数末尾的 @number 符号

我有一个包含超过 400 个函数的 dll,而我的 exe 文件仅使用 dll 中的 15 个函数,所以我需要创建一个新的 dll 并导出函数并伪造它们的返回值以模拟更复杂系统的输出.

我尝试过的:

dumpbin /exports vxlapi.dll (original dll): 显示重复的函数名(不是所有函数)

注意:在 dll 的头文件中,函数声明如下:

在 dumpbin / export dll 中为什么函数名以 '_' 下划线开头并以 '@number' 结尾,注意:exe 正在使用 let's say(decorated) 函数,以及如何创建新的 dll 和导出函数包含@,

0 投票
0 回答
300 浏览

c++ - 垃圾箱和_MSC_VER

我正在 Visual Studio 2017 版本 15.7 VCToolsVersion 14.14.26428 中开发 C++。

我注意到当我dumpbin在静态库上运行时,我得到的 _MSC_VER 版本与预期的不同。

为了说明我的问题,我创建了一个静态库 testDumpbin.lib,其中包含一个简单的类 testClass:

测试类.h:

测试类.cpp:

我添加了一些打印 _MSC_VER 宏的预处理器行。

当我在调试模式下编译这段代码时(关闭属性中的预编译头文件 - C/C++),我得到:

这是我所期望的,因为我正在运行工具集 14.14(另请参阅https://en.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B

然后我继续使用dumpbin(可以从 VS 开发人员命令提示符运行,您可以从 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\LaunchDevCmd.bat 启动):

在那里我发现_MSC_VER = 1900:

为什么输出中没有 _MSC_VER = 1914 dumpbin

非常感谢你的帮助!

0 投票
1 回答
646 浏览

windows - 为什么 dumpbin 中可执行文件的入口点地址与 WinDbg 不同?

我试图了解加载可执行文件的机制,所以我用 notepad.exe 做了两个不同的测试

1)运行dumpbin命令:

我在 OPTIONALHEADER VALUES 下得到以下值:

2)运行WinDbg:

我得到了这些:

我不明白为什么 14001AC50 和 00b9bf90 是不同的值。它们不应该是相同的 AddressOfEntryPoint 值吗?

提前致谢

0 投票
0 回答
122 浏览

c++ - 在 dumpbin 中看不到导出的函数

在 lib1.lib 中,我导出了一个名为 foo() 的函数。当我调用 dumpbin /exports my.dll 时,我看不到该功能。我应该怎么办?我在 Visual Studio 2017 C++ 中这样做。

0 投票
1 回答
709 浏览

c# - dumpbin.exe 找到依赖项的存在

我需要验证可执行文件的依赖项是否存在,如果可能的话,该依赖项的正确版本。包括依赖项的依赖项。使用 dumpbin.exe,我可以收集 exe 或 dll 的依赖项。例如

我正在通过 C# 中的 Process.Start() 读取 dumpbin.exe 的输出并解析返回数据,没问题。我还可以验证文件是否存在,很容易......但是,完全有可能系统上存在多个依赖项的依赖项。您将如何验证是否存在正确的依赖项或所述依赖项的版本?这变得很重要,因为验证依赖项的依赖项也存在。如果有办法超越就好了

对此有什么想法吗?提前致谢!(PS-如果我在dll位置方面完全错误,比如它只能存在于.exe的执行路径或system32中,请告诉我,谢谢)