我试图修改线程,而且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??
}
}
尽管如此,我还是不明白为什么。谢谢!
答案 0 :(得分:5)
CONTEXT结构是特定于处理器体系结构的。它包含一个 Eip 成员,在编译x86目标时(定义了预处理程序符号_M_IX86
)。对于x64目标(已定义的预处理程序符号_M_AMD64
),指令指针存储在 Rip 成员中。
所有支持的处理器体系结构的结构定义在Windows SDK的 WinNT.h 头文件中定义。