티스토리 뷰
커널은 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
링크
TAG
- Intel
- PNP 드라이버
- 디바이스
- breakpoint
- BP
- 모듈
- 백도어
- 레거시 드라이버
- 루트킷
- IRP
- rootkit
- DriverEntry
- 변환
- backdoor
- 드라이버
- VMware
- GDB
- module
- 리눅스 모듈
- gdb intel 변환
- vmware 오류
- LKM
- gdb 명령어
- gdb intel
- gdb명령어
- vmware cannot connect to the virtual machine
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함