从进程中分离调试器(未知)?

时间:2015-04-14 13:19:03

标签: debugging winapi reverse-engineering

我正在尝试将调试器(windbg,ollydbg)附加到正在运行的进程,但是有一个错误,说调试器已经附加,那么我如何从该进程中分离出未知的调试器?
进程包括多线程,一个线程可以附加到调试器而其他线程不能。

1 个答案:

答案 0 :(得分:2)

该过程可能会产生第二个进程,该进程使用DebugActiveProcess()附加到第一个进程进行调试,以防止人们调试第一个进程。请记住,进程无法使用此方法自行调试,因此必须生成第二个进程才能执行此操作。

你可以尝试的事情:

  • 使用任何类型的流程监控器甚至任务管理器来确定第一个流程产生的流程
  • 将代码注入第二个流程,以调用DebugActiveProcessStop()将其与第一个流程分离
  • 挂钩DebugActiveProcess()kernel32.DebugActiveProcessntdll.ZwDebugActiveProcess或在kernelmode中)并将其重定向以附加到其他虚拟进程
  • 终止第二个过程
  • 防止第二个进程获得具有所需权限的第一个进程的句柄 - DebugActiveProcess()将失败
  • 使用其他调试方法(例如,使用VEH调试的作弊引擎)不使用正常的调试API,从而绕过此问题