J'ai trouvé un example qui utilise l'API du moteur de débogage pour accéder au fichier PEB dans un vidage. Est-ce possible en utilisant DbgHelp? Avoir du code existant qui utilise DbgHelp pour extraire les commentaires et les informations d'exception. Je voudrais récupérer quelques informations de PEB si possible.Comment accéder au PEB (bloc d'environnement de processus) en mode vidage à l'aide de DbgHelp
Répondre
Il existe une commande! Peb dans WinDbg, qui fonctionne pour les vidages. Voir aussi ici: http://windbg.info/doc/1-common-cmds.html
Vous pouvez utiliser la fonction MiniDumpReadDumpStream pour lire les flux à partir du fichier de vidage. Il suffit de lire le fichier de vidage dans la mémoire ou le mapper dans la mémoire et utiliser cette fonction.
Pour accéder au PEB. Lisez le ThreadListStream à partir du fichier de vidage. La structure MINIDUMP_THREAD_LIST contiendra un tableau de strutures MINIDUMP_THREAD, qui ont un champ Teb avec l'adresse du TEB pour ce thread. La différence entre TEB et PEB sur les bits 32 et 64 est que les pointeurs sont 8 octets sur 64 bits.
Cela signifie que pour un processus de 32 bits, l'adresse de PEB peut être trouvée au décalage 0x30 de TEB. Pour un traitement 64 bits, l'adresse de PEB peut être trouvée au décalage 0x60 du TEB.
Vous devez lancer vos propres fonctions de lecteur de mémoire lors de la lecture de la mémoire à partir d'un fichier minidump.
- 1. Comment obtenir le bloc d'environnement de processus (PEB) du processus externe?
- 2. Comment accéder à la mémoire en mode utilisateur?
- 3. Comment marchez-vous une pile en mode mixte (géré + natif) avec dbghelp! StackWalk64?
- 4. Accéder au contexte de l'objet en mode prioritaire SaveChanges
- 5. Comment puis-je accéder au registre CPU en mode c?
- 6. Création d'un processus et vidage de sa mémoire en chaîne
- 7. Recherche Drupal en mode bloc
- 8. Debugging (Win): DIA contre DBGHELP
- 9. Minidump crée un fichier de vidage vide
- 10. Comment un processus peut-il accéder à un TIB étranger?
- 11. Sémaphore bloc processus principal au lieu de plusieurs threads
- 12. bloc de contrôle de processus vs descripteur de processus
- 13. Comment accéder à une variable que je remplis dans un bloc en dehors de ce bloc?
- 14. Outlook Addin accéder au destinataire Exchange en mode hors connexion?
- 15. Comment savoir quelle application injecte dbghelp dans tous les autres processus?
- 16. comment changer le style de pagination en mode bloc
- 17. comment lancer un autre processus en mode de compatibilité XP?
- 18. Comment accéder au bloc mémoire alloué par std :: vector?
- 19. Pour accéder à la carte de processus en C
- 20. Bloc de sous-processus Python
- 21. Accéder au StackTrace lors du déploiement en mode Release
- 22. Comment accéder au message de validation dans un hook Mercurial en cours de processus?
- 23. Définir le mode de vidage de la session Hibernate au printemps
- 24. Comment accéder aux fichiers gzippés sans créer de processus supplémentaires?
- 25. Comment puis-je accéder au STDIN d'un sous-processus?
- 26. comment accéder à une colonne particulière en mode grille?
- 27. Comment accéder au mode d'économie d'énergie par programme sous Android?
- 28. Confusions de mode de récupération SQL Server et de récupération en bloc
- 29. déplacer TTLauncherView de sdk3.x à sdk4.0 ajoute une ombre laide au badge de TTLauncherItem
- 30. Comment accéder au contenu de: <ouvrir le fichier 'mon_fichier', mode 'r' à 0x122db1780>
Assez sûr que la manière est d'utiliser les flux Memory64List et MemoryInfoList pour obtenir à la mémoire où le PEB est stocké, mais pas sûr comment s'y prendre. –
[Ce CodeProject] (http://www.codeproject.com/Articles/10438/Navigating-the-PEB) peut vous être utile. Je devrais également mentionner que la plupart des informations contenues dans le PEB peuvent être obtenues par d'autres moyens, probablement plus sûrs. –
Merci. Cet article vise à obtenir le PEB d'un processus en cours. Je suis intéressé à l'obtenir à partir d'un fichier de vidage. –