我正在为Windows构建一个简单的调试器。我想在遇到断点后显示调试对象的寄存器上下文,但是当我调用GetThreadContext
时,会得到:
ERROR_NOACCESS
998 (0x3E6)
Invalid access to memory location.
我正在使用masm32和ml编译器(在visual-studio 2019下)
这是我的相关代码:
.data
context CONTEXT <?>
pi PROCESS_INFORMATION <?>
debug_event DEBUG_EVENT <?>
...
.code
...
invoke CreateProcess, NULL, addr command.command, NULL, NULL, FALSE, DEBUG_PROCESS, NULL,NULL, addr starti, addr pi
...
mov context.ContextFlags, CONTEXT_ALL
invoke GetThreadContext, pi.hThread, offset context
我试图:
通过debug_event结构获取hThread arg,就像这样
invoke GetThreadContext, debug_event.u.CreateProcessInfo.hThread, addr context
但是我仍然遇到完全相同的错误。
任何帮助将不胜感激!
Omer