SetThreadContext可以工作,但寄存器没有更改

SetThreadContext可以工作,但寄存器没有更改,c,reverse-engineering,C,Reverse Engineering,在32位进程上运行,将EAX更改为另一个32位进程 当我处理远程线程时,它被挂起(自创建以来) 使用windbg查看寄存器,结果表明该值保持不变 我不确定问题出在哪里。谢谢你抽出时间 编辑: 没有关系。只是windbg。这些值确实会改变。谢谢。如果你把windbg从等式中去掉,它会神秘地开始工作吗?相反,让远程线程打印出EAX本身的值,然后在事件对象上阻塞,然后在解除阻塞后第二次打印出EAX的值。在其他程序中,等待远程线程被阻塞(而不是调用SuspendThread),然后调用SetThread

在32位进程上运行,将EAX更改为另一个32位进程

当我处理远程线程时,它被挂起(自创建以来)

使用windbg查看寄存器,结果表明该值保持不变

我不确定问题出在哪里。谢谢你抽出时间

编辑:
没有关系。只是windbg。这些值确实会改变。谢谢。

如果你把windbg从等式中去掉,它会神秘地开始工作吗?相反,让远程线程打印出EAX本身的值,然后在事件对象上阻塞,然后在解除阻塞后第二次打印出EAX的值。在其他程序中,等待远程线程被阻塞(而不是调用SuspendThread),然后调用SetThreadContext,然后发布事件对象。如果你这样做的话,我会解释原因。老实说,这听起来有点复杂。我也不确定这些对象是否存在于c中,也不知道如何使用它们。看看我添加的编辑,它可能会帮助你帮助我:)编辑时我明白没有问题。
CONTEXT ctx;                             
ctx.ContextFlags = CONTEXT_ALL;         // I want to see all registers
GetThreadContext(pi.hThread, &ctx);     // Now I see the register
ctx.Eax = newEntryPoint;                // Changing EAX register
SetThreadContext(pi.hThread, &ctx)      // Returns 1 (nonzero is success);