Определите, был ли создан дамп процесса на компьютере с архитектурой x64 или x86 - PullRequest
4 голосов
/ 10 ноября 2011

Если у меня есть файл дампа процесса, можно ли вообще узнать, был ли создан дамп на машине x64 или x86?

Ответы [ 4 ]

3 голосов
/ 06 октября 2015

Вы можете использовать команду .effmach, чтобы узнать архитектуру, на которой был создан дамп. Обратите внимание, что существует сценарий WOW64, где дамп арки x64, но вы должны отладить его с помощью подхода x86 (см. Команду! Wow64exts.sw).

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

2 голосов
/ 14 ноября 2011

Вы можете использовать утилиту dumpchk.exe, которая поставляется с инструментами отладки для Windows. Просто передайте файл дампа в качестве аргумента.

В сгенерированном отчете вы получите версию ОС и версию процессора, например:

Windows 7 версии 7601 (пакет обновления 1) UP Free x64

Продукт: WinNt, набор: SingleUserTS

2 голосов
/ 11 ноября 2011

Вы можете посмотреть на переменные окружения.Вывод команды !peb, помимо прочего, содержит список переменных среды.Если вы видите переменные PROCESSOR_ARCHITEW6432 или ProgramW6432, значит ОС 64-битная.В противном случае это 32 бит.

1 голос
/ 05 августа 2015

К сожалению, приведенные выше ответы не работают в большинстве случаев.

Dupmchk.exe сообщит «x86-совместимый» для обеих ОС x86 и x64, если целевой процесс был построен как двоичный файл x86. И! Peb команда также дает вам бесполезный «PEB NULL ...» для мини-дампов, которые мы используем большую часть времени.

Вам лучше проверить полный путь к «Kernel32.dll», поскольку ОС x64 будет загружать «C: \ Windows \ Syswow64 \ Kernel32.dll» , а ОС x86 будет загружать обычный «C: \ Windows \ System32 \ Kernel32.dll "для исполняемых файлов x86. Загруженные модули и их пути записываются в мини-дамп и легко проверяются с помощью dumpchk.exe, windbg и Visual Studio.

...