본문 바로가기

C , C++/Kernel

Hyper-V windbg 원격 디버깅 설정

Hyper-V에서 windbg 설정

Hyper-V 설정

 

VM으로 윈도우 커널 원격 디버깅을 하기 위해서 설정을 하려 하는데

Hyper-V 2세대 가상머신에서는 설정 창에서 COM 포트 장치가 보이지 않는다.

 

검색을 해보니 Powershell 명령으로 COM 포트를 활성화시켜줘야 한다.

 

 

 

1. VM 종료

기존 Virtual Machine을 종료한다

 

기존 VM 종료

 

 

2. 호스트 PC 설정

호스트 PC에서 Powershell 관리자 권한 실행하여 다음과 같은 명령어를 실행한다.

우선 가상 컴퓨터 보안 부팅 옵션을 해제해야한다.

 

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

set-vmfirmware Windows10 -enablesecureboot off

 

직접 설정 창에서 해제해도 된다.

 

 

 

가상컴퓨터 파이프 주소를 지정하기 위해 다음 명령어를 실행

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

set-vmcomport Windows10 1 \\.\pipe\test

 

 

파이프가 할당된 COM포트를 확인하기 위해서는 다음 명령어를 실행한다.

get-vmcomport -vmname [ 가상 컴퓨터 이름 ]

get-vmcomport -vmname Windows10

 

PowerShell

 

 

3. 가상 PC 설정

호스트 PC 설정이 끝났으면 디버깅할 가상 PC의 셋업을 진행해야 한다.

다음 명령어로 디버그 연결을 활성화한다.

bcdedit /debug on

 

 

이후 Serial Port를 사용하여 커널 디버깅 수행을 하기 위해 다음과 같은 명령어를 실행해야 한다.

 

debugport는 COM1을 의미하는데 개인의 환경설정마다 다를 수도 있으므로 확인하면 될 것 같다.

baudrate는 전송 속도(baud rate)를 115200 bps로 설정한다는 의미이다.

 

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

bcdedit /dbgsettings serial debugport:1 baudrate:115200

 

PowerShell

 

 

 

4. Windbg 설정

호스트 PC , 가상 PC의 설정이 끝났다면 WinDbg를 관리자 권한으로 실행한다.

 

Windbg - Kernel Debug

 

File - Kernel Debug를 선택

 

Kernel Debugging Setting

 

COM 탭에서 설정한 파이프 주소 \\.\pipe\test를 입력하고 Pipe와 Reconnect 체크박스를 체크하고 확인

 

응답 대기중인 커맨드 창

 

정상적으로 수행했다면 커맨드 창이 뜨고 응답 대기 중인 메시지를 확인할 수 있다.

메시지를 확인 후 가상 PC를 재부팅한다.

 

가상PC 재부팅 시 메세지

 

가상 PC를 재부팅하면 다음과 같은 메시지를 확인할 수 있다.

이때 Debug 메뉴의 Break 항목을 체크한다.

 

Break 후 커맨드 kd창 활성화

 

아래와 같이 kd 창이 뜬다면 가상 PC와의 연결 접속이 정상적으로 된 것이다.

 

5. Symbol 설정

WinDBG를 사용하는 경우 심볼 설정을 해 주어야 

윈도우 관련 DLL 심볼을 보며 편하게 분석을 할 수 있다

Symbol Path

 

File - Symbol File Path 항목을 체크

 

Symbol Path

 

SRV*c:\symbols*http://msdl.microsoft.com/download/symbols

 

Symbol information

Microsoft Symbol Server The data you requested cannot be retrieved. You have reached this page because either you or an application that you are running has tried to retrieve debugging data from Microsoft. The requested data is either not available or need

msdl.microsoft.com

 

Reload 항목을 체크

 

 

이후 모든 설정이 완료되어 Windows Kernel Debugging을 수행할 수 있다.