如何在 Windows 中交换调试器?
就我而言,我有一个进程 A,它创建了自己的副本:
CreateProcessA("XXX.exe", NULL, 0x0023f560, 0x0023f560, TRUE,
**DEBUG_ONLY_THIS_PROCESS**, NULL, NULL, 0x0023f5f8, 0x0023f550)
然后,它调试它的子进程(进程 B),WaitForDebugEvent(50ms)用于修改B的控制流。在高度活跃的启动WaitForDebugEvent后将超时(返回 false),除非我单击 B 中的按钮。
问题:如何摆脱调试器(进程 A)并将我自己的调试器附加到 B ?
我尝试DebugActiveProcessStop通过将代码注入 A(DLL 注入)以及调试 A 并从调试 B 的线程调用它来调用它。(内联代码注入)两种方式我都得到了ACCESS_DENIED!
如果您尝试附加第二个调试器,则会得到Error 87 (ERROR_INVALID_PARAMETER).
环境:Win 7 x64