我已经知道Debugger.IsAttached
,用于确定我的应用当前是否正在运行时进行调试。如何确定有关调试器本身的更多信息?
例如,如何区分从Visual Studio调试的应用程序和WinDbg调试的应用程序?
在我的情况下,该应用程序不是从Visual Studio启动的。调试器可能会附加到已经在运行的进程中。
最佳答案
我可以想到的一种方法是枚举计算机上的现有进程,然后枚举每个进程的句柄。因此,如果您找到一个正在运行的WinDbg.exe实例,并且该实例具有进程的句柄,则很可能是由WinDbg.exe调试的。
请记住,尽管调试器可能是“非侵入式”连接的,所以实际上您可能连接了多个调试器。或者,您可以进行远程调试,也可以通过串行端口或USB连接的内核调试器进行调试。
有关调试器的大量有用信息,可以 checkout anti-debuggig techniques。
关于.net - 如何找出哪个调试器正在调试.NET应用程序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11888607/