GetThreadContext返回EBP = 0

时间:2011-09-15 15:41:09

标签: c++ windows threadcontext

我正试图在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暂停这个线程,并且每次我对线程进行采样都不会发生。

是什么导致这种情况?

1 个答案:

答案 0 :(得分:2)

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