Tools/Windows

kdnet: Windows 10 Kernel Network Debugging Setting

TESTING 2022. 12. 2. 13:08

일반적인 시리얼 포트로 연결해 커널 디버깅 하는 것은 네트워크에 비해 상대적으로 느리다.

windbg와 함께 설치되는 kdnet.exe를 이용하면 빠른 속도의 네트워크 디버깅이 가능하다.

 

1. Windows sdk 설치

※ Windows SDK에서는 디버깅 툴만 설치하면 된다.

https://developer.microsoft.com/ko-kr/windows/downloads/windows-sdk/

 

Windows SDK - Windows 앱 개발

Windows SDK Windows 11용 Windows SDK(10.0.22000)는 Windows 애플리케이션을 빌드할 수 있는 최신 헤더, 라이브러리, 메타데이터, 도구를 제공합니다. 이 SDK를 사용하여 Windows 11 및 이전 Windows 릴리스용 UWP(유

developer.microsoft.com

 

2. Guest(Target) Windows에 파일 복사 및 실행

C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
C:\Program Files (x86)\Windows Kits\10\Debuggers\x86

kdnet.exe, VerifiedNICList.xml

기본 값으로 설치되었다면 위 경로에 windbg가 존재한다.

windbg가 아닌 kdnet.exeVerifiedNICList.xml를 타겟이 되는 Guest 윈도우에 복사해 실행한다.

해당 프로그램은 지원하는 NIC(Network Interface Card)인지를 확인해준다.

 

3. Guest에서 kdnet.exe 파라미터 세팅 및 실행

kdnet.exe [Host IP Address] [Port]

Host IP 주소를 첫 번째 인자로 넣고, Port는 권장되는 50000~50039중 아무번호나 넣으면 된다.

관리자 권한으로 kdnet.exe의 인자를 맞춰 실행하면 아래와 같이 키가 출력되는데 이를 저장해둔다.

 

4. Host에서 Windbg 실행

windbg의 환경변수가 등록되어 있다면, 위 3번 사진의 명령어 처럼
windbg -k net:port=50022,key=***를 그대로 실행시킨다.

 

or

 

환경변수가 따로 등록되어 있지 않다면 아래와 같이 GUI 환경을 통해 진행한다.

windbg를 실행시켜 [File]-[Kernel Debug]를 선택해 3.에서 설정한 포트 번호와 Key 값을 넣어서 확인을 누른다.

 

5. Windows 보안경고 체크 및 windbg 연결 확인

확인을 누르면 보안경고가 창이 팝업되는데, 모든 체크박스를 체크로 변경하여 액세스 허용을 선택한다.

 

windbg가 실행되고, Waiting to reconnect... 라는 텍스트 문구가 보이며,

Guest에서 shutdown -r -t 0을 통해 재시작하면, 곧바로 Connected 되었다는 문자열이 출력된다.

최종적으로 아래와 같이 디버깅을 할 수 있는 환경이 만들어진다.

 


※ Windbg Preview로 Kernel Debugging

windbgx의 환경변수가 등록되어 있다면, windbgx -k net:port=50022,key=***를 그대로 실행시킨다.

일반적인 경우에는 Microsoft AppStore를 통해서 windbg Preview를 설치했다면, windbgx는 Path에 등록되어있다.

 

or

 

위에서 Host에서 winDbg를 실행시키는 것과 같이 windbg preivew로 똑같이 커널 디버깅을 할 수 있다.

windbg preview의 [File]-[Start debugging]-[Attach to kernel]에 Port number, Key 설정 및 접속하고 기다린다.

"shutdown -r -t 0" 명령어로 Guest를 리부팅하면 자동으로 연결된다.


※ Reference

https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/setting-up-a-network-debugging-connection-automatically