10

メモリ ダンプ (管理されていないプロセス) があります。プロセスにロードされた dll の 1 つを (windbg を使用して) 抽出するにはどうすればよいですか? 実際にdllファイルをディスクに保存することを意味します

4

3 に答える 3

6

windbg ディレクトリ内の sos.dll を使用できます。

まず、windbg に sos.dll をロードします。

.load clr10\sos.dll

次に、!sam または !SaveAllModule を使用して、特定のディスクの場所にモジュールを抽出します。

!sam c:\notepad
于 2009-10-29T14:09:49.177 に答える
4

SOSを使用せずにDLLを抽出するには、次のように.writemem拡張子を使用します。

  1. lmvm dllname
    ieframeの出力例を使用して、モジュールの開始アドレスと終了アドレスを検出します。
    start end module name
    61370000 61fb8000 ieframe

  2. 長さを計算する=end-start:? 61fb8000 - 61370000
    output:Evaluate expression: 12877823 = 00c48000

  3. 次に、DLLを次のように保存します。
    .writemem C:\tmp\mydll.dll 61370000 L?00c48000

これは、ディスクからロードされた正確なDLLを提供する可能性は低く、これを修正することは簡単ではありません。

(部分的にこの記事に基づいています)

于 2009-10-29T15:55:23.433 に答える
-2

はい、それは本当だ。calc.exe は、mspaint、photoviewer などの多くの Windows プログラムと同様に、マルチ ユーザー言語インターフェイス情報を取得してメモリにアタッチします。

于 2009-11-11T18:56:38.537 に答える