有没有办法检查调试器当前是否已附加?

时间:2013-05-08 13:31:19

标签: visual-studio vsix

我正在开发一个visual studio插件,我需要检查调试器是否已连接(即应用程序当前正在运行)以防止用户执行某些操作。我在网上看了,但我找不到任何有用的东西。

有没有办法实现这个目标?

谢谢!

编辑:似乎问题不够明确。我想要实现的是:我的插件在visual studio中运行。我需要检查Visual Studio的当前实例是否附加调试应用程序,因此我的插件可以采取相应的行动。

4 个答案:

答案 0 :(得分:2)

找到它:使用DTE2.Debugger属性和CurrentMode属性。通过这种方式,您可以判断当前是否正在调试某些内容。

答案 1 :(得分:1)

您没有提到您正在使用的语言,但这里是如何在C#

中执行此操作
if(Debugger.IsAttached) 
{ 
  // Do something
}

答案 2 :(得分:0)

BOOL WINAPI IsDebuggerPresent(void)

BOOL WINAPI CheckRemoteDebuggerPresent(__在HANDLE hProcess中,__ inout PBOOL pbDebuggerPresent)

来自插件,

IDebugEngine2 :: EnumPrograms

答案 3 :(得分:0)

to prevent the user from performing certain actions

有很多方法可以检查调试器,但听起来好像想要实现调试器检查以保护您的软件。

有调试 - 您可以通过反调试来阻止它,但是您的user可以再次使用反反调试,具体取决于您的操作。等等。您将处于此链的短端,因为您必须发送应用程序,而user可以绕过您实施的所有混乱。

如果您仍然希望这样,那么这里有一些资源。但请不要相信您的应用程序因此而无法调试!

http://www.symantec.com/connect/articles/windows-anti-debug-reference http://old.honeynet.org/scans/scan33/nico/