티스토리 뷰

Window Internal

KPCR 와 KPRCB

Oth 2017. 7. 24. 10:26

커널은 KPCR 이라는 데이터 구조체를 사용한다.

그리고 KPCR에 프로세서 한정적 데이터르 저장한다.

KPCR은 IDT, RSS(작업 상태 세그먼트), GDT(글로벌 디스크립터 테이블) 같은 기본정보를 담고 있다.

또한 ACPI 드라이버와 HAL 같은 모듈과 공유하는 인터럽트 컨트롤러 상태를 담고 있다.


KPCR 위치


32BIT - KPCR이 FS레지스터에 위치한다.

64BIT - KPCR이 GS레지스터에 위치한다.


또한 KPCR은 KPRCB 라는 내장된 데이터 구조체를 담고 있다. 문서화되어 있는 KPCR와 다르게 KPRCB 는 문서화 되어있지 않다. 그리고  Ntoskrnl.exe 커널 코드에 의해서만 사용되는 비공개 구조체이다. KPRCB는 현재와 다음 스레드, 유휴 스레드, 프로세서를 위한 디스패처 데이터베이스, DPC 큐, CPU 벤터와 식별자 정보, CPU와 NUMA 토폴로지, 캐시크기, 시간 계정 정보 등 스케줄링 정보를 담고있다.



KPCR windbg에서 조회


!pcr


dt 명령어를 통해 KPCR KPRCB 데이터 구조체를 직접 덤프할 수도 있다.




추후 추가....

'Window Internal' 카테고리의 다른 글

APC(Asynchronous Procedure Call)  (0) 2017.07.24
Window Kernel Hooking  (0) 2017.07.19
IDT  (0) 2017.07.18
RtlSizeTAdd  (0) 2017.06.29
Non-Paged Pool  (0) 2017.06.28
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함