ダンプファイルに保存されたイベントログを取り出す

エンドユーザー様環境で BSOD が発生したため、取り急ぎ ダンプファイルはいただいたものの、その後の調査でイベントログを確認したくなったことはありますか?

 

皆さん、こんにちは。Windows Driver Kit サポートチームの津田です。今回は、そんな皆様に、ダンプファイルからイベントログを取り出す方法をご案内します。

 

ただし、あくまでもダンプファイルに残っている範囲の情報になります。そのため、ダンプファイルから得られたイベントログからは有用なログは得られないけれども、実際のイベントログには有用な情報が得られるかもしれないという場合には、改めてエンドユーザー様に事情を説明して、イベントログの採取をお願いすることになります。(もしくは、このようなことにならないよう、ダンプファイルだけでなく予めイベントログのご採取もお願いしておくことも考えられます。)逆に、今回ご案内する方法によって、ダンプファイルから有用なイベントログが得られれば、ご自身やエンドユーザー様等実際の情報採取に関わる方々に、追加のご負担をお願いせずに済む、また、追加の情報採取をお願いする側も待たずに済む、というメリットがあります。

 

具体的な手順は以下です。

 

1.ダンプファイルを WinDbg でオープン

2. !wmitrace.strdump で確認したいログの Logger Id を確認

3. !wmitrace.logsave <Logger Id> <ファイル名>.evtx でイベントログを保存

4. イベントビューアーで .evtx ファイルを開いてログを確認

 

1 .ダンプファイルを WinDbg でオープン

 

今回は例として、前回の記事「ダンプファイルに保存された ETW トレースログを表示する」<https://blogs.msdn.microsoft.com/jpwdkblog/2016/08/29/%e3%83%80%e3%83%b3%e3%83%97%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%ab%e4%bf%9d%e5%ad%98%e3%81%95%e3%82%8c%e3%81%9f-etw-%e3%83%88%e3%83%ac%e3%83%bc%e3%82%b9%e3%83%ad%e3%82%b0%e3%82%92%e8%a1%a8/> で使用したダンプファイルをそのまま使います。ダンプファイルの開き方についても、この記事の「8. ダンプファイルを WinDbg でオープン」をご参照ください。

 

2. !wmitrace.strdump で確認したいログの Logger Id を確認

 

WinDbg 上の [Command] ウィンドウで以下を実行します。

 

!wmitrace.strdump

 

実行例:

kd> !wmitrace.strdump

WMITRACE: DebugExtensionInitailized

WMITRACE: DebugExtensionNotify: Active

WMITRACE: DebugExtensionNotify: Accessible

WMITRACE: Kernel debugee

(WmiTrace) StrDump Generic

  LoggerContext Array @ 0x85F332A8 [64 Elements]

    Logger Id 0x02 @ 0x8A219CC0 Named 'Circular Kernel Context Logger'

    Logger Id 0x03 @ 0x89A34400 Named 'Eventlog-Security'

    Logger Id 0x04 @ 0x85F32040 Named 'AppModel'

    Logger Id 0x05 @ 0x85F31B40 Named 'Audio'

    Logger Id 0x06 @ 0x85FD4A80 Named 'WindowsUpdate_trace_log'

    Logger Id 0x07 @ 0x85FDCCC0 Named 'DefenderApiLogger'

    Logger Id 0x08 @ 0x85FD9CC0 Named 'DefenderAuditLogger'

    Logger Id 0x09 @ 0x85FD8040 Named 'DiagLog'

    Logger Id 0x0a @ 0x85FD8800 Named 'EventLog-Application'

    Logger Id 0x0b @ 0x89A33CC0 Named 'EventLog-System'

    Logger Id 0x0c @ 0x89A8B9C0 Named 'LwtNetLog'

    Logger Id 0x0d @ 0x89A89040 Named 'NtfsLog'

    Logger Id 0x0e @ 0xA0ED5740 Named 'TestTrace'

    Logger Id 0x0f @ 0x89A89480 Named 'UBPM'

    Logger Id 0x10 @ 0x89A84840 Named 'WdiContextLog'

    Logger Id 0x11 @ 0x89BB4040 Named 'WiFiSession'

    Logger Id 0x12 @ 0x8BE58740 Named 'umstartup'

    Logger Id 0x13 @ 0x8136E980 Named 'UserNotPresentTraceSession'

    Logger Id 0x14 @ 0x81395C40 Named 'COM'

    Logger Id 0x15 @ 0x8C58EA00 Named 'Terminal-Services-LSM'

    Logger Id 0x16 @ 0x813AFCC0 Named 'Terminal-Services-RCM'

    Logger Id 0x17 @ 0x813BACC0 Named 'Terminal-Services-RPC-Client'

    Logger Id 0x18 @ 0x813BA340 Named 'Terminal-Services-Unified-APIs'

    Logger Id 0x19 @ 0x813C5680 Named 'Terminal-Services-SessionEnv'

    Logger Id 0x1a @ 0x813DACC0 Named 'Terminal-Services-SessionMsg'

    Logger Id 0x1b @ 0x813E5040 Named 'Terminal-Services-IP-Virtualization'

    Logger Id 0x1c @ 0x81344380 Named 'UserMgr'

    Logger Id 0x1e @ 0x9A90F040 Named 'WFP-IPsec Diagnostics'

    Logger Id 0x1f @ 0x9D2AA580 Named 'Diagtrack-Listener'

    Logger Id 0x20 @ 0x9D2C1480 Named 'MpWppTracing-08192016-230343-00000003-ffffffff'

 

今回は、イベントログの [システム] ログを見たいと思います。

システムログは 'EventLog-System' に該当するため、Logger Id は 0xb です。

 

 

3. !wmitrace.logsave <Logger Id> < ファイル名>.evtx でイベントログを保存

 

c:\System.evtx としてイベントログを保存します。

WinDbg 上の [Command] ウィンドウで以下を実行します。

 

!wmitrace.logsave 0xb c:\System.evtx

 

実行例:

kd> !wmitrace.logsave 0xb c:\System.evtx

WMITRACE: Kernel debugee

WMITRACE: Expression '0xb c:\System.evtx'

WMITRACE: Finding logger by name '0xb'

WMITRACE:     Logger ID  0 is in transition

WMITRACE:     Logger ID  1 is in transition

WMITRACE:     Logger ID 29 is in transition

WMITRACE:     Logger ID 33 is in transition

WMITRACE:     Logger ID 34 is in transition

WMITRACE:     Logger ID 35 is in transition

WMITRACE:     Logger ID 36 is in transition

WMITRACE:     Logger ID 37 is in transition

WMITRACE:     Logger ID 38 is in transition

WMITRACE:     Logger ID 39 is in transition

WMITRACE:     Logger ID 40 is in transition

WMITRACE:     Logger ID 41 is in transition

WMITRACE:     Logger ID 42 is in transition

WMITRACE:     Logger ID 43 is in transition

WMITRACE:     Logger ID 44 is in transition

WMITRACE:     Logger ID 45 is in transition

WMITRACE:     Logger ID 46 is in transition

WMITRACE:     Logger ID 47 is in transition

WMITRACE:     Logger ID 48 is in transition

WMITRACE:     Logger ID 49 is in transition

WMITRACE:     Logger ID 50 is in transition

WMITRACE:     Logger ID 51 is in transition

WMITRACE:     Logger ID 52 is in transition

WMITRACE:     Logger ID 53 is in transition

WMITRACE:     Logger ID 54 is in transition

WMITRACE:     Logger ID 55 is in transition

WMITRACE:     Logger ID 56 is in transition

WMITRACE:     Logger ID 57 is in transition

WMITRACE:     Logger ID 58 is in transition

WMITRACE:     Logger ID 59 is in transition

WMITRACE:     Logger ID 60 is in transition

WMITRACE:     Logger ID 61 is in transition

WMITRACE:     Logger ID 62 is in transition

WMITRACE:     Logger ID 63 is in transition

WMITRACE: Expression 0xb c:\System.evtx, length 3

WMITRACE: Found by Id 0x0b

WMITRACE: Id 11 Remainder ' c:\System.evtx'

WMI Trace Save: Debugger Extension. LoggerId = 11, Save File = 'c:\System.evtx'

WMITRACE: Do Rundown = 0

    Logger Id 0x0b @ 0x89A33CC0 Named 'EventLog-System'

      CollectionOn        = 1

      LoggerMode          = 0x10800180 ( secure rt single-str )

      HybridShutdown      = persist

      BufferSize          = 64 KB

      BuffersAvailable    = 2

      MinimumBuffers      = 2

      NumberOfBuffers     = 2

      MaximumBuffers      = 16

      EventsLost          = 0

      LogBuffersLost      = 0

      RealTimeBuffersLost = 0

      LastFlushedBuffer   = 0

      MaximumFileSize     = 100

      FlushTimer          = 1 sec

      LoggerThread        = 0x89a33800 (79 context switches)

      PoolType            = NonPaged

      SequenceNumber      = 58

      ClockType           = SystemTime

      EventsLogged        = 391

      RequestFlags        = <none>

      Consumer @ 0x85efd548

WMITRACE:     Target Machine: Win10

 

      Buffer      Address   Cpu RefCnt State

      ===========================================================================================

      Buffer   1: 89a5a000 ,  0:   0    Free List          , Offset:      280 ,   0% Used

WMITRACE: Reading Buffer 0x89a5a000

      Buffer   2: 89a6a000 ,  0:   0    Free List          , Offset:      440 ,   0% Used

WMITRACE: Reading Buffer 0x89a6a000

Saved 2 Buffers

 

 

4. イベントビューアーで .evtx ファイルを開いてログを確認

 

保存した .evtx ファイルをイベントビューアーを開きます。

Windows 10 (1607 x64) 環境であれば、デスクトップ左下の [スタート] を右クリックして、[イベントビューアー] をクリックします。

[イベント ビューアー] が開いたら、[操作]-[保存されたログを開く] でイベントログを確認します。

 

以上の方法で、ダンプファイルからイベントログを取り出し、イベントビューアーで表示することができました。読者の皆様のトラブルシューティングに少しでもお役に立てましたら幸いです。

 

■参考文献

 

!wmitrace.strdump

<https://msdn.microsoft.com/ja-jp/library/windows/hardware/ff566170(v=vs.85).aspx>

 

!wmitrace.logsave

<https://msdn.microsoft.com/ja-jp/library/windows/hardware/ff566162(v=vs.85).aspx>