5

如果我有一个进程转储文件,是否知道转储是在 x64 机器还是 x86 机器上生成的?

4

4 回答 4

2

您可以查看环境变量。command 的输出!peb,除其他外,包含环境变量列表。如果您看到变量PROCESSOR_ARCHITEW6432ProgramW6432已定义,则操作系统为 64 位。否则,它是 32 位的。

于 2011-11-11T02:12:33.013 回答
2

不幸的是,以上答案在大多数情况下都不起作用。

如果目标进程构建为 x86 二进制文件,则 Dupmchk.exe 将对 x86 和 x64 操作系统显示“x86 兼容”。而且 !peb 命令还为我们大部分时间使用的小型转储提供了无用的“PEB NULL ...”。

您最好检查“Kernel32.dll”的完整路径,因为 x64 操作系统将加载“C:\Windows\Syswow64\Kernel32.dll”,而 x86 操作系统将加载普通的“C:\Windows\System32\Kernel32.dll”对于 x86 可执行文件。加载的模块及其路径在 minidump 中重新记录,并且可以通过 dumpchk.exe、windbg 和 Visual Studio 轻松检查。

于 2015-08-05T05:39:58.653 回答
2

您可以使用 .effmach 命令了解创建转储的架构。请注意,在 WOW64 场景中,转储架构是 x64,但您实际上应该使用 x86 方法对其进行调试(请参阅 !wow64exts.sw 命令)。

0:000> .effmach Effective machine: x64 (AMD64)

于 2015-10-06T15:05:48.453 回答
1

您可以使用 Windows 调试工具附带的 dumpchk.exe 实用程序。只需将转储文件作为参数传递。

在生成的报告中,您将拥有操作系统版本和 CPU 风格,例如:

Windows 7 版本 7601 (Service Pack 1) 升级免费x64

产品:WinNt,套件:SingleUserTS

于 2011-11-14T10:34:12.410 回答