2013-02-28 1 views
0

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

+0

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. –

+0

[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. –

+0

Merci. Cet article vise à obtenir le PEB d'un processus en cours. Je suis intéressé à l'obtenir à partir d'un fichier de vidage. –

Répondre

0

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.

Questions connexes