kdnet 사용법
- kdnet(Kernel Debugger over Network)은 커널 디버깅을 할 때 사용하는 네트워크 기반 디버깅 프로토콜이다.
- Windows 가상머신을 설치한 후, WinDbg를 이용해 커널 디버깅을 할 수 있다.
- Windows SDK를 설치할 때 함께 설치된다. kdnet의 경로는 아래와 같다.
C:\\Program Files (x86)\Windows Kits\10\Debuggers\x64
- 가상머신의 경우 VMware나 Hyper-V, VirtualBox 등 뭐든 상관 없으나, 이 글에서는 VMware를 기준으로 한다.
- 우선 가상머신을 켜고, 위 경로에서 두 개의 파일을 복사하여 가상머신에 붙여넣는다.
kdnet.exe
VerifiedNICList.xml
- 호스트(디버깅을 하는 컴퓨터)에서
ipconfig
명령을 이용하여 IP 주소를 확인한다. - 가상머신에서 cmd를 관리자 권한으로 켜고, kdnet.exe가 위치하는 디렉터리로 이동한 후 다음과 같이 명령어를 입력한다.
kdnet <host-ip> <port>
- 포트는 50000번대 중 적당히 선택한다.
- 명령어를 입력하면 아래와 같이 key 값이 나오게 되는데, 이를 복사해둔다.
- 이제 호스트에서 WinDbg를 켜고, 파일 - Attach to kernel 탭으로 들어가서 아까 선택했던 포트와 복사해둔 Key를 입력하고, OK를 누른다.
- WinDbg의 Command 창을 보면 Waiting to reconnect… 라는 말과 함께 더 이상 진행되지 않는데, 가상머신을 한 번 재부팅해준다.
재부팅을 하면, WinDbg의 Command 창에서 연결에 성공했다는 메시지를 볼 수 있으며, 디버깅 대상 정보와 kernel base 주소를 확인할 수 있다.(kASLR)
- VMware는 디버거 연결 상태로 재부팅을 하면 간혹 블루스크린이 발생할 수 있는데, 당황하지 말고 Command 창에 g를 입력해주자.
- 처음 디버거를 연결하면 부팅 중 갑자기 Breakpoint에 걸리는 경우가 있는데, 이때도 당황하지 말고 Command 창에 g를 입력해주면 정상적으로 진행된다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.