我有一个内存转储(非托管过程)。 我怎样才能提取物(使用WinDbg的)加载到进程中的DLL吗? 我的意思是,在实际保存dll文件到硬盘
Answer 1:
您可以使用WinDbg目录内sos.dll。
首先,加载在WinDbg中的sos.dll:
.load clr10\sos.dll
然后使用SAM或SaveAllModule提取特定的磁盘位置模块!:
!sam c:\notepad
Answer 2:
要提取DLL不使用SOS,使用如下.writemem扩展:
使用发现模块开始和结束地址
lmvm dllname
例如输出ieframe:
start end module name
61370000 61fb8000 ieframe
计算长度=端启动:
? 61fb8000 - 61370000
? 61fb8000 - 61370000
输出:Evaluate expression: 12877823 = 00c48000
然后保存DLL如下:
.writemem C:\tmp\mydll.dll 61370000 L?00c48000
这是不可能的,因为它是从磁盘加载的,解决这个了是不平凡的,给你确切的DLL。
(部分基于本文 )
Answer 3:
对,是真的。 的calc.exe也将拉动其多用户语言界面的信息并将其安装在内存中,也将很多Windows程序一样MSPAINT,photoviewer等。
文章来源: How can I extract DLL file from memory dump?