ntoskrnl.exeについて
ntoskrnl.exeは、Windows NTオペレーティングシステムにおいて重要な役割を果たす
カーネルとエグゼキュティブを実装した
カーネルイメージです。このファイルは、さまざまなシステムサービスを提供し、ハードウェア
仮想化、
プロセスやスレッドの管理、
メモリ管理などの機能を担っています。
構成要素と機能
ntoskrnl.exeは主に二つの構成要素から成り立っています。一つは上層の「エグゼキュティブ」であり、もう一つは下層の「
カーネル」です。エグゼキュティブは、I/O管理、オブジェクト管理、セキュリティ、
プロセス管理、
プロセス間通信 (IPC)、仮想メモリ、ウィンドウおよびグラフィックの管理を担当しています。この部分は、システムが効率的に動作するための中核となる機能を提供します。
一方、
カーネルは、スレッド
スケジューリングや最初のレベルの割り込み処理、遅延プロシージャコール(DPC)などの基本的なオペレーティングシステムサービスを提供し、システムの安定性とパフォーマンスを維持します。
技術的な詳細
ntoskrnl.exeは、変数名でなく型名を表すハンガリアン記法でコーディングされています。このため、関数名はその関連するコンポーネントを示すプリフィクスによって定義されており、プログラマーが動作を理解しやすくなっています。
初期化処理
カーネルは、制御を受け取る際に、ブートローダーから受け取ったパラメーターである構造体へのポインタを利用します。この構造体には、ハードウェアに関する情報や、
レジストリへのパス、
カーネルの動作を変更するための設定などが含まれています。具体的な情報は
カーネルデバッガを使用することで確認できます。
x86アーキテクチャの場合、
カーネルはシステムが既に
プロテクトモードにあり、GDT(グローバルディスクリプタテーブル)、IDT(割り込みディスクリプタテーブル)、TSS(タスク状態セグメント)が準備されていることを確認した上で、各種リソースの初期化処理を実行します。最終的には、セッションマネージャーサブシステム(SMSS)が正常に起動したことを確認して初期化が完了します。
セキュリティ対策
64ビット版のWindows Server 2003 SP1以降では、
Kernel Patch Protection(PatchGuard)という仕組みが導入されており、システム構造に対する改変を定期的にチェックする機能が備わっています。改変が見つかると、Windowsは
ブルースクリーンを表示し、システムを停止します。ただし、一部の
マルウェアは
ブートセクタなどに感染することによって、この保護機能を回避し、
カーネルを改ざんするいわゆるブートキットと呼ばれる手法を用います。
このような脅威に対する対策として、UEFIのセキュアブートやTPMを活用したRoot of Trust(信頼性の根幹)の確立が有効だとされています。これにより、システムの信頼性を向上させ、悪意のある改変から保護することが可能になります。
参考文献
- - Russinovich, Mark; Solomon, David; Ionescu, Alex (2009). Windows Internals (5th ed.), Microsoft Press, ISBN 0735625301
- - Bill Blunden (2009). The Rootkit Arsenal: Escape and Evasion in the Dark Corners of the System. Jones & Bartlett Publishers. ISBN 1598220616.
外部リンク