2011-11-10 3 views

답변

2

환경 변수를 볼 수 있습니다. 명령 !peb의 출력에는 다른 것들 중에서 환경 변수 목록이 들어 있습니다. 변수 PROCESSOR_ARCHITEW6432 또는 ProgramW6432이 정의 된 경우 OS는 64 비트입니다. 그렇지 않으면 32 비트입니다.

+0

내가 실행할 때! peb 명령이 PEB NULL을 준다 ... 어떤 생각이 들지? –

+0

덤프에 프로세스 환경 블록 (PEB)이 들어 있지 않음을 의미합니다. PEB는 디버거에서'.dump/mp '또는'.dump/ma' 또는'.dump/mf' 명령을 사용하거나 ADPlus (http://support.microsoft.com/kb/q286350)를 사용할 때 추가됩니다. –

2

Windows 용 디버깅 도구와 함께 제공되는 dumpchk.exe 유틸리티를 사용할 수 있습니다. 단순히 덤프 파일을 인수로 전달하십시오.

윈도우 UP 무료 7 버전 7601 (서비스 팩 1) 64

제품 : 생성 된 보고서에서

, 당신은 예를 들어, OS 버전과 CPU의 맛을해야합니다 : WinNt, 제품군 : SingleUserTS

+0

* x64가 표시되면 x64 OS에서 실행되었지만 그 반대의 경우는 그렇지 않습니다. x64 시스템에서 32 비트 덤프를 수행하면 x86이 표시됩니다. –

1

불행히도 위의 답변은 대부분의 경우 작동하지 않습니다.

대상 프로세스가 x86 바이너리로 빌드 된 경우 Dupmchk.exe에서 x86 및 x64 OS 모두에 대해 "x86 호환"이라고 표시됩니다. 그리고! peb 명령은 또한 우리가 대부분의 시간을 사용하는 미니 덤프에 대해 쓸모없는 "PEB NULL ..."을 제공합니다. \ WINDOWS \ : 86 OS는 일반 "C를로드하는 대신하면서"\ WINDOWS \ SysWOW64와 \ Kernel32.dll에서 C "을의 x64 OS가 를로드하기 때문에

당신은 더 나은"Kernel32.dll에서 "의 전체 경로를 확인할 것 System32 \ Kernel32.dll "을 실행하십시오. 로드 된 모듈과 해당 경로는 미니 덤프에 기록되며 dumpchk.exe, windbg 및 Visual Studio에서 쉽게 확인할 수 있습니다.

+0

일부 고객은 사생활 보호를 위해 경로가 제거되기를 원하므로'.dump/marR'을 사용하십시오. –

+0

나는 이것이 유효한 전략이라고 생각했습니다. Windows XP - Windows 7에서 작동했습니다. 그러나 Windows 8은 SysWOW64 경로를 System32로 변경했습니다. 나는 * 모든 * 고객이 Windows 8 + 버전의 32 비트 버전을 실행하고 있다는 것이 이상하다고 생각했습니다 ... – Mark

2

.effmach 명령을 사용하여 덤프가 작성된 아키텍처를 알 수 있습니다. 덤프 아치가 x64 인 WOW64 시나리오가 있지만 실제로는 x86 접근 방식으로 디버깅해야합니다 (! wow64exts.sw 명령 참조).

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

+1

'.effmach'는 덤프의 비트를 찾는 데 사용할 수 없습니다. 디버깅에 사용 된 현재 비트를 찾아내는 데만 사용할 수 있습니다. 64 비트 덤프에서'! sw'을 시도한 다음'.effmach'를 시도하면 더 이상 올바른 결과가 표시되지 않습니다. –

+1

당신은 맞습니다.하지만 WOW 된 덤프에서 실행 중이라면! sw 명령 전에 .effmach 명령은 작성자가 질문 한 답변에 맞는 정확한 비트를 반환합니다. 게다가, 지금까지 우리를 따라 간다면, 덤프의 비트를 확실히 알 수 있습니다.) – Shleimeleh

관련 문제