メモリ ダンプ (管理されていないプロセス) があります。プロセスにロードされた dll の 1 つを (windbg を使用して) 抽出するにはどうすればよいですか? 実際にdllファイルをディスクに保存することを意味します
3 に答える
windbg ディレクトリ内の sos.dll を使用できます。
まず、windbg に sos.dll をロードします。
.load clr10\sos.dll
次に、!sam または !SaveAllModule を使用して、特定のディスクの場所にモジュールを抽出します。
!sam c:\notepad
SOSを使用せずにDLLを抽出するには、次のように.writemem拡張子を使用します。
lmvm dllname
ieframeの出力例を使用して、モジュールの開始アドレスと終了アドレスを検出します。
start end module name
61370000 61fb8000 ieframe
長さを計算する=end-start:
? 61fb8000 - 61370000
output:Evaluate expression: 12877823 = 00c48000
次に、DLLを次のように保存します。
.writemem C:\tmp\mydll.dll 61370000 L?00c48000
これは、ディスクからロードされた正確なDLLを提供する可能性は低く、これを修正することは簡単ではありません。
(部分的にこの記事に基づいています)
はい、それは本当だ。calc.exe は、mspaint、photoviewer などの多くの Windows プログラムと同様に、マルチ ユーザー言語インターフェイス情報を取得してメモリにアタッチします。