ntoskrnl.exe(英語: Windows NT Operating System Kernel)は、Windows NTのカーネルおよびエグゼキュティブを実装するカーネルイメージである。ハードウェア仮想化(HAL)、プロセスやスレッド管理、メモリ管理など様々なシステムサービスを実装する。
概要
ntoskrnl.exeは上層の「エグゼキュティブ」と下層の「カーネル」から構成される。エグゼキュティブはI/O、オブジェクト、セキュリティ、プロセス、プロセス間通信 (IPC)、仮想メモリ、ウィンドウおよびグラフィックの管理を司る。カーネルはスレッドスケジューリング、第1レベル割り込みハンドリング、遅延プロシージャコール (Deferred Procedure Calls ; DPC) などの基本的なオペレーティングシステムサービスを提供する。
技術詳細
ファンクション
Windowsカーネルは変数名でなく型名を表すハンガリアン記法を用いてコーディングされている。ntoskrnlのファンクション名はそのコンポーネントを示すプリフィクス(接頭辞)によって定義される。そのうちの一部を次の表に掲げる。
初期化処理
カーネルは制御を受け取る時に、パラメーターである構造体へのポインタを受け取る。この構造体はブートローダーによって受け渡され、ハードウェアに関する情報、レジストリファイルへのパス、カーネルの挙動を変更するブート設定またはオプションのカーネルパラメータ、ブートローダーによって読み込まれるファイルパスの情報を含んでいる。この構造体の定義はカーネルデバッガを使用するか、またはマイクロソフトのシンボルデータベースからダウンロードすることで取得することができる。
x86アーキテクチャでは、カーネルはシステムが既にプロテクトモードにあり、GDT (Global Descriptor Table)、IDT (Interrupt descriptor table)およびTSS (Task State Segment)の準備が済んでいることを受け取る。カーネルはドライバ署名、メモリマネージャー、IDTといった各種リソース・コンポーネントの初期化処理を行い、最後にセッションマネージャー サブシステム (SMSS)が問題なく起動したことを確認して初期化処理を終える。
セキュリティ対策
Windows Server 2003 SP1以降の64ビット版Windowsには Kernel Patch Protection (PatchGuard) という数分おきにカーネルなどのシステム構造への改変をチェックする機構が備わっている。改変が検出された時、Windowsはブルースクリーンに移行してシステムを停止する。しかし、マルウェアの中にはカーネルの起動前に読み込まれるプログラム(ブートセクタなど)に感染することで、この保護機構を回避してカーネルを改ざんするブートキット (Bootkit) と呼ばれる種類が存在する。このような脆弱性に対してはUEFIのセキュアブートやTPMを利用してRoot of Trust(信頼性の根幹)を確立することが有効である。
脚注
参考文献
- Russinovich, Mark; Solomon, David; Ionescu, Alex (2009), Windows Internals (5th ed.), マイクロソフト Press, ISBN 0735625301
- Bill Blunden (2009). The Rootkit Arsenal: Escape and Evasion in the Dark Corners of the System. Jones & Bartlett Publishers. ISBN 1598220616. https://books.google.co.jp/books?id=GAsuwHTquhEC&lpg=PA263&ots=_KeebiaGpI&hl=ja&pg=PA267#v=onepage&f=false
外部リンク
- Driver Development Part 1: Introduction to Drivers - Code Project by Toby Opferman
- Troubleshooting the Startup Process - Microsoft Technet




