我已经知道Debugger.IsAttached
用于确定我的应用程序当前是否正在运行时进行调试。如何确定调试器本身的更多信息?
例如,如何区分从Visual Studio调试的应用程序和WinDbg调试的应用程序?
在我的方案中,应用程序不是从Visual Studio启动的。调试器可以附加到已经运行的进程。
答案 0 :(得分:1)
我能想到的一种方法是枚举机器上的现有进程,然后枚举每个进程的句柄。因此,如果您发现WinDbg.exe的一个实例正在运行并且它具有您的进程的句柄,那么您最有可能被WinDbg.exe调试。
请记住,虽然调试器可能已经“非侵入性地”附加,但实际上您可能连接了多个调试器。或者您可以远程调试,也可以通过串口或USB连接内核调试器。
有关调试器的大量有用信息,您可以查看anti-debuggig techniques。