1. Debuger
- User 모드 디버거 -> VC 디버거
- Kernel 모드 디버거 -> SoftIce, WinDbg
- WinDbg 초간단 사용법
1) Symbol path 에 SRV*C:\symbol*http://msdl.microsoft.com/download/symbols 추가!!
2) Kernel Debugging 눌러서 Local 로 선택
3) dt nt!_구조체명 : KMUTANT, EPROCESS, KSEMAPHORE 등등 // 구조체의 내용을 본다.
- User 모드 디버거 -> VC 디버거
- Kernel 모드 디버거 -> SoftIce, WinDbg
- WinDbg 초간단 사용법
1) Symbol path 에 SRV*C:\symbol*http://msdl.microsoft.com/download/symbols 추가!!
2) Kernel Debugging 눌러서 Local 로 선택
3) dt nt!_구조체명 : KMUTANT, EPROCESS, KSEMAPHORE 등등 // 구조체의 내용을 본다.
2. Kernel Object( KO )
- OS가 동작하는 3가지 Object ( 내부적으로 구조체를 갖는다는 의미 )
- OS가 동작하는 3가지 Object ( 내부적으로 구조체를 갖는다는 의미 )
CreateWindow |
CreatePen
| CreateFile |
User Object | GDI Object | Kernel Object (KO) |
윈도우 객체 핸들이 전역 Public of Process 다른 프로세스에서 접근하여 움직일 수 있다. | 펜객체 핸들이 지역 내부에서만 사용가능~ | 파일 객체 상대적 핸들 Private to Process 다른 프로세스에서 쓰게 하지 못한다. |
- KO의 특징 : 40여가지의 구조체를 가지고 있다. 상대적(한정적)핸들을 가진다.
1) 공통속성 : 보안, signal, 참조계수, 이름, LIST_ENTRY
- 상대적 핸들의 개념
- 모든 커널 Object 소유자는 OS 이다. 파일의 생성후 프로세스가 종료된다면 파일은 누가 관리해줘야 할까?
- Table의 Index가 곧 핸들값이므로 KO는 복사 되었을때 인덱스값이 달라진다. 이를 상대적 핸들이라 한다.