vmware, windbg를 이용하여 kernel debugging 을 할 것이다.
구글에 검색해보면 관련 글에 대해 소개한 블로그가 많이 있다. 처음 kernel debugging을 해보기 위해 여러 블로그들을 따라해보았지만 알 수 없는 오류로 인해서 약간의 삽질을 해서.. 이러한 삽질을 하고 있는 사람들에게 좀 더 도움이됬으면 하는 마음으로 글을 쓴다.
우선, Debuggee(Test System) VMware 설정을 해보도록 하겠다.
1. serial port 추가
[Edit virtual machine settings] - [Add] 까지 클릭한다.
Serial Port 를 선택한 후 Next
Output to named pipe 체크 한 후 Next
Name pipe 다음과 같이 설정한 후 Finish 하면 된다.
여기서 \\.\pipe\임의지정 하면 된다. 이 글에서는 \\.\pipe\xp_windbg 로 설정했다.
마지막으로, [Serial Port] - Yield CPU on poll 항목을 체크 하면 Serial Port 추가가 끝이 난다.
※ 여기서 오류가 날 수 있다.!!
필자의 경우 Yield CPU on poll 체크 할 수 있는 화면이 나오지 않고, "Virtual printers must be enabled in the preferences." 라는 문장만 나왔다.
이러한 오류를 해결하는 방법은..
[Edit] - [Preferences] -> [Devices] -> [Change Settings] -> Enable virtual printers 체크!!
함으로써 해결할 수 있다.
2. Debuggee 설정
다음과 같이 설정한다.
# notepad boot.ini
boot.ini -> /fastdetect /debugport=COM1 /baudrate=115200 추가
3. windbg 설정
windbg를 다운로드 받은 후 [속성] 에 들어간다.
C:Program Files\Debugging Tools for Windows\windbg.exe" -k com:port=\\.\pipe\xp_windbg,baud=115200,pipe,reconnect
이로써 모든 설정이 끝났다. windbg 를 실행한 후 VMware 내의 OS가 부팅되면 다음과 같이 windbg와 연결이 된다.
Ctrl + Break 를 누르면 다음과 같이 디버깅 모드로 전환이 된다.
kd 를 통해 현재 커널이 디버깅 중인 것을 확인할 수 있다.
※ 위의 모든 설정을 했음에도 windbg가 작동하지 않을 경우
serial port 에 문제가 있을 수 있다. vmx 파일을 열어서 serial port 를 검색해보기 바란다.
혹여나 serial port 0 을 프린터가 사용하고 있다면 하드웨어에서 프린터를 제거하고 serial port 를 다시 추가하면 될 수도 있다.
(필자의 경우 위의 이 부분을 해결하니 정상적으로 windbg가 작동..)
'reversing' 카테고리의 다른 글
IDA remote gdb debugging with gdbserver (0) | 2016.04.10 |
---|---|
예외 처리를 이용한 Anti-Debugging (0) | 2016.03.12 |
BSWAP instruction (0) | 2016.01.19 |
assembly jump instruction (0) | 2016.01.19 |
프롤로그(prolog), 에필로그(epilog) (0) | 2016.01.03 |