首先我知道 1. Is it possible to export a dll definition from my AppDomain? 2. Is it possible to save a dynamic assembly to disk? 3. How can I extract DLL file from memory dump?
但这些似乎都没有回答我的问题。
请考虑以下情形:C#应用程序从内存流加载DLL(因此DLL不会直接暴露给用户)。是否有一个工具明确允许以特殊形式将特定DLL从内存转储或导出到磁盘?
注意:我希望有人向我展示从C#应用程序的内存转储中提取完整DLL的完整分步过程。
答案 0 :(得分:9)
带有托管调试扩展的WinDbg能够实现这一功能。
首先,下载WinDbg(谷歌microsoft debugging tools for windows
,它们不是独立下载,而是其他部分的工具包。)
下一部分是安装psscor2
扩展程序(来自https://www.microsoft.com/en-us/download/details.aspx?id=1073)并将其解压缩到WinDbg所在的文件夹。
接下来,运行程序并将WinDbg附加到它(在菜单中)。键入以下命令:
.load psscor2
!SaveAllModules c:\modules\
找到你想要的模块并享受。