【问题标题】:How can I find out which debugger is debugging my .NET app?如何找出正在调试我的 .NET 应用程序的调试器?
【发布时间】:2012-08-09 17:16:00
【问题描述】:

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

例如,我如何区分我的应用是从 Visual Studio 调试的,还是我的应用是由 WinDbg 调试的?

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

【问题讨论】:

  • 你为什么要这样做?
  • 也许在 DRM 中;他想阻止应用程序调试他的应用程序。
  • 没有可靠的方法来做到这一点。还有更多其他的调试器......你为什么需要知道?
  • 错误或正确,我知道的原因是我有一些代码要执行,用于调试目的,只有在由 VS 的开发人员运行时。当有人将任何其他调试器附加到应用程序时,我不希望代码执行。现在我只是使用 Debugger.IsAttached 来代替找到一种好方法来做我需要的事情。

标签: .net debugging windbg visual-studio-debugging


【解决方案1】:

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

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

有关调试器的大量有用信息,您可以查看anti-debuggig techniques

【讨论】:

  • 不幸的是,它不像我希望的那么简单,但唯一有意义的答案。谢谢。
猜你喜欢
  • 2011-01-06
  • 1970-01-01
  • 1970-01-01
  • 2017-10-24
  • 1970-01-01
  • 2015-02-04
  • 1970-01-01
  • 2018-02-02
  • 2015-05-26
相关资源
最近更新 更多