En primer lugar, soy consciente de 1. ¿Es posible exportar una definición de dll desde mi AppDomain? 2. ¿Es posible guardar un ensamblaje dinámico en el disco? 3. ¿Cómo puedo extraer el archivo DLL del volcado de memoria?
pero ninguno de ellos parece responder a mi pregunta en particular.
Considere el siguiente escenario: una aplicación C# carga una DLL desde un flujo de memoria (por lo que la DLL no se expone directamente al usuario). ¿Existe alguna herramienta que permita explícitamente volcar o exportar esa DLL en particular de la memoria al disco en su forma original?
Nota: me gustaría que alguien me mostrara un procedimiento completo paso a paso para extraer una DLL intacta del volcado de memoria de una aplicación C#.
WinDbg con extensiones de depuración administradas es capaz de realizar este truco. Primero, descargue WinDbg ( microsoft debugging tools for windows , no son descargas independientes, sino partes de otros kits).
La siguiente parte es instalar la extensión psscor2 (desde https://www.microsoft.com/en-us/download/details.aspx?id=1073 ) y extraerla a la carpeta donde se encuentra WinDbg.
A continuación, ejecute su programa y adjunte WinDbg (está en el menú). Escriba los siguientes comandos:
.load psscor2!SaveAllModules c:\modules\Encuentra el módulo que quieras y disfruta.