troushoo

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

  1. --/--/--(--) --:--:--|
  2. スポンサー広告

カーネルデバッグでユーザーモードプロセスのライブデバッグを行う方法

概要

カーネルデバッグでユーザーモードプロセスのライブデバッグを行う方法を紹介します。

内容

0. カーネルデバッグを開始します。

1. プロセス/スレッドのアドレスを探します。
1.1. プロセスの名前がわかっている場合のコマンド

!process 0 f <プロセス名>

出力のPROCESS, THREAD の後のアドレスが、後ほど必要な値です。
!process 0 f <プロセス名>

1.2. dll の名前のみわかってい場合
!process /m <dll名> 0 f

出力のPROCESS, THREAD の後のアドレスが、後ほど必要な値です。
!process /m <dll名> 0 f

2. プロセスのコンテキストを変更します。
.process /r /p <プロセスのアドレス>
<プロセスのアドレス> は、上記1 で得たプロセスのアドレスです。
/r は、ユーザーモードのシンボルをリロードするという意味です。
/p は、仮想アドレスを物理アドレスに変換するという意味です。

.process /r /p <プロセスのアドレス>

3. プロセスのコンテキストが変更されたため、!peb でプロセスにロードされているモジュール等がわかるようになります。
!peb でプロセスにロードされているモジュール等がわかるようになる

4. スレッドのコンテキストを変更します。
.thread /r /p <スレッドのアドレス>

<スレッドのアドレス> は、上記1 で得たスレッドのアドレスです。
/r は、ユーザーモードのシンボルをリロードするという意味です。
/p は、仮想アドレスを物理アドレスに変換するという意味です。

.thread /r /p <スレッドのアドレス>

5. スレッドのコンテキストが変更されたため、k でスレッドのスタックがわかるようになります。
k でスレッドのスタックがわかるようになる

6. ブレークポイントを張り、ブレークさせることも可能です。
.process /i <プロセスのアドレス>
g
自動的にデバッガーに制御が移る
.reload /user
bp <ブレークポイントを張るアドレス>
.process /i は、invasive モードで、デバッグするという意味です。

ブレークポイント


情報元
Updated Archive of the NtDebugging Twitter Debug Tips (英語)
Debugging services startup in Svchost from a kernel mode debug session (英語)
  1. 2014/09/15(月) 22:02:16|
  2. WinDbg
  3. | トラックバック:0
  4. | コメント:0
<<.NET アプリのダンプでメモリリークの調査:Visual Studio 2013 Ultimate Update 3 の新機能 | ホーム | オープンソースのデバッガー x64_dbg を用いて、ソースコードを編集することなく、アプリにパッチを適用>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://troushoo.blog.fc2.com/tb.php/195-497b5fc8
この記事にトラックバックする(FC2ブログユーザー)

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

ツール (92)
ネットワーク (76)
Visual Studio (56)
SOS・Psscor2/Psscor4 (25)
WinDbg (25)
Linux (24)
Azure (17)
Tips (20)
英語 (1)
About Me (1)
未分類 (0)

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。