Я строю простой отладчик для 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
Я пытался:
- поиграть с флагами (CONTEXT_ALL, CONTEXT_FULL)
Получить аргумент hThread с помощью структуры debug_event, например:
invoke GetThreadContext, debug_event.u.CreateProcessInfo.hThread, addr context
Но я все еще получаю точно такую же ошибку.
Любая помощь будетприветствуется!
Омер