CONTEXT结构不包含Eip? C ++

时间:2016-06-24 17:41:01

标签: c++ winapi struct

我试图修改线程,而且CONTEXT结构不包含Eip。

HANDLE hThread;
CONTEXT ctx;
ctx.ContextFlags = CONTEXT_ALL;

DWORD processId = GetCurrentProcessId();
DWORD mainThreadId = GetMainThreadId(processId);

hThread = OpenThread((THREAD_GET_CONTEXT | THREAD_SET_CONTEXT | THREAD_SUSPEND_RESUME), FALSE, mainThreadId);
if (hThread)
{
    if (GetThreadContext(hThread, &ctx))
    {
        ???ctx.Eip??
    }
}
尽管如此,我还是不明白为什么。谢谢!

1 个答案:

答案 0 :(得分:5)

CONTEXT结构是特定于处理器体系结构的。它包含一个 Eip 成员,在编译x86目标时(定义了预处理程序符号_M_IX86)。对于x64目标(已定义的预处理程序符号_M_AMD64),指令指针存储在 Rip 成员中。

所有支持的处理器体系结构的结构定义在Windows SDK的 WinNT.h 头文件中定义。