본문 바로가기
IT

Hyper-V와 WinDbg를 이용연결해서 Windows kernel 디버깅하기

by %? 2020. 12. 31.

[정의]

Hyper-V

x64 시스템을 위한 하이퍼 바이저 기반의 가상화 시스템

윈도우 서버 가상화라는 이름으로도 알려져 있다.

 

Windbg

MS 윈도우의 다용도 디버거

 

[방법]

1. Hyper-V에서 “MSIX Packaging Tool Environment”로 가상 컴퓨터를 만든 후 실행 후 종료한다.

가상 머신에서 윈도우 생성

2. 사용자 컴퓨터에서 cmd 또는 powershell을 관리자 권한으로 실행 후, 다음과 같은 명령어를 입력한다.

- 가상 컴퓨터 보안 부팅 해제

set-vmfirmware [가상 컴퓨터 이름] -enablesecureboot off

ex) set-vmfirmware Windows enablesecureboot off

 

- 가상 컴퓨터 파이프 주소 지정

set-vmcomport [가상 컴퓨터 이름] [COM 포트 번호] \\.\pipe\[파이프 번호]”

ex) set-vmcomport Windows 1 \\.\pipe\test

 

 

3. 만들어둔 가상 컴퓨터를 실행시켜, cmd 또는 powershell을 관리자 권한으로 실행 후, 다음과 같은 명령어를 입력하고 종료한다.

- 가상 컴퓨터에서 커널 디버깅 설정

bcdedit /debug on

 

- 가상 컴퓨터에서 커널 디버깅 연결 설정

bcdedit /dbgsettings serial debugport:[COM 포트 번호] baudrate:115200

ex) bcdedit /dbgsettings serial debugport:1 baudrate:115200

 

 

4. Windbg를 관리자 권한으로 실행 후, Kernel Debug(Ctrl+K)를 연다.

 

5. COM 탭에서 Port2번에서 설정한 파이프 주소(\\.\pipe\test)를 입력하고, PipeReconnect를 체크하고 확인을 누른다.

 

 

6. 다시 가상 컴퓨터를 실행시키면 Windbg에 다음과 같은 로그가 출력되는데 debug break를 누른다.

 

7. Windbg의 터미널이 kd로 바뀌면 dt nt!_EPROCESS를 입력한다.

 

+ Windbg에서 Symbol 추가

 

6. 다시 가상 컴퓨터를 실행시키면 Windbg에 다음과 같은 로그가 출력되는데 debug  break를 누른다.

7. Windbg의 터미널이 kd로 바뀌면 dt nt!_EPROCESS를 입력한다.