Kernel 모드에서 특정 프로세스 디버깅하기
이번 포스트에서는 WinDbg를 Debugee OS에 연결 한 후(Kernel-Mode), TestApp.exe프로세스를 디버깅하는 절차에 대해 설명합니다.
n 디버깅 하려는 TestApp.exe의 EPROCESS 주소를 확인하기 “!process 0 0 TestApp.exe” 명령을 입력합니다.
n “.process /i EPROCESS주소”를 입력하여 해당 프로세스 컨텍스트로 이동합니다.
Context switching을 위해 ‘g’를 입력하라고 하는군요. ‘g’를 입력해서 진행시키면 context가 변경된 후, 다시 break가 걸립니다.
n TestApp.exe의 심볼을 로드하기 위해 “.reload /user” 명령을 입력합니다.
n 이제 디버깅 하려는 프로세스의 컨텍스트로 이동되었고 심볼도 로드되었으므로, 디버깅하려는 함수에 breakpoint를 설정합니다.
n 보시는 것처럼 TestApp의 OK버튼을 누르면, DoSomething에서 breakpoint가 걸리는 것을 확인 할 수 있습니다.
n 로드된 프로세스의 심볼을 언로드 하려면 “.reload /u /user”명령을 입력하시면 됩니다.
이후의 디버깅은 알아서~ 하시면 됩니다.
n kernel-mode 디버깅 환경에서 특정 프로세스의 user function에 breakpoint 설정하는 방법
> bp /p @$proc KERNEL32!CreateThreadStub
n user module list
> lmu
'Windows Programming > 디버깅' 카테고리의 다른 글
[WinDbg] 조건부 브레이크 포인트 (1) | 2011.07.08 |
---|---|
‘Low’ Integrity level 프로세스 디버깅 (0) | 2011.07.07 |
WOW64 디버깅 (0) | 2011.06.27 |
WinDbg 명령어 정리 (0) | 2011.06.21 |
[Link] 수동으로 콜 스택 확인하기 (0) | 2009.12.30 |