Thinking Different




이번 장에서는 가상 윈도우 (Virtualbox)의 커널 디버깅 환경을 설정하는 방법에 대해서 알아보도록 합니다.

 

Windows Driver Kit (WDK)를 설치하고 나면 기본적으로 Windbg 라는 디버깅 툴을 제공해줍니다.

우리는 이를 통해서 가상머신에 설치된 윈도우 환경에 대해 커널 디버깅을 할 수 있는 환경을 설정할 수 있습니다.

 

 

1. 윈도우 부트로더 디버깅 설정

 

virtualbox에 윈도우 10버전을 설치하고 부팅하여 가상머신 윈도우의 디버깅이 가능하도록 부트로더를 설정하는 과정입니다.

 

시작 - 실행 - msconfig 를 실행하고 부팅 탭의 고급옵션에서 아래와 같이 체크하고 적용한뒤 닫습니다.

우리는 여기서 한가지 더 설정할 것이 있으므로 "다시 시작하지 않고 끝내기"를 누릅니다.

 

 

 

2. TestSigning 모드 설정

한가지 설정을 더 하기 위해서 cmd 창을 관리자 권한으로 열고 아래와 같이 입력후 설정합니다.

 

 

bcdedit /set testsigning on

 

자 그럼 윈도우의 디버깅 설정은 완료가 되었습니다. 시스템을 종료하고 현재 가상머신을 닫습니다.

 

 

 

3. 가상머신 시리얼 포트 설정

가상머신과 디버거를 연결하기 위해서는 시리얼포트를 사용합니다. 가상머신에서 시리얼포트를 생성하고 설정하도록 하겠습니다.

가상 머신 설정 - 직렬 포트로 이동하여 아래와 똑같이 설정합니다.

 

자 그럼 가상머신에 대한 부분은 모두 완료 하였습니다.

 

4. 심볼 및 디버그소스 경로 설정하기

자신이 설정하고 싶은 심볼 및 디버그 소스경로 폴더를 생성합니다.

 

필자의 경우 디버그소스 및 심볼 경로를 각각 아래와 같이 설정하였습니다.

c:\dbgSrc

c:\dbgSrc\symbols

 

5. Windbg 심볼 설정하기

위 4번 항목에서 생성한 폴더들을 Windbg와 심볼을 연결할 차례입니다.

Windbg 자신의 윈도우 bit에 맞는 (x64) or (x86) 을 실행하고 File - Symbol File Path.. 를 누릅니다.

 

여기에 다음과 같이 입력합니다.

SRV*심볼경로*http://msdl.microsoft.com/download/symbols;디버그소스경로

 

설정된 값

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

 

만약 경로를 다르게 지정하고 싶다면 폴더를 다르게 생성하고 경로만 위 경로에 맞게 설정하시면 됩니다.

 

이렇게 OK를 누르고 설정 값을 저장해두어야 값이 변경되지 않습니다. 아래와 같이 Save Workspace를 눌러 저장합니다.

 

 

6. 커널 디버깅하기

이제 커널 디버깅을 시작해봅시다. 아래와 같이 file - Kernel Debug.. 를 눌러주고 실행합시다.

 

여기서 COM 탭으로 이동하여 가상머신에서 설정한 파이프 경로를 설정하고 체크하고 실행합니다.

 

아래와 같이 화면이 출력된다면 Windbg가 디버깅 모드에 대기중이 됩니다.

 

 

7. 윈도우 디버깅 부팅으로 커널모드 디버깅 진입하기

이제 가상머신으로 돌아가서 가상머신의 윈도우를 시작해줍시다. 윈도우가 구동되면 windbg가 구동되고 좌측과 같이 정상적으로 디버깅모드로 설정되어진 것을 확인할 수 있습니다.

 

 

Windbg에서 break 버튼을 누르고 윈도우를 마우스로 눌러보면 아무것도 작동되지 않는다면 break가 걸려서 정상적으로 디버깅 모드로 작동되는 것을 확인 할 수 있습니다. break를 풀기 위해서 F5 or Go 버튼 또는 command 에서 g를 입력하면 다시 윈도우가 정상적으로 작동 되는 것을 확인 할 수 있습니다.

 

'프로그래밍 언어 > WDK' 카테고리의 다른 글

[WDK] 1. Windows Driver Kit 설치  (0) 2025.01.05