Comment obtenir la valeur de retour d'une fonction dans windbg?
-
06-07-2019 - |
Question
J'essaie de déboguer certains win32API comme Createthread qui renvoie un descripteur. Comment obtenir les valeurs de retour dans windbg?
J'ai effectué des recherches et découvert que les valeurs renvoyées étaient généralement stockées dans le registre EAx.
Si je mets un point d'arrêt sur CreateThread, je peux entrer dans l'assemblage de Createthread et, au bout du compte, je vais appuyer sur l'instruction ret qui signifie que Createthread est de retour.
À ce stade, dois-je vérifier la valeur du registre EAX pour obtenir la valeur HANDLE ou est-ce un autre moyen?
La solution
Il n'y a pas d'autre moyen que de tester eax.
Si vous voulez devenir pédant:
eax fonctionne bien pour 32 bits.
rax est ce que vous voudrez pour les applications 64 bits
ret0 est ce que Itanium utilise
$ retreg est un pseudo registre que vous pouvez utiliser et qui se comportera correctement dans tous les cas.
par exemple
0:028> r rax rax=00000000fff02000 0:028> r eax eax=fff02000 0:028> r $retreg $retreg=00000000fff02000