assembly - 如何从Windbg中的函数获取返回值?

标签 assembly return-value windbg

我试图调试一些Win32API,例如Createthread,它返回一个句柄。
如何获取windbg中的返回值?

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

如果我在CreateThread上设置断点,则可以进入Createthread的组装,最终我将点击ret语句,这意味着Createthread正在返回。

在这一点上,我应该检查EAX寄存器的值以获取HANDLE值还是其他方法?

最佳答案

没有另一种方法与测试eax基本不同。

如果您想要学究:

eax可以在32位上正常工作。

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

ret0是itanium所使用的

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

例如

0:028> r rax
rax = 00000000fff02000
0:028> r eax
eax = fff02000
0:028> r $ retreg
$ retreg = 00000000fff02000

关于assembly - 如何从Windbg中的函数获取返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1025804/

相关文章:

.net-4.0 - 如何解决 Windbg 中的 GetFrameContext 失败

c++ - cppunit 只接受返回值零

windows - 从 Microsoft 符号服务器下载符号

assembly - 在汇编中将无符号字符转换为 float (为浮点向量计算做准备)

assembly - lea 0x0(%esi),%esi 是什么意思

c - 在 C 中决定返回值的通用方法是什么?

javascript - 如何从调用 $.getJSON 的函数返回值?

windows - 如何在不使用 GUI 的情况下在 Windbg 中的暂停指令后获取堆栈跟踪?

assembly - 在不使用相关性的情况下直接在 ASM 中调用/跳转(x86)

assembly - MIPS - 释放动态分配的空间(堆)