我正在开发一个visual studio插件,我需要检查调试器是否已连接(即应用程序当前正在运行)以防止用户执行某些操作。我在网上看了,但我找不到任何有用的东西。
有没有办法实现这个目标?
谢谢!
编辑:似乎问题不够明确。我想要实现的是:我的插件在visual studio中运行。我需要检查Visual Studio的当前实例是否附加调试应用程序,因此我的插件可以采取相应的行动。答案 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/