미친해커

[WoW] Windbg를 이용해 WoW 프로세스 디버깅하기 본문

Windows/Heaven's Gate (Windows on Windows x64)

[WoW] Windbg를 이용해 WoW 프로세스 디버깅하기

미친해커 2022. 6. 13. 07:13
반응형

나는 지금까지 WoW(Windows on Windows) 프로세스를 완벽하게 디버깅하기 위해서는 CheatEngine을 사용해야 한다고 생각했다. 왜냐하면 CS 레지스터의 값이 바뀌면서 모드가 변경되면 일반적인 디버거들은 오류를 일으키거나 해당 부분을 건너뛰어서 디버깅을 했다. 그렇기 때문에 CheatEngine을 사용해야한다고 생각했는데 해당 CheatEngine도 불편해서 사실상 제대로된 디버깅은 해본적이 없다. 그런데 Windbg를 이용하면 정상적으로 디버깅이 가능하다는 글을 보게되었다. 당연한 사실이지만 생각보다 지원되는 기능들이 많아서 너무 편하다.

How to Debug for WoW Process use Windbg

딱히 특별한 방법이 있는건 아니다. 아래 페이지에서 설치관리자를 다운받고 실행하면 된다.

 

Windows SDK - Windows 앱 개발

Windows 11 Windows SDK에는 Windows 실행되는 앱을 만들 때 사용할 수 있는 헤더, 라이브러리 및 도구가 포함되어 있습니다.

developer.microsoft.com

설치관리자에 보면 Windbg를 설치하는 부분에 체크하고 Next를 진행하면 된다.

WoW 프로세스를 디버깅하기 위해서는 WinDbg (X64) 버전을 사용해야한다.

 

개인적으로 WinDbg Preview 버전이 깔끔하고 멋지기 때문에 선호하지만 제대로 WoW 프로세스에 대해서 디버깅이 되지 않는 것같다.

 

위 사진처럼 Windbg를 실행했으면 [File]에서 여러 디버깅 방법들을 확인할 수 있다. 필자는 [Attach to a Process] 보다는 [Open Executable] 기능을 더 많이 사용한다.

Windbg's WoW commands

!load wow64exts 디버거 확장 로드
!wow64exts.sw x86과 x64간 모드를 전환한다.
!wow64exts.k count 32/64 비트 스택 추적을 덤프한다. count 를 지정하면 지정된 개수의 주소를 덤프한다.
!wow64exts.info 프로세스의 PEB, 현재 스레드의 TEB 및 WOW64에서 사용하는 스레드 TLS 슬롯에 대한 기본 정보를 덤프한다.
!wow64exts.r address 지정된 주소에 대한 컨텍스트를 덤프한다. address를 지정하지 않으면 프로세서에 대한 컨텍스트를 덤프한다.

마무리

간단하게 Windbg를 이용해 WoW 프로세스를 디버깅하는 방법을 살펴보았다. 그리고 !wow64exts.sw 명령을 사용하지 않더라도 디버거가 자동으로 모드를 전환해준다.

반응형
Comments