Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 您能否使用ETW检测失败的DLL加载?_C#_Etw - Fatal编程技术网

C# 您能否使用ETW检测失败的DLL加载?

C# 您能否使用ETW检测失败的DLL加载?,c#,etw,C#,Etw,我正在尝试使用ETW检测失败的库加载。在ProcMon中,我为CreateFile操作设置了一个过滤器,将路径设置为以.dll结尾,并将结果设置为“NAME NOT FOUND”。这捕获应用程序试图访问不存在的DLL的情况 有没有一种方法可以使用ETW实现这一点?我能够捕获成功的库加载,但不能捕获失败的加载 以下是我目前的代码: using(session = new TraceEventSession(sessionName, null)) { session.EnableKernel

我正在尝试使用ETW检测失败的库加载。在ProcMon中,我为CreateFile操作设置了一个过滤器,将路径设置为以.dll结尾,并将结果设置为“NAME NOT FOUND”。这捕获应用程序试图访问不存在的DLL的情况

有没有一种方法可以使用ETW实现这一点?我能够捕获成功的库加载,但不能捕获失败的加载

以下是我目前的代码:

using(session = new TraceEventSession(sessionName, null))
{
    session.EnableKernelProvider(
        KernelTraceEventParser.Keywords.ImageLoad |
        KernelTraceEventParser.Keywords.Process,
        KernelTraceEventParser.Keywords.None
        );

    using (TraceLogEventSource traceLogSource = TraceLog.CreateFromTraceEventSession(session))
    {
        Action<ImageLoadTraceData> PrintEvent = ((ImageLoadTraceData data) => Print(data));
        Action<FileIOReadWriteTraceData> PrintFileEvent = ((FileIOReadWriteTraceData data) => PrintFile(data));

        traceLogSource.Kernel.ImageLoad += PrintEvent;

        timer = new Timer(delegate (object state)
        {
            if (session != null)
                session.Dispose();
            session = null;
        }, null, monitoringTimeSec * 1000, Timeout.Infinite);

        traceLogSource.Process();
    }
}
这给了我如下输出:

[*] GoogleUpdate loaded a library!
         C:\Windows\SysWOW64\ntmarta.dll
我希望能够捕获加载库的失败尝试。我可以获取每个加载的事件并备份DLL加载顺序(),但这似乎是一种不必要的幼稚方法

[*] GoogleUpdate loaded a library!
         C:\Windows\SysWOW64\ntmarta.dll