我尝试检测调试器,我得到错误“无法解析符号'Dte'”即使使用envdte引用。谷歌什么也没给我。谢谢。
using EnvDTE;
namespace test
{
static class Program
{
[STAThread]
static void Main()
{
foreach (EnvDTE.Process p in Dte.Debugger.DebuggedProcesses) {
if (p.ProcessID == spawnedProcess.Id) {
}
}
}
}
}
答案 0 :(得分:0)
C#是一种区分大小写的语言。
其DTE
(大写)不是Dte
。 https://msdn.microsoft.com/en-us/library/envdte.dte.aspx
答案 1 :(得分:0)
我需要检测是附加的调试器(如Ollydbg)
要检查进程是否附加了调试器,可以使用:
如何检查调试器是否已附加
CheckRemoteDebuggerPresent 适用于任何正在运行的进程,并检测本机调试程序。
Debugger.IsAttached 仅适用于当前进程,仅检测托管调试程序。例如, OllyDbg将不会被检测到。
<强> Code: 强>
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
public class DetectDebugger
{
[DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true)]
static extern bool CheckRemoteDebuggerPresent(IntPtr hProcess, ref bool isDebuggerPresent);
public static void Main()
{
bool isDebuggerPresent = false;
CheckRemoteDebuggerPresent(Process.GetCurrentProcess().Handle, ref isDebuggerPresent);
Console.WriteLine("Debugger Attached: " + isDebuggerPresent);
Console.ReadLine();
}
}