「Windowsメモリダンプ解析サービス」のご案内
豊田孝の「IT談話館」 Windowsメモリダンプ解析を依頼する




 本「IT談話館」一般公開記事は、10年以上の実務経験を持つ上級Windowsエンジニアを想定しています。
 本館は、Windowsカーネル深層を解析し、クラッシュ原因をはじめとするシステム内の「異様な動き」を検出・分析する
超高度な技術と実績を保有しています。



Windows 11カーネルアーキテクチャー概要


 本「IT談話館」の「一般公開記事」は、「Active Memory Dump とカーネルメモリダンプ」の解析結果を基に起草されています。「本館」主筆の「豊田孝」はDKOM(Direct Kernel Object Manipulation)ベースの解析手法の第一人者であり、Windowsカーネル空間の解析分野では世界の先頭を走っています。

 現在、セキュリティー問題を無視することはできません。Microsoft社側の負担だけではなく、同社製品の利用者側の負担も増しています。困ったことではありますが、当面避けられません。セキュリティーの視点から「Windows10ソフトウェアセンサー」を見た場合、本「IT談話館」の確認範囲では、「カーネル層保護ロジック」に加え、次のような保護メカニズム階層が考案・実装されています。下記リンクはすべて本館記事を指しています。
  1. Silo/Server Silo
  2. Job
  3. Session
  4. Protected Process
  5. Mandatory Integrity Control(MIC)
  6. Windows API(+CPU)
  7. CPU
 本稿は「Windowsカーネルアーキテクチャー(後編)」を読破した上級Windowsエンジニアーを想定し、Windows 10の後継であるWindows 11のカーネルアーキテクチャー概要を取り上げています。

 Windows 10とWindows 11間の相違は、Microsoft社のサイトから膨大な量の情報が公開されています。本稿では、次のような実物のカーネルメモリダンプを解析し、Windows 11のカーネル内部の一端を紹介しています。
11: kd> vertarget
Windows 10 Kernel Version 22000 MP (12 procs) Free x64
Product: WinNt, suite: TerminalServer SingleUserTS
Built by: 22000.1.amd64fre.co_release.210604-1628
Machine Name:
Kernel base = 0xfffff802`41200000 PsLoadedModuleList = 0xfffff802`41e29750
Debug session time: Wed Dec 15 07:55:49.727 2021 (UTC + 9:00)
System Uptime: 0 days 0:10:08.354
 この情報内の「Windows 10 Kernel Version 22000」文字列は、Windows 11のカーネルはWindows 10をベースに開発されていることを示しています。2つのOS間には多くの共通点があるわけですが、本稿では、Jobに焦点を当てています。

 WindowsはMicrosoft社の主要なビジネスツールです。ツールは世の中の動きに応じて改良改善される必要があります。ここ数年の動きの中には、Containerという概念が登場し、人々の注目を浴びました。Microsoft社はその動きを察知し、Windowsの世界に実装しました。同社はContainerを実装するにあたり、従来のJobを拡張し、Siloという概念を打ち出しました。Container、Job、Siloという3種類の概念が登場したわけですが、これらの概念は、正確ではないかもしれませんが、「収容する」および「分離する」という機能を共通して持ってます。当方のようなクラッシュダンプを解析するWindows内部解析者にとっては、「何」を収容(分離)するのか、「何のために」それを収容(分離)するのか、その実装にはセキュリティー問題や障害を発生させ、結果的に、現場の作業効率を低下させる原因ないし遠因が潜んでいないか、などが実務上の関心事になります。

 単純な解析コードを作成し、実行すると、次のような結果が返されてきます。



 解析コードは、ContainerとSiloの関係を分析し、Windowsの世界ではこの2つの概念は同じに違いない、という仮説を基に作成しています。この結果を見ると、SiloはJobやプロセス(スレッド)などを収容(分離)していると考えても問題はなさそうなことが分かります。プロセスはスレッドのコンテナーであり、Jobはプロセスのコンテナーでしたが、Siloはこれらの既存コンテナーを収容(分離)する上位コンテナーという位置付けになります。図中のSgrmBroker.exe やsvchost.exeなどの一部のプロセスは、Jobを持っておりませんが、本稿ではこの点の解析は割愛します。

 Windowsシステムのパフォーマンス低下やシステムクラッシュなどの原因を解析する際には、プロセスの待ち時間が役に立ちます。Windows 11では、ユーザー空間とカーネル空間のプロセス待ち時間が次のように管理されています。



 図中の、たとえば、Operaの待ち時間を見ると、カーネル空間待ち(Kwt)とユーザー空間待ち(Uwt)の2つの数値が高いことが分かります。今回のクラッシュダンプは、次のように、Operaがシステムクラッシュに何らかの関与をしていることを示しています。
11: kd> dt _eprocess @$proc image*
nt!_EPROCESS
   +0x464 ImageNotifyDone : 0y1
   +0x5a0 ImageFilePointer : 0xffffc983`8b05cb40 _FILE_OBJECT
   +0x5a8 ImageFileName : [15]  "opera.exe"


「Windowsメモリダンプ解析サービス」のご案内
Windowsメモリダンプ解析技術

Copyright©豊田孝 2004- 2024
本日は2024-12-13です。