2017-09-29 5 views
0

J'ai besoin d'obtenir l'adresse du dernier PE chargé, dans le processus débogué, dans un Alias ​​/registre.WinDbg - obtention de l'adresse du dernier PE chargé dans un alias

Il n'y a aucun problème pour effectuer cette action manuellement dans une WinDbg session, en utilisant la commande lm, puis juste pour copier manuellement l'adresse du module chargé - mais cela doit être une partie d'un script WinDbg .

Je peux passer le nom du PE, chemin complet, chemin pdb à WinDbg comme arguments sans problème. Mais je ne semble pas trouver un moyen d'obtenir l'adresse, sans le copier manuellement, dans un Alias ​​. Peut-être existe-t-il un moyen d'adresser l'adresse du dernier module chargé? (Peut-être à travers un registre spécifique, qui contient cette valeur)

Répondre

3

Peut-être que la réponse est vraiment simple: le nom du module est déjà l'adresse, donc il n'y a pas besoin de le découvrir.

0:006> lm m notepad* 
Browse full module list 
start end  module name 
011f0000 0145c000 notepad__ (deferred)    

0:006> ? notepad__ 
Evaluate expression: 18808832 = 011f0000 

0:006> as lastloaded notepad__ 

0:006> ? lastloaded 
Evaluate expression: 18808832 = 011f0000 

Si (pour une raison quelconque) dont vous avez besoin comme un numéro, utilisez .printf:

0:006> as /c xx .printf "%d", notepad__ 
0:006> .echo ${xx} 
18808832 

0:006> as /c xxh .printf "%x", notepad__ 
0:006> .echo ${xxh} 
11f0000 

Pour moi, le problème est plutôt sur l'importance de « dernier chargement ». Comment pourriez-vous comprendre cela à partir de la liste des lm? Mais puisque vous dites que ce n'est pas un problème pour vous, je ne le considérerai pas dans ma réponse.

+0

Au moment où je charge le PE, j'imprime un message de débogage spécifique dans mon code, qui correspond au modèle '.ocommand' défini précédemment dans la session ouverte de WinDbg - afin que mon script WinDbg soit exécuté * à le moment * où le PE est chargé. C'est pourquoi il est assez fiable que c'est la dernière application chargée :) C'est pourquoi j'avais besoin de "convertir" le nom PE à l'adresse où il a été chargé. Je ne savais pas que le nom PE réel peut être utilisé comme un alias à l'adresse de chargement réelle. Merci beaucoup, comme toujours :) – golosovsky