Tengo un volcado de memoria (proceso no administrado). ¿Cómo puedo extraer (usando windbg) uno de los dlls cargados en el proceso? Me refiero en realidad a guardar el archivo dll en el disco¿Cómo puedo extraer el archivo DLL del volcado de memoria?
Respuesta
Puede usar el directorio sos.dll dentro del directorio windbg.
En primer lugar, cargar el sos.dll en windbg:
.load clr10\sos.dll
A continuación, utilice SAM o SaveAllModule para extraer los módulos sobre la ubicación del disco específica:!!
!sam c:\notepad
Para extraer un DLL sin utilizar SOS, utilice la extensión .writemem de la siguiente manera:
descubra las direcciones de inicio y final del módulo usando
lmvm dllname
salida de ejemplo para IEFrame:
start end module name
61370000 61fb8000 ieframe
calcular la longitud = fin-inicio:
? 61fb8000 - 61370000
salida:Evaluate expression: 12877823 = 00c48000
continuación, guarde el DLL como sigue:
.writemem C:\tmp\mydll.dll 61370000 L?00c48000
Es poco probable que le proporcione la DLL exacta, ya que se cargó desde el disco, arreglar esto no es trivial.
(basado en parte en this article)
Sí, es cierto. calc.exe también extraerá su información de interfaz de idioma multi usuario y lo adjuntará en la memoria, al igual que muchos programas de Windows como mspaint, photoviewer, etc.
- 1. Volcado de memoria en el archivo
- 2. ¿Cómo analizar un archivo de volcado desde un archivo DLL de Delphi?
- 3. Cómo inspeccionar objetos COM del archivo volcado de Visual Basic?
- 4. Cómo generar el archivo de volcado del núcleo en Ubuntu
- 5. ¿Cómo extraer clases del archivo .jar?
- 6. ¿Cómo extraer imágenes del archivo swf?
- 7. ¿Cómo extraer el nombre del archivo del nombre de la ruta del archivo?
- 8. Dll Gestión de memoria
- 9. Mejor utilidad de volcado de símbolos DLL
- 10. Cómo analizar el volcado del núcleo
- 11. Archivo DLL versión
- 12. Cómo limitar el tamaño del archivo de volcado del núcleo al generarlo usando GDB
- 13. ¿Cómo extraer un ensamblaje del GAC?
- 14. Cómo leer fotogramas de un volcado de memoria (sin GDB)?
- 15. ¿Cómo puedo extraer el nombre del archivo y la extensión de un camino en C++
- 16. ¿Dónde está el archivo de volcado MySQL?
- 17. ¿Cómo puedo extraer solo el texto del html
- 18. Toma de volcado de memoria usando C#
- 19. ¿Cómo extraer el archivo tar desde stdin?
- 20. Solicitar el volcado del he va en java (volcado del núcleo) desde la aplicación
- 21. ¿Cómo uso un archivo de volcado para diagnosticar una pérdida de memoria?
- 22. Importar tablas específicas del archivo de volcado de oráculo?
- 23. Análisis de volcado del núcleo utilizando gdb
- 24. obteniendo stacktrace del volcado del núcleo
- 25. Memoria de volcado de un proceso
- 26. ¿Cómo analizar el uso de memoria desde un volcado de memoria?
- 27. Extraer solo el nombre de archivo Del nombre de FileItem
- 28. Dónde encontrar el volcado del montón después de una "memoria insuficiente"
- 29. ¿Cómo puedo extraer datos de un archivo .fig en MATLAB?
- 30. ¿Cómo puedo extraer campos de un archivo CSV en Perl?
Lo intenté pero no funcionó. Adjunté Windbg a Calc.exe y escribí el exe y obtuve un archivo más grande. Extraño. – Saar
Supongo que eso se debe a discrepancias en la alineación: los archivos pe32 ocupan más espacio en la memoria que en el disco debido a los mayores requisitos de alineación de la memoria. Necesita reconstruir adecuadamente el ejecutable después de que se haya descargado para cumplir con estas reglas. Además, la sección de depuración no se descarta (ya que no está mapeada, supongo). Las tablas de importación también necesitan reconstrucción. – deemok