kdnet: Windows 10 Kernel Network Debugging Setting
일반적인 시리얼 포트로 연결해 커널 디버깅 하는 것은 네트워크에 비해 상대적으로 느리다.
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.exe와 VerifiedNICList.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를 리부팅하면 자동으로 연결된다.