6

我正在尝试调试一些 win32API,例如返回句柄的 Createthread。如何获取windbg中的返回值?

我做了一些研究,发现返回值通常存储在 EAx 寄存器中。

如果我在 CreateThread 上放置断点,那么我可以进入 Createthread 的程序集,最终我将点击 ret 语句,这意味着 Createthread 正在返回。

此时我应该检查 EAX 寄存器的值以获取 HANDLE 值还是其他方式?

4

1 回答 1

12

没有其他方法与测试 eax 基本不同。

如果你想学究气:

eax 适用于 32 位。

rax 是 64 位应用程序所需要的

ret0 是安腾使用的

$retreg 是一个你可以使用的伪寄存器,它在所有情况下都能正常运行。

例如

0:028> r rax
rax=00000000fff02000
0:028> 回复
eax=fff02000
0:028> r $retreg
$retreg=00000000fff02000
于 2009-06-30T01:11:05.653 回答