5

我已经知道如何Debugger.IsAttached确定我的应用程序当前是否正在运行时进行调试。如何确定更多关于调试器本身的信息?

例如,如何区分从 Visual Studio 调试的应用程序和由 WinDbg 调试的应用程序?

在我的场景中,应用程序不是从 Visual Studio 启动的。调试器可以附加到已经运行的进程。

4

1 回答 1

1

我能想到的一种方法是枚举机器上的现有进程,然后枚举每个进程的句柄。因此,如果您发现 WinDbg.exe 实例正在运行并且它具有您的进程的句柄,那么您很可能正在被 WinDbg.exe 调试。

请记住,尽管调试器可能已“非侵入式”附加,因此您实际上可能附加了多个调试器。或者您可能正在远程调试,或者通过串行端口或 USB 连接的内核调试器。

有关调试器的大量有用信息,您可以查看反调试技术

于 2012-08-09T20:06:16.277 回答