我正在开发一个 Visual Studio 插件,我需要检查是否附加了调试器(即应用程序当前正在运行)以防止用户执行某些操作。我在网上查看,但找不到任何有用的东西。
有没有办法做到这一点?
谢谢!
编辑:似乎这个问题还不够清楚。我想要实现的是:我的插件在 Visual Studio 中运行。我需要检查该 Visual Studio 实例当前是否已附加调试应用程序,以便我的插件可以相应地采取行动。
我正在开发一个 Visual Studio 插件,我需要检查是否附加了调试器(即应用程序当前正在运行)以防止用户执行某些操作。我在网上查看,但找不到任何有用的东西。
有没有办法做到这一点?
谢谢!
编辑:似乎这个问题还不够清楚。我想要实现的是:我的插件在 Visual Studio 中运行。我需要检查该 Visual Studio 实例当前是否已附加调试应用程序,以便我的插件可以相应地采取行动。
找到它:使用DTE2.Debugger属性和CurrentMode属性。通过这种方式,您可以判断您当前是否正在调试某些东西。
你没有提到你正在使用什么语言,但这里是如何在 C# 中做到这一点
if(Debugger.IsAttached)
{
// Do something
}
BOOL WINAPI IsDebuggerPresent(void)
或者
BOOL WINAPI CheckRemoteDebuggerPresent(__in HANDLE hProcess, __inout PBOOL pbDebuggerPresent)
从一个插件,
IDebugEngine2::EnumPrograms
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/