-
kdnet: Windows 10 Kernel Network Debugging SettingTools/Windows 2022. 12. 2. 13:08
일반적인 시리얼 포트로 연결해 커널 디버깅 하는 것은 네트워크에 비해 상대적으로 느리다.
windbg와 함께 설치되는 kdnet.exe를 이용하면 빠른 속도의 네트워크 디버깅이 가능하다.
1. Windows sdk 설치
※ Windows SDK에서는 디버깅 툴만 설치하면 된다.
https://developer.microsoft.com/ko-kr/windows/downloads/windows-sdk/
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를 리부팅하면 자동으로 연결된다.
※ Reference
'Tools > Windows' 카테고리의 다른 글
Visual Studio Tips (0) 2024.03.13 Instrumentation for Windows (0) 2024.03.04 Windows Application Fuzzing 기본 세팅 (0) 2023.04.07 Windows Kernel Symbol(pdb file) (0) 2021.09.14 VirtualKD: Windows 10 Kernel Debugging Setting (0) 2021.09.14