64비트 OS에서 메모리덤프가 작성된 경우, Wow64모드로 동작중인 x86 프로세스의 콜스택이 제대로 나오지 않는 경우가 있습니다. 이것은 덤프가 Native 모드(=64비트 모드)로 작성되기 때문인데요... 보통은 다음과 같은 경우에 이런 문제가 발생하죠.


1. 64비트 OS에서 버그체크(BSoD)가 발생하여 전체메모리덤프를 작성된 경우. 

2. 64비트 OS에서 64비트 디버거를 사용해 x86 프로세스의 덤프를 작성한 경우.

3. 64비트 OS에서 작업관리자의 메모리덤프 작성기능을 이용해 x86 프로세스의 덤프를 작성한 경우.


이런 경우는 콜스택이 아래와 같이 알아볼 수 없게 나옵니다. (wow64 에뮬레이션이 이루어지기 전의 콜스택인 것으로 보여지네요.)

0:000> k

Child-SP          RetAddr           Call Site

00000000`0026e818 00000000`75382bf1 wow64cpu!CpupSyscallStub+0x9

00000000`0026e820 00000000`753fd132 wow64cpu!Thunk0ArgReloadState+0x23

00000000`0026e8e0 00000000`753fc54b wow64!RunCpuSimulation+0xa

00000000`0026e930 00000000`77874966 wow64!Wow64LdrpInitialize+0x42b

00000000`0026ee80 00000000`77871937 ntdll!LdrpInitializeProcess+0x17e3

00000000`0026f370 00000000`7785c34e ntdll! ?? ::FNODOBFM::`string'+0x28ff0

00000000`0026f3e0 00000000`00000000 ntdll!LdrInitializeThunk+0xe


x86 프로세스의 정보를 제대로 분석하려면 디버거를 x86 모드로 바꾸어주어야 하는데요.. 별건 아니구요 다음과 같은 디버거 커맨드 한방이면 됩니다.

!wow64exts.sw


0:000> !wow64exts.sw

Switched to 32bit mode

0:000:x86> k

ChildEBP RetAddr  

0056f6c4 75b1149d ntdll_77a10000!ZwWaitForSingleObject+0x15

0056f730 77511194 KERNELBASE!WaitForSingleObjectEx+0x98

0056f748 77511148 kernel32!WaitForSingleObjectExImplementation+0x75

0056f75c 76107be6 kernel32!WaitForSingleObject+0x12

0056f800 76108040 sechost!ScSendResponseReceiveControls+0xea

0056f8b4 76108662 sechost!ScDispatcherLoop+0xc2

0056f8f4 00349c93 sechost!StartServiceCtrlDispatcherW+0xb0

0056f914 003579ef uBrokerSvc!CLeoServiceTemplate::StartAction+0xc3 

0056f95c 00359b32 uBrokerSvc!wmain+0x13f

0056f9a4 7751336a uBrokerSvc!__tmainCRTStartup+0x10b 

0056f9b0 77a49f72 kernel32!BaseThreadInitThunk+0xe

0056f9f0 77a49f45 ntdll_77a10000!__RtlUserThreadStart+0x70

0056fa08 00000000 ntdll_77a10000!_RtlUserThreadStart+0x1b


모드를 전환한 다음엔 위와 같이 정상적인 콜스택이 출력되는 것을 볼 수 있습니다.

다시 x64 모드로 돌아가려면 !wow64exts.sw 명령을 한번 더 입력해주시면 됩니다. 즉, 토글이죠. ^^


(참고 : http://msdn.microsoft.com/en-us/library/windows/desktop/aa384163(v=vs.85).aspx)

Posted by kuaaan

댓글을 달아 주세요



사랑합니다. 편안히 잠드소서