¿Cómo obtener el valor de retorno de una función en windbg?
-
06-07-2019 - |
Pregunta
Estoy tratando de depurar algunos win32API como Createthread que devuelve un identificador. ¿Cómo obtener los valores de retorno en windbg?
Investigué un poco y descubrí que los valores de retorno generalmente se almacenan en el registro EAx.
Si pongo un punto de interrupción en CreateThread, entonces puedo ingresar al ensamblaje de Createthread y, finalmente, presionaré la declaración ret, lo que significa que Createthread está regresando.
En este punto, ¿debo verificar el valor del registro EAX para obtener el valor HANDLE o es de alguna otra manera?
Solución
No hay otra forma que no sea básicamente lo mismo que probar eax.
Si quieres ser pedante:
eax funciona bien para 32 bits.
rax es lo que querrás para aplicaciones de 64 bits
ret0 es lo que utiliza itanium
$ retreg es un pseudo registro que puede usar que se comportará correctamente en todos los casos.
por ejemplo
0:028> r rax rax=00000000fff02000 0:028> r eax eax=fff02000 0:028> r $retreg $retreg=00000000fff02000