J'ai un vidage de mémoire (processus non géré). Comment puis-je extraire (en utilisant windbg) l'une des dll chargées dans le processus? Je veux dire en fait enregistrer le fichier dll dans le disqueComment puis-je extraire le fichier DLL à partir du vidage de la mémoire?
Répondre
Vous pouvez utiliser le fichier sos.dll dans le répertoire windbg.
Tout d'abord, chargez le sos.dll dans windbg:
.load clr10\sos.dll
Ensuite, utilisez sam OU SaveAllModule pour extraire les modules sur l'emplacement du disque spécifique:!
!sam c:\notepad
Pour extraire une DLL sans utiliser SOS, utilisez l'extension .writemem comme suit:
découvrir les adresses de début et de fin du module à l'aide
lmvm dllname
exemple sortie pour ieframe:
start end module name
61370000 61fb8000 ieframe
calculer la longueur = démarrage de fin:
? 61fb8000 - 61370000
sortie:Evaluate expression: 12877823 = 00c48000
puis enregistrez la DLL comme suit:
.writemem C:\tmp\mydll.dll 61370000 L?00c48000
Il est peu probable que cela vous donne la DLL exacte car elle a été chargée à partir du disque, la résolution n'est pas triviale.
(en partie sur this article)
Oui, il est vrai. calc.exe va également récupérer ses informations d'interface de langue multi-utilisateur et l'attacher en mémoire, comme beaucoup de programmes Windows comme mspaint, photoviewer, etc.
- 1. Comment extraire le nom du fichier à partir du nom du chemin du fichier?
- 2. Comment obtenir SLC.pdb pour analyser le vidage de la mémoire
- 3. Comment faire pour obtenir une trace de pile à partir du fichier de vidage sous Windows
- 4. Obtenir le code IL à partir du fichier binaire DLL
- 5. Pouvez-vous extraire la valeur des chaînes à partir d'un vidage de tas java IBM PHD?
- 6. Le nom du fichier de vidage du noyau est tronqué
- 7. Comment restaurer un fichier de vidage à partir de mysqldump?
- 8. informations d'hôte à partir d'un fichier de vidage sur incident
- 9. Obtenir le nom d'une DLL à partir de la DLL
- 10. comment extraire la chaîne exacte à partir d'un fichier texte
- 11. Comment extraire le nom du serveur à partir d'un UNC
- 12. Comment référencer un fichier .dll à partir d'un fichier .jar
- 13. Extraire le fichier $ bitmap à partir de l'image NTFS
- 14. Comment obtenir vidage binaire de la mémoire SQLite db
- 15. Contenu du fichier de vidage (.ds) dans un fichier texte
- 16. Peut-on récupérer le corps de la méthode à partir du fichier .dll?
- 17. Comment extraire un seul morceau d'octets à partir d'un fichier?
- 18. Comment extraire la clé OEM Windows à partir de Windows
- 19. Où trouver le vidage de tas après un "Mémoire insuffisante"
- 20. vidage d'image à partir de l'écran d'impression
- 21. Comment extraire des URL à partir du texte
- 22. Comment enregistrer le tas (vidage vers un fichier) dans Eclipse?
- 23. Extraire l'icône de l'exécutable en mémoire
- 24. Comment obtenir le nom de la fonction (déclaration de fonction) du fichier VC++ .dll?
- 25. Comment déboguer dans le fichier source dll à partir du projet Web
- 26. Extraire le texte du fichier CSV
- 27. Comment extraire des couches vidéo à partir d'un fichier AVI?
- 28. Comment extraire la taille du PDF? (Dimensions, pas la taille du fichier)
- 29. comment extraire des données à partir d'un fichier html brut
- 30. Déterminer le cadre utilisé à partir d'un site source vidage
J'ai essayé mais cela n'a pas fonctionné. J'ai attaché Windbg à Calc.exe et ai écrit l'exe et j'ai obtenu un plus gros fichier. Étrange. – Saar
Je suppose que c'est dû à des divergences dans l'alignement - les fichiers pe32 occupent plus d'espace en mémoire que sur le disque en raison des besoins d'alignement mémoire plus importants. Vous devez correctement reconstruire l'exécutable après qu'il a été sauvegardé pour répondre à ces règles. En outre, la section de débogage n'est pas sauvegardée (car elle n'est pas mappée, je suppose). Les tables d'importation nécessitent également une reconstruction. – deemok