4

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

有没有办法做到这一点?

谢谢!

编辑:似乎这个问题还不够清楚。我想要实现的是:我的插件在 Visual Studio 中运行。我需要检查该 Visual Studio 实例当前是否已附加调试应用程序,以便我的插件可以相应地采取行动。

4

4 回答 4

2

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

于 2013-05-08T14:02:43.460 回答
1

你没有提到你正在使用什么语言,但这里是如何在 C# 中做到这一点

if(Debugger.IsAttached) 
{ 
  // Do something
}
于 2013-05-08T13:39:26.933 回答
0

BOOL WINAPI IsDebuggerPresent(void)

或者

BOOL WINAPI CheckRemoteDebuggerPresent(__in HANDLE hProcess, __inout PBOOL pbDebuggerPresent)

从一个插件,

IDebugEngine2::EnumPrograms

于 2013-05-08T13:37:44.127 回答
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/

于 2013-05-08T13:44:15.840 回答