@port139 Blog

基本的にはデジタル・フォレンジックの技術について取り扱っていますが、記載内容には高確率で誤りが含まれる可能性があります。

WinDBG環境の構築メモ

とりあえず、WinDBG なるものをダウンロード。32bit版と64bit版があるので、とりあえず32bit版を以下のURLからダウンロード。MSI形式のファイルになっているので、そのままインストールで、これは簡単に終了。

Windowsデバッグ ツール: 概要
http://www.microsoft.com/japan/whdc/devtools/debugging/default.mspx

あと、シンボルってのも必要なんですかね?、とりあえず手元でテスト予定の XP Sp3 のシンボルファイルをダウンロード。ひょっとしてMicrosoft Symbol Serverというのを使えば個別にダウンロードしなくてもよかったり?これはこれで後から設定してみよっと。
とりあえずスターメニューに WinDBG が出てくるので、これを起動すればいいわけですね。
今回はクラッシュダンプファイルを対象にしているので、Open Crash Dump を使えばよさそうですね。と思ったらクラッシュダンプファイルを作ってなかったので、まずは作成。
Win32dd を使ってクラッシュダンプファイルを作成。

C:\temp\win32dd.1.2.20081105>win32dd -d 20090105.dmp

Win32dd - v1.2.20081105 - Kernel land physical memory acquisition
Copyright (c) 2007 - 2008, Matthieu Suiche http://www.msuiche.net
Copyright (c) 2008, MoonSols http://www.moonsols.com

  • > Level: 0 - Type: 0

[win32dd] Lets dump it!
[win32dd] Destination: \??\C:\temp\win32dd.1.2.20081105\20090105.dmp
[win32dd] Processing....

これがまた、かなり時間がかかるのと CPU 負荷が高くなります。とりあえずテストなのでローカルのHDDに書き込んでますが、本番ではよくないですね。あと、手元でも発生したことがあるのですが、-d オプション利用中にブルースクリーンBSOD)になる場合があるようですね。

Multi-Processors and KdVersionBlock
http://www.msuiche.net/2009/01/05/multi-processors-and-kdversionblock/

Win32dd 実行中にブルスクリーンになったら、OS が作成するクラッシュダンプ ファイルを使うってことで(ぉぃ

[win32dd] Physical memory dumped.

Time elapsed is 874 seconds.

[win32dd] Leaving...

なんだかんだ書いている間( 874 秒経過)にクラッシュダンプファイルが完成。
さてと、準備できたのでシンボルのパスを設定してから、Open Crash Dump で作成したダンプファイルをオープン。

Loading Dump File [C:\case\Evidence\20090105.dmp]
Kernel Complete Dump File: Full address space is available

Symbol search path is: SRV*c:\WINDOWS\symbols*http://msdl.microsoft.com/download/symbols
Executable search path is:
KiProcessorBlock[2] could not be read
WaitForEvent failed

うーん、使ったことがないけど、なんとなく何かがおかしい気がする。
試しに win32dd を実行中にブルスクリーンになった時 OS が作成した MEMORY.DMP を指定するとこうなる。

Loading Dump File [C:\case\Evidence\MEMORY.DMP]
Kernel Complete Dump File: Full address space is available

Symbol search path is: SRV*c:\WINDOWS\symbols*http://msdl.microsoft.com/download/symbols
Executable search path is: 
Windows XP Kernel Version 2600 (Service Pack 2) MP (2 procs) Free x86 compatible
Product: WinNt, suite: TerminalServer SingleUserTS
Built by: 2600.xpsp_sp2_rtm.040803-2158
Machine Name:
Kernel base = 0x804d9000 PsLoadedModuleList = 0x8055e700
Debug session time: Fri Dec 12 13:13:50.703 2008 (GMT+9)
System Uptime: 0 days 0:29:08.375
Loading Kernel Symbols
...............................................................
...................................................
Loading User Symbols
...........
Loading unloaded module list
.........
*******************************************************************************
*1231137160*                                                                             *
*1231137161*                        Bugcheck Analysis                                    *
*1231137162*                                                                             *
*******************************************************************************

Use !analyze -v to get detailed debugging information.

BugCheck 8E, {c0000005, ba2f9e91, a88ee870, 0}

*** ERROR: Module load completed but symbols could not be loaded for win32dd.sys
*** ERROR: Module load completed but symbols could not be loaded for win32dd.exe

さっきの Blog に書いたあることに関連しているのかもしれませんが、とりあえず win32dd で作成したのではなく、こっちを練習に使うことにします。
そういえば、Windows ではキーボード操作により任意のタイミングでクラッシュダンプを作成する方法があった気がする。

キーボード操作でメモリ ダンプ ファイルを作成できる Windows の機能
http://support.microsoft.com/kb/244139/ja

残念ながらこの手順は PS2 キーボードでないとダメみたいですね。*1どこかにクラッシュさせるプログラムがあった気がしますが見当たらないなぁ〜。

*1:Windows 2003ではHotfix適用によりUSBキーボードでも可能になるんでしょうかね?とりあえず手元はXPでUSBキーボードしかつながらないので意味ないですが