드라이버 개발을 하다보면 커널의 무결성 확인을 위해 ntoskrnl.exe를 메모리에 맵핑하여 쓰게되는데, 어떤 컴퓨터에서는 커널 모듈이 ntoskrnl.exe이고 다른 컴퓨터에서는 ntkrnlpa.exe인 경우가 있다. OS에 따라 다른가보다 하고 넘어갔다가 그게 아닌 것 같다는 느낌이 들어 자세히 살펴보게 됐다.
우선 WIndows Internals에 나온 윈도우 컴포넌트 목록은 다음과 같다.
핵심 윈도우 운영체제 컴포넌트 목록 (in Windows Internals)
파일명 |
컴포넌트 |
Ntoskrnl.exe |
익스큐티브와 커널 |
Ntkrnlpa.exe (32비트 시스템만) |
물리 메모리를 64GB까지 어드레싱할 수 있는 물리 주소 확장(PAE)을 지원하는 익스큐티브와 커널 |
Hal.dll |
하드웨어 추상화 계층(Hardware abstraction layer) |
Win32k.sys |
윈도우 서브시스템의 커널모드 부분 |
Ntdll.dll |
내부 지원 함수와 익스큐티브 함수에 대한 시스템 서비스 디스패치 스텁 |
Kernel32.dll, Advapi32.dll, User32.dll, Gdi32.dll |
핵심 윈도우 서브시스템 DLL |
이것만으로는 정확한 내용을 알 수가 없어 좀 더 구글링을 해보았다.
구글링 중 MS 세미나에서 QnA를 정리해놓은 블로그가 있어 참조하였다. (http://foglamp1.egloos.com/4227361)
그 중 몇개 도움 될만한 내용만 가져와봤다.
Q. kernel은 몇 개의 파일로 되어 있느냐?
처음보는 커널 파일도 있고 PAE라는 생소한 단어도 있네요. (ntkrnlmp.exe, ntkrpamp.exe)
이 내용을 토대로 정리해보면 아래와 같겠네요.
CPU |
PAE 비활성화 |
PAE 활성화 |
Uniprocessor(1 CPU) |
NTOSKRNL.EXE |
NTKRNLPA.EXE |
Multiprocessor(N CPU SMP) |
NTKRNLMP.EXE |
NTKRPAMP.EXE |
'Kernel mode' 카테고리의 다른 글
ConfigFlags (0) | 2013.11.15 |
---|---|
Prefetch / Process Carving : 종료된 프로세스 탐지 (0) | 2013.10.31 |
PsLoadedModuleList (0) | 2013.08.19 |
ObjectHook - OpenProcedure (0) | 2013.08.06 |
ddkbuild - #pragma message (0) | 2013.08.06 |