如何找出调试我的.NET应用程序的调试器?

Sco*_*acs 5 .net debugging windbg visual-studio-debugging

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

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

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

小智 1

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

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

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