2

我试图在 windows7 64 位上获取另一个进程的 EBP 寄存器的值。
为此,我正在使用 GetThreadContext,如下所示:

static CONTEXT threadContext;
memset(&threadContext, 0, sizeof(CONTEXT));
threadContext.ContextFlags = CONTEXT_FULL;
bool contextOk = GetThreadContext(threadHandle, &threadContext);

EIP 值似乎没问题,但 EBP = 0。我也尝试使用 WOW64_GetThreadContext 但它没有帮助...... GetLastError() 返回 0 所以应该没问题。我确实使用 SuspendThread 暂停了该线程,并且每次对线程进行采样时都不会发生这种情况。

什么可能导致这种情况?

4

1 回答 1

2

一个可能的原因是寄存器的值在您检查时确实为零。它是一个通用寄存器,所以程序可以将它设置为它想要的任何值。

于 2011-09-15T15:50:49.103 回答