From f374c225860e874d99e2894100fc0aa5c1ca5198 Mon Sep 17 00:00:00 2001 From: Satoshi Tanda Date: Tue, 17 Jul 2018 21:00:26 -0700 Subject: [PATCH] Add initial files --- .gitattributes | 63 ++ .gitignore | 274 +++++- DebugLogger.sln | 68 ++ DebugLogger/DebugLogger.cpp | 1071 +++++++++++++++++++++++ DebugLogger/DebugLogger.inf | 32 + DebugLogger/DebugLogger.ruleset | 81 ++ DebugLogger/DebugLogger.vcxproj | 167 ++++ DebugLogger/DebugLogger.vcxproj.filters | 31 + Images/ExampleWithProcessHacker.jpg | Bin 0 -> 207053 bytes README.md | 118 ++- TestDriver/TestDriver.cpp | 54 ++ TestDriver/TestDriver.inf | 32 + TestDriver/TestDriver.vcxproj | 167 ++++ TestDriver/TestDriver.vcxproj.filters | 31 + 14 files changed, 2156 insertions(+), 33 deletions(-) create mode 100644 .gitattributes create mode 100644 DebugLogger.sln create mode 100644 DebugLogger/DebugLogger.cpp create mode 100644 DebugLogger/DebugLogger.inf create mode 100644 DebugLogger/DebugLogger.ruleset create mode 100644 DebugLogger/DebugLogger.vcxproj create mode 100644 DebugLogger/DebugLogger.vcxproj.filters create mode 100644 Images/ExampleWithProcessHacker.jpg create mode 100644 TestDriver/TestDriver.cpp create mode 100644 TestDriver/TestDriver.inf create mode 100644 TestDriver/TestDriver.vcxproj create mode 100644 TestDriver/TestDriver.vcxproj.filters diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1ff0c42 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,63 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text=auto + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +#*.cs diff=csharp + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +#*.sln merge=binary +#*.csproj merge=binary +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +#*.jpg binary +#*.png binary +#*.gif binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore index 259148f..e7dd979 100644 --- a/.gitignore +++ b/.gitignore @@ -1,32 +1,242 @@ -# Prerequisites -*.d - -# Compiled Object files -*.slo -*.lo -*.o -*.obj - -# Precompiled Headers -*.gch -*.pch - -# Compiled Dynamic libraries -*.so -*.dylib -*.dll - -# Fortran module files -*.mod -*.smod - -# Compiled Static libraries -*.lai -*.la -*.a -*.lib - -# Executables -*.exe -*.out -*.app +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +[Xx]64/ +[Xx]86/ +[Bb]uild/ +bld/ +[Bb]in/ +[Oo]bj/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml + +# TODO: Un-comment the next line if you do not want to checkin +# your web deploy settings because they may include unencrypted +# passwords +#*.pubxml +*.publishproj + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignoreable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directory +AppPackages/ +BundleArtifacts/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# LightSwitch generated files +GeneratedArtifacts/ +ModelManifest.xml + +# Paket dependency manager +.paket/paket.exe + +# FAKE - F# Make +.fake/ diff --git a/DebugLogger.sln b/DebugLogger.sln new file mode 100644 index 0000000..8d3bf5f --- /dev/null +++ b/DebugLogger.sln @@ -0,0 +1,68 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27906.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DebugLogger", "DebugLogger\DebugLogger.vcxproj", "{A43C60C1-5FF6-410A-B59F-5C1C108CFEEB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestDriver", "TestDriver\TestDriver.vcxproj", "{44387148-C1CA-4D1C-BE1C-7AA2AE8D9878}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{55E755F1-7E7F-4079-A163-689D2796C0F4}" + ProjectSection(SolutionItems) = preProject + README.md = README.md + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM64 = Debug|ARM64 + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|ARM64 = Release|ARM64 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A43C60C1-5FF6-410A-B59F-5C1C108CFEEB}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A43C60C1-5FF6-410A-B59F-5C1C108CFEEB}.Debug|ARM64.Build.0 = Debug|ARM64 + {A43C60C1-5FF6-410A-B59F-5C1C108CFEEB}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {A43C60C1-5FF6-410A-B59F-5C1C108CFEEB}.Debug|x64.ActiveCfg = Debug|x64 + {A43C60C1-5FF6-410A-B59F-5C1C108CFEEB}.Debug|x64.Build.0 = Debug|x64 + {A43C60C1-5FF6-410A-B59F-5C1C108CFEEB}.Debug|x64.Deploy.0 = Debug|x64 + {A43C60C1-5FF6-410A-B59F-5C1C108CFEEB}.Debug|x86.ActiveCfg = Debug|Win32 + {A43C60C1-5FF6-410A-B59F-5C1C108CFEEB}.Debug|x86.Build.0 = Debug|Win32 + {A43C60C1-5FF6-410A-B59F-5C1C108CFEEB}.Debug|x86.Deploy.0 = Debug|Win32 + {A43C60C1-5FF6-410A-B59F-5C1C108CFEEB}.Release|ARM64.ActiveCfg = Release|ARM64 + {A43C60C1-5FF6-410A-B59F-5C1C108CFEEB}.Release|ARM64.Build.0 = Release|ARM64 + {A43C60C1-5FF6-410A-B59F-5C1C108CFEEB}.Release|ARM64.Deploy.0 = Release|ARM64 + {A43C60C1-5FF6-410A-B59F-5C1C108CFEEB}.Release|x64.ActiveCfg = Release|x64 + {A43C60C1-5FF6-410A-B59F-5C1C108CFEEB}.Release|x64.Build.0 = Release|x64 + {A43C60C1-5FF6-410A-B59F-5C1C108CFEEB}.Release|x64.Deploy.0 = Release|x64 + {A43C60C1-5FF6-410A-B59F-5C1C108CFEEB}.Release|x86.ActiveCfg = Release|Win32 + {A43C60C1-5FF6-410A-B59F-5C1C108CFEEB}.Release|x86.Build.0 = Release|Win32 + {A43C60C1-5FF6-410A-B59F-5C1C108CFEEB}.Release|x86.Deploy.0 = Release|Win32 + {44387148-C1CA-4D1C-BE1C-7AA2AE8D9878}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {44387148-C1CA-4D1C-BE1C-7AA2AE8D9878}.Debug|ARM64.Build.0 = Debug|ARM64 + {44387148-C1CA-4D1C-BE1C-7AA2AE8D9878}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {44387148-C1CA-4D1C-BE1C-7AA2AE8D9878}.Debug|x64.ActiveCfg = Debug|x64 + {44387148-C1CA-4D1C-BE1C-7AA2AE8D9878}.Debug|x64.Build.0 = Debug|x64 + {44387148-C1CA-4D1C-BE1C-7AA2AE8D9878}.Debug|x64.Deploy.0 = Debug|x64 + {44387148-C1CA-4D1C-BE1C-7AA2AE8D9878}.Debug|x86.ActiveCfg = Debug|Win32 + {44387148-C1CA-4D1C-BE1C-7AA2AE8D9878}.Debug|x86.Build.0 = Debug|Win32 + {44387148-C1CA-4D1C-BE1C-7AA2AE8D9878}.Debug|x86.Deploy.0 = Debug|Win32 + {44387148-C1CA-4D1C-BE1C-7AA2AE8D9878}.Release|ARM64.ActiveCfg = Release|ARM64 + {44387148-C1CA-4D1C-BE1C-7AA2AE8D9878}.Release|ARM64.Build.0 = Release|ARM64 + {44387148-C1CA-4D1C-BE1C-7AA2AE8D9878}.Release|ARM64.Deploy.0 = Release|ARM64 + {44387148-C1CA-4D1C-BE1C-7AA2AE8D9878}.Release|x64.ActiveCfg = Release|x64 + {44387148-C1CA-4D1C-BE1C-7AA2AE8D9878}.Release|x64.Build.0 = Release|x64 + {44387148-C1CA-4D1C-BE1C-7AA2AE8D9878}.Release|x64.Deploy.0 = Release|x64 + {44387148-C1CA-4D1C-BE1C-7AA2AE8D9878}.Release|x86.ActiveCfg = Release|Win32 + {44387148-C1CA-4D1C-BE1C-7AA2AE8D9878}.Release|x86.Build.0 = Release|Win32 + {44387148-C1CA-4D1C-BE1C-7AA2AE8D9878}.Release|x86.Deploy.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {795694B7-88FD-4258-8B8E-377BD6BA6B9E} + EndGlobalSection +EndGlobal diff --git a/DebugLogger/DebugLogger.cpp b/DebugLogger/DebugLogger.cpp new file mode 100644 index 0000000..49e34b1 --- /dev/null +++ b/DebugLogger/DebugLogger.cpp @@ -0,0 +1,1071 @@ +/*! + @file DebugLogger.cpp + + @brief All C++ code of DebugLogger. + + @author Satoshi Tanda + + @copyright Copyright (c) 2018, Satoshi Tanda. All rights reserved. + */ +#include +#include + +// +// Define SYNCH_LEVEL for readability. SYNCH_LEVEL is 12 on both ARM64 and x64. +// +#ifndef SYNCH_LEVEL +#define SYNCH_LEVEL 12 +#endif + +// +// Handy macro to specify at which segment the code should be placed. +// +#define DEBUGLOGGER_INIT __declspec(code_seg("INIT")) +#define DEBUGLOGGER_PAGED __declspec(code_seg("PAGE")) + +// +// The size of log buffer in bytes. Two buffers of this size will be allocated. +// Change this as needed. +// +static const ULONG k_DebugLogBufferSize = PAGE_SIZE * 8; + +// +// The log file path. +// +DECLARE_CONST_UNICODE_STRING(k_LogFilePath, L"\\SystemRoot\\DebugLogger.log"); + +// +// The pool tag. +// +static const ULONG k_PoolTag = 'LgbD'; + +// +// The maximum characters the DbgPrint family can handle at once. +// +static const ULONG k_MaxDbgPrintLogLength = 512; + +// +// The format of how each debug log messages are store in buffer. The buffer is +// contains the sequence of this structure. +// +#include +typedef struct _DEBUG_LOG_ENTRY +{ + // + // The system time of when this message is seen in the debug print callback. + // + LARGE_INTEGER Timestamp; + + // + // The length of the message stored in LogLine in characters. + // + USHORT LogLineLength; + + // + // The debug log message, not including terminating null or '\n' or '\n'. + // + CHAR LogLine[ANYSIZE_ARRAY]; +} DEBUG_LOG_ENTRY, *PDEBUG_LOG_ENTRY; +static_assert(sizeof(DEBUG_LOG_ENTRY) == 11, "Must be packed for space"); +#include + +// +// Active and inactive buffer object. +// +typedef struct _DEBUG_LOG_BUFFER +{ + // + // The pointer to the buffer storing the sequence of DEBUG_LOG_ENTRYs. + // + PDEBUG_LOG_ENTRY LogEntries; + + // + // The offset to the address where the next DEBUG_LOG_ENTRY should be saved + // from LogEntries. + // + ULONG NextLogOffset; + + // + // How many bytes are not save into LogEntries due to lack of space. + // + ULONG OverflowedLogSize; +} DEBUG_LOG_BUFFER, *PDEBUG_LOG_BUFFER; + +// +// The structure used by the debug print callback. +// +typedef struct _PAIRED_DEBUG_LOG_BUFFER +{ + // + // Indicates whether ActiveLogBuffer and InactiveLogBuffer are usable. + // + BOOLEAN BufferValid; + + // + // The lock must be held before accessing any other fields of this structure. + // + EX_SPIN_LOCK ActiveLogBufferLock; + + // + // The pointers to two buffers: active and inactive. Active buffer is used + // by the debug print callback and actively save new messages as they show + // up. Inactive buffer is buffer being accessed and cleared up by the flush + // buffer thread. + // + PDEBUG_LOG_BUFFER ActiveLogBuffer; + PDEBUG_LOG_BUFFER InactiveLogBuffer; +} PAIRED_DEBUG_LOG_BUFFER, *PPAIRED_DEBUG_LOG_BUFFER; + +// +// The set of information the flush buffer thread may need. +// +typedef struct _FLUSH_BUFFER_THREAD_CONTEXT +{ + KEVENT ThreadExitEvent; + PPAIRED_DEBUG_LOG_BUFFER PairedLogBuffer; + HANDLE LogFileHandle; + PKTHREAD FlushBufferThread; + ULONG MaxOverflowedLogSize; +} FLUSH_BUFFER_THREAD_CONTEXT, *PFLUSH_BUFFER_THREAD_CONTEXT; + +// +// Buffer structures as global variables. Initialized by StartDebugPrintCallback +// and cleaned up by StopDebugPrintCallback. +// +static DEBUG_LOG_BUFFER g_LogBuffer1; +static DEBUG_LOG_BUFFER g_LogBuffer2; +static PAIRED_DEBUG_LOG_BUFFER g_PairedLogBuffer; + +// +// The thread context. Initialized by StartFlushBufferThread and cleaned up by +// StopFlushBufferThread. +// +static FLUSH_BUFFER_THREAD_CONTEXT g_ThreadContext; + +// +// The space to save old debug filter states for all components. Used by +// EnableVerboseDebugOutput and DisableVerboseDebugOutput. +// +static ULONG g_DebugFilterStates[DPFLTR_ENDOFTABLE_ID]; + +// +// Code analysis wants this declaration. +// +DEBUGLOGGER_INIT EXTERN_C DRIVER_INITIALIZE DriverEntry; + +/*! + @brief Saves a single line debug message to the active buffer. + + @param[in] Timestamp - The time stamp of when the log message was sent. + + @param[in] LogLine - The single line, null-terminated debug log message. + Does not include "\n". + + @param[in,out] PairedLogBuffer - Buffer to save the message. +*/ +static +_IRQL_requires_(SYNCH_LEVEL) +VOID +SaveDebugOutputLine ( + _In_ const LARGE_INTEGER* Timestamp, + _In_ PCCHAR LogLine, + _Inout_ PPAIRED_DEBUG_LOG_BUFFER PairedLogBuffer + ) +{ + USHORT logLineLength; + ULONG logEntrySize; + BOOLEAN lockAcquired; + PDEBUG_LOG_ENTRY logEntry; + + lockAcquired = FALSE; + + // + // Get the length of the message in characters. The message should never be + // an empty (as per behavior of strtok_s) and should never be longer than + // what the DbgPrint family can handle. + // + logLineLength = static_cast(strlen(LogLine)); + if ((logLineLength == 0) || (logLineLength > k_MaxDbgPrintLogLength)) + { + NT_ASSERT(FALSE); + goto Exit; + } + + // + // Unlikely but one can output \r\n. Ignore this to normalize contents. + // + if (LogLine[logLineLength - 1] == '\r') + { + if ((--logLineLength) == 0) + { + goto Exit; + } + } + + logEntrySize = RTL_SIZEOF_THROUGH_FIELD(DEBUG_LOG_ENTRY, LogLineLength) + + logLineLength; + + // + // Acquire the lock to safely modify active buffer. + // + ExAcquireSpinLockExclusiveAtDpcLevel(&PairedLogBuffer->ActiveLogBufferLock); + lockAcquired = TRUE; + + // + // Bail out if a concurrent thread invalidated buffer. + // + if (PairedLogBuffer->BufferValid == FALSE) + { + goto Exit; + } + + // + // If the remaining buffer is not large enough to save this message, count + // up the overflowed size and bail out. + // + if (PairedLogBuffer->ActiveLogBuffer->NextLogOffset + logEntrySize > k_DebugLogBufferSize) + { + PairedLogBuffer->ActiveLogBuffer->OverflowedLogSize += logEntrySize; + goto Exit; + } + + // + // There are sufficient room to save the message. Get the address to save + // the message within active buffer. On debug build, the address should be + // filled with 0xff, indicating no one has yet touched there. + // + logEntry = reinterpret_cast(Add2Ptr( + PairedLogBuffer->ActiveLogBuffer->LogEntries, + PairedLogBuffer->ActiveLogBuffer->NextLogOffset)); + NT_ASSERT(logEntry->Timestamp.QuadPart == MAXULONG64); + NT_ASSERT(logEntry->LogLineLength == MAXUSHORT); + + // + // Save this message and update the offset to the address to save the next + // message. + // + logEntry->Timestamp = *Timestamp; + logEntry->LogLineLength = logLineLength; + RtlCopyMemory(logEntry->LogLine, LogLine, logLineLength); + PairedLogBuffer->ActiveLogBuffer->NextLogOffset += logEntrySize; + +Exit: + if (lockAcquired != FALSE) + { + ExReleaseSpinLockExclusiveFromDpcLevel(&PairedLogBuffer->ActiveLogBufferLock); + } + return; +} + +/*! + @brief Saves the debug log messages to active buffer. + + @param[in] Output - The formatted debug log message given to the API family. + + @param[in,out] PairedLogBuffer - Buffer to save the message. +*/ +static +_IRQL_requires_(SYNCH_LEVEL) +VOID +SaveDebugOutput ( + _In_ const STRING* Output, + _Inout_ PPAIRED_DEBUG_LOG_BUFFER PairedLogBuffer + ) +{ + CHAR ouputBuffer[k_MaxDbgPrintLogLength + 1]; + PCHAR strtokContext; + PCHAR logLine; + LARGE_INTEGER timestamp; + + // + // Capture when the debug log message is sent. + // + KeQuerySystemTimePrecise(×tamp); + + // + // Ignore an empty message as it is not interesting. + // + if (Output->Length == 0) + { + goto Exit; + } + + // + // The message should be shorter than what the DbgPrint family can handle at + // one call. + // + if (Output->Length > k_MaxDbgPrintLogLength) + { + NT_ASSERT(FALSE); + goto Exit; + } + + // + // Copy the message as a null-terminated string. + // + RtlCopyMemory(ouputBuffer, Output->Buffer, Output->Length); + ouputBuffer[Output->Length] = ANSI_NULL; + + // + // Split it with \n and save each split message. Note that strtok_s removes + // "\n\n", so empty lines are not saved. + // + strtokContext = nullptr; + logLine = strtok_s(ouputBuffer, "\n", &strtokContext); + while (logLine != nullptr) + { + SaveDebugOutputLine(×tamp, logLine, PairedLogBuffer); + logLine = strtok_s(nullptr, "\n", &strtokContext); + } + +Exit: + return; +} + +/*! + @brief The callback routine for the DbgPrint family. + + @param[in] Output - The formatted debug log message given to the API family. + + @param[in] ComponentId - The ComponentId given to the API family. + + @param[in] Level - The Level given to the API family. +*/ +static +_IRQL_requires_max_(SYNCH_LEVEL) +VOID +DebugPrintCallback ( + _In_ PSTRING Output, + _In_ ULONG ComponentId, + _In_ ULONG Level + ) +{ + KIRQL oldIrql; + + UNREFERENCED_PARAMETER(ComponentId); + UNREFERENCED_PARAMETER(Level); + + // + // IRQL is expected to be SYNCH_LEVEL already, but raise it to make sure + // as an expected IRQL of this callback is not documented anywhere. + // + oldIrql = KeRaiseIrqlToSynchLevel(); + NT_ASSERT(oldIrql == SYNCH_LEVEL); + + // + // Do actual stuff with context. + // + SaveDebugOutput(Output, &g_PairedLogBuffer); + + KeLowerIrql(oldIrql); + return; +} + +/*! + @brief Disables verbose debug output by restoring filter states to original. +*/ +DEBUGLOGGER_PAGED +static +_IRQL_requires_max_(PASSIVE_LEVEL) +VOID +DisableVerboseDebugOutput ( + VOID + ) +{ + ULONG states; + BOOLEAN oldState; + + PAGED_CODE(); + + for (ULONG componentId = 0; componentId < DPFLTR_ENDOFTABLE_ID; ++componentId) + { + states = g_DebugFilterStates[componentId]; + for (ULONG level = 0; level < 32; ++level) + { + // + // Get the bit corresponding to the "level" from "states", and set + // that bit as a new state (restore). + // + oldState = BooleanFlagOn(states, (1 << level)); + NT_VERIFY(NT_SUCCESS(DbgSetDebugFilterState(componentId, level, oldState))); + } + } + +#if DBG + // + // Make sure that states of all components were reverted to the same states + // as stored in g_DebugFilterStates. + // + for (ULONG componentId = 0; componentId < DPFLTR_ENDOFTABLE_ID; ++componentId) + { + states = 0; + for (ULONG level = 0; level < 32; ++level) + { + oldState = static_cast(DbgQueryDebugFilterState(componentId, level)); + SetFlag(states, (oldState << level)); + } + NT_ASSERT(states == g_DebugFilterStates[componentId]); + } +#endif +} + +/*! + @brief Stops the debug print callback and cleans up paired buffer. + + @param[in,out] PairedLogBuffer - The paired buffer associated to clean up. +*/ +static +_IRQL_requires_max_(PASSIVE_LEVEL) +VOID +StopDebugPrintCallback ( + _Inout_ PPAIRED_DEBUG_LOG_BUFFER PairedLogBuffer + ) +{ + KIRQL oldIrql; + + // + // Restore debug filters to the previous states. + // + DisableVerboseDebugOutput(); + + // + // Stop the callback. + // + NT_VERIFY(NT_SUCCESS(DbgSetDebugPrintCallback(DebugPrintCallback, FALSE))); + + // + // Let us make sure no one is touching the paired buffer. Without this, it + // is possible that the callback is still running concurrently on the other + // processor and touching the paired buffer. + // + oldIrql = ExAcquireSpinLockExclusive(&PairedLogBuffer->ActiveLogBufferLock); + + // + // Free both buffer and mark this paired buffer as invalid, so the other + // thread waiting on this skin lock can tell the buffer is no longer valid + // when the spin lock was released. + // + ExFreePoolWithTag(PairedLogBuffer->ActiveLogBuffer->LogEntries, k_PoolTag); + ExFreePoolWithTag(PairedLogBuffer->InactiveLogBuffer->LogEntries, k_PoolTag); + PairedLogBuffer->BufferValid = FALSE; + + ExReleaseSpinLockExclusive(&PairedLogBuffer->ActiveLogBufferLock, oldIrql); +} + +/*! + @brief Stops the flush buffer thread and cleans up the thread context. + + @param[in,out] ThreadContext - The context associated to the thread and to + clean up. +*/ +DEBUGLOGGER_PAGED +static +_IRQL_requires_max_(PASSIVE_LEVEL) +VOID +StopFlushBufferThread ( + _Inout_ PFLUSH_BUFFER_THREAD_CONTEXT ThreadContext + ) +{ + NTSTATUS status; + + PAGED_CODE(); + + DbgPrintEx(DPFLTR_IHVDRIVER_ID, + DPFLTR_INFO_LEVEL, + "Stopping debug print logging.\n"); + + if (ThreadContext->MaxOverflowedLogSize != 0) + { + DbgPrintEx(DPFLTR_IHVDRIVER_ID, + DPFLTR_INFO_LEVEL, + "Max overflow size = 0x%x. Consider increasing the buffer" + " size and recompile the driver for the next run.\n", + ThreadContext->MaxOverflowedLogSize); + } + + // + // Signal the event to exit the thread, and wait for termination. + // + (VOID)KeSetEvent(&ThreadContext->ThreadExitEvent, IO_NO_INCREMENT, FALSE); + status = KeWaitForSingleObject(ThreadContext->FlushBufferThread, + Executive, + KernelMode, + FALSE, + nullptr); + NT_ASSERT(status == STATUS_SUCCESS); + ObDereferenceObject(ThreadContext->FlushBufferThread); + + // + // No one should be touching the log file now. Close it. + // + NT_VERIFY(NT_SUCCESS(ZwClose(ThreadContext->LogFileHandle))); +} + +/*! + @brief Stops debug print logging. +*/ +DEBUGLOGGER_PAGED +static +_IRQL_requires_max_(PASSIVE_LEVEL) +VOID +StopDebugPrintLoggging ( + VOID + ) +{ + PAGED_CODE(); + + StopFlushBufferThread(&g_ThreadContext); + StopDebugPrintCallback(&g_PairedLogBuffer); +} + +/*! + @brief Unloads this driver. + + @param[in] DriverObject - The associated driver object. +*/ +DEBUGLOGGER_PAGED +static +_Function_class_(DRIVER_UNLOAD) +_IRQL_requires_max_(PASSIVE_LEVEL) +VOID +DriverUnload ( + _In_ PDRIVER_OBJECT DriverObject + ) +{ + UNREFERENCED_PARAMETER(DriverObject); + + PAGED_CODE(); + + StopDebugPrintLoggging(); +} + +/*! + @brief Writes saved debug log messages into the log file and clears them. + + @details This function first swaps active buffer with inactive buffer, so + that the currently active buffer can safely be accessed (ie, inactive + buffer becomes active buffer). Then, writes contents of previously + active buffer into the log file if contents exist. Then, updates the max + overflow count as needed. Finally, it clears the contents of previously + active buffer to make it ready to become active buffer again. + + @param[in,out] ThreadContext - Context to be used by the thread. +*/ +static +_IRQL_requires_max_(PASSIVE_LEVEL) +VOID +FlushDebugLogEntries ( + _Inout_ PFLUSH_BUFFER_THREAD_CONTEXT ThreadContext + ) +{ + NTSTATUS status; + PPAIRED_DEBUG_LOG_BUFFER pairedLogBuffer; + KIRQL oldIrql; + PDEBUG_LOG_BUFFER oldLogBuffer; + IO_STATUS_BLOCK ioStatusBlock; + + status = STATUS_SUCCESS; + pairedLogBuffer = ThreadContext->PairedLogBuffer; + + // + // Swap active buffer and inactive buffer. + // + oldIrql = ExAcquireSpinLockExclusive(&pairedLogBuffer->ActiveLogBufferLock); + oldLogBuffer = pairedLogBuffer->ActiveLogBuffer; + pairedLogBuffer->ActiveLogBuffer = pairedLogBuffer->InactiveLogBuffer; + pairedLogBuffer->InactiveLogBuffer = oldLogBuffer; + ExReleaseSpinLockExclusive(&pairedLogBuffer->ActiveLogBufferLock, oldIrql); + + NT_ASSERT(pairedLogBuffer->ActiveLogBuffer != pairedLogBuffer->InactiveLogBuffer); + + // + // Iterate all saved debug log messages (if exist). + // + for (ULONG offset = 0; offset < oldLogBuffer->NextLogOffset; /**/) + { + PDEBUG_LOG_ENTRY logEntry; + CHAR writeBuffer[k_MaxDbgPrintLogLength + 50]; // 50 for date and time. + ANSI_STRING tmpLogLine; + TIME_FIELDS timeFields; + LARGE_INTEGER localTime; + + logEntry = reinterpret_cast(Add2Ptr( + oldLogBuffer->LogEntries, + offset)); + + // + // Build a temporal ANSI_STRING for stringify non-null terminated string. + // + tmpLogLine.Buffer = logEntry->LogLine; + tmpLogLine.Length = logEntry->LogLineLength; + tmpLogLine.MaximumLength = logEntry->LogLineLength; + + // + // Convert the time stamp to the local time in the human readable format. + // + ExSystemTimeToLocalTime(&logEntry->Timestamp, &localTime); + RtlTimeToTimeFields(&localTime, &timeFields); + + status = RtlStringCchPrintfA(writeBuffer, + RTL_NUMBER_OF(writeBuffer), + "%02hd-%02hd %02hd:%02hd:%02hd.%03hd %Z\r\n", + timeFields.Month, + timeFields.Day, + timeFields.Hour, + timeFields.Minute, + timeFields.Second, + timeFields.Milliseconds, + &tmpLogLine); + if (!NT_SUCCESS(status)) + { + // + // This should not happen, but if it does, just discard all log + // messages. The next attempt will very likely fail too. + // + NT_ASSERT(FALSE); + break; + } + + status = ZwWriteFile(ThreadContext->LogFileHandle, + nullptr, + nullptr, + nullptr, + &ioStatusBlock, + writeBuffer, + static_cast(strlen(writeBuffer)), + nullptr, + nullptr); + if (!NT_SUCCESS(status)) + { + // + // This can happen when the system is shutting down and the file + // system was already unmounted. Bail out, nothing we can do. + // + break; + } + + // + // Compute the offset to the next entry by adding the size of the current + // entry. + // + offset += RTL_SIZEOF_THROUGH_FIELD(DEBUG_LOG_ENTRY, LogLineLength) + + logEntry->LogLineLength; + } + + // + // If the debug log messages exist, and no error happened before, flush the + // log file. This should not fail (unless the file system is unmounted + // after the last successful write). + // + if ((oldLogBuffer->NextLogOffset != 0) && NT_SUCCESS(status)) + { + status = ZwFlushBuffersFile(ThreadContext->LogFileHandle, &ioStatusBlock); + NT_ASSERT(NT_SUCCESS(status)); + } + + // + // Update maximum overflow size as necessary. + // + ThreadContext->MaxOverflowedLogSize = max(ThreadContext->MaxOverflowedLogSize, + oldLogBuffer->OverflowedLogSize); + + // + // Finally, clear the previously active buffer. + // + oldLogBuffer->NextLogOffset = 0; + oldLogBuffer->OverflowedLogSize = 0; +#if DBG + RtlFillMemory(oldLogBuffer->LogEntries, k_DebugLogBufferSize, 0xff); +#endif +} + +/*! + @brief The entry point of the flush buffer thread. + + @param[in] Context - The thread context. +*/ +DEBUGLOGGER_PAGED +static +_Function_class_(KSTART_ROUTINE) +_IRQL_requires_max_(PASSIVE_LEVEL) +VOID +FlushBufferThreadEntryPoint ( + _In_ PVOID Context + ) +{ + static const ULONG intervalMs = 500; + NTSTATUS status; + PFLUSH_BUFFER_THREAD_CONTEXT threadContext; + LARGE_INTEGER interval; + + PAGED_CODE(); + + threadContext = reinterpret_cast(Context); + + interval.QuadPart = -(10000ll * intervalMs); + + do + { + // + // Flush log buffer with interval, or exit when it is requested. + // + status = KeWaitForSingleObject(&threadContext->ThreadExitEvent, + Executive, + KernelMode, + FALSE, + &interval); + FlushDebugLogEntries(threadContext); + } while (status == STATUS_TIMEOUT); + + // + // It is probably a programming error if non STATUS_SUCCESS is returned. Let + // us catch that. + // + NT_ASSERT(status == STATUS_SUCCESS); + PsTerminateSystemThread(status); +} + +/*! + @brief Enables all levels of debug print for all components. + + @details This function enables all debug print while saving the previous + state into g_DebugFilterStates for restore. +*/ +DEBUGLOGGER_INIT +static +VOID +EnableVerboseDebugOutput ( + VOID + ) +{ + ULONG statesOfAllLevels; + BOOLEAN state; + + PAGED_CODE(); + + // + // For all components. + // + for (ULONG componentId = 0; componentId < DPFLTR_ENDOFTABLE_ID; ++componentId) + { + // + // For all levels (levels are 0-31) of the component. + // + statesOfAllLevels = 0; + for (ULONG level = 0; level < 32; ++level) + { + // + // Get the current state, and save it as a single bit onto the 32bit + // integer (statesOfAllLevels). + // + state = static_cast(DbgQueryDebugFilterState(componentId, level)); + SetFlag(statesOfAllLevels, (state << level)); + + NT_VERIFY(NT_SUCCESS(DbgSetDebugFilterState(componentId, level, TRUE))); + } + g_DebugFilterStates[componentId] = statesOfAllLevels; + } +} + +/*! + @brief Starts the debug print callback. + + @details This function takes two buffers to be initialized, and one paired + buffer, which essentially references to those two buffers. All of them + are initialized in this function. + + @param[out] LogBufferActive - Debug log buffer to use initially. + + @param[out] LogBufferInactive - Debug log buffer to be inactive initially. + + @param[out] PairedLogBuffer - A buffer pair to be used in the debug print + callback. + + @return STATUS_SUCCESS or an appropriate status code. +*/ +DEBUGLOGGER_INIT +_IRQL_requires_max_(PASSIVE_LEVEL) +static +NTSTATUS +StartDebugPrintCallback ( + _Out_ PDEBUG_LOG_BUFFER LogBufferActive, + _Out_ PDEBUG_LOG_BUFFER LogBufferInactive, + _Out_ PPAIRED_DEBUG_LOG_BUFFER PairedLogBuffer + ) +{ + NTSTATUS status; + PDEBUG_LOG_ENTRY logEntries1, logEntries2; + + PAGED_CODE(); + + RtlZeroMemory(LogBufferActive, sizeof(*LogBufferActive)); + RtlZeroMemory(LogBufferInactive, sizeof(*LogBufferInactive)); + RtlZeroMemory(PairedLogBuffer, sizeof(*PairedLogBuffer)); + + logEntries2 = nullptr; + + // + // Allocate log buffers. + // + logEntries1 = reinterpret_cast(ExAllocatePoolWithTag( + NonPagedPoolNx, + k_DebugLogBufferSize, + k_PoolTag)); + if (logEntries1 == nullptr) + { + status = STATUS_INSUFFICIENT_RESOURCES; + goto Exit; + } + + logEntries2 = reinterpret_cast(ExAllocatePoolWithTag( + NonPagedPoolNx, + k_DebugLogBufferSize, + k_PoolTag)); + if (logEntries2 == nullptr) + { + status = STATUS_INSUFFICIENT_RESOURCES; + goto Exit; + } + +#if DBG + // + // Fill buffer contents with some distinguishable bytes for ease of debugging. + // + RtlFillMemory(logEntries1, k_DebugLogBufferSize, MAXUCHAR); + RtlFillMemory(logEntries2, k_DebugLogBufferSize, MAXUCHAR); +#endif + + // + // Initialize buffer variables, and mark the paired buffer as valid. This + // lets the debug print callback use this paired buffer. + // + LogBufferActive->LogEntries = logEntries1; + LogBufferInactive->LogEntries = logEntries2; + PairedLogBuffer->ActiveLogBuffer = LogBufferActive; + PairedLogBuffer->InactiveLogBuffer = LogBufferInactive; + PairedLogBuffer->BufferValid = TRUE; + + // + // We have set up everything the debug print callback needs. Start it. + // + status = DbgSetDebugPrintCallback(DebugPrintCallback, TRUE); + if (!NT_SUCCESS(status)) + { + goto Exit; + } + + // + // All good. Enable all levels of debug print for all components. + // + EnableVerboseDebugOutput(); + + DbgPrintEx(DPFLTR_IHVDRIVER_ID, + DPFLTR_INFO_LEVEL, + "Starting debug print logging.\n"); + +Exit: + if (!NT_SUCCESS(status)) + { + if (logEntries2 != nullptr) + { + ExFreePoolWithTag(logEntries2, k_PoolTag); + } + if (logEntries1 != nullptr) + { + ExFreePoolWithTag(logEntries1, k_PoolTag); + } + } + return status; +} + +/*! + @brief Starts the flush buffer thread. + + @param[out] ThreadContext - Context to be used by the thread. + + @return STATUS_SUCCESS or an appropriate status code. +*/ +DEBUGLOGGER_INIT +static +_IRQL_requires_max_(PASSIVE_LEVEL) +NTSTATUS +StartFlushBufferThread ( + _Out_ PFLUSH_BUFFER_THREAD_CONTEXT ThreadContext + ) +{ + static OBJECT_ATTRIBUTES attributes = RTL_CONSTANT_OBJECT_ATTRIBUTES( + &k_LogFilePath, + OBJ_KERNEL_HANDLE | OBJ_CASE_INSENSITIVE); + NTSTATUS status; + HANDLE fileHandle; + HANDLE threadHandle; + IO_STATUS_BLOCK ioStatusBlock; + PKTHREAD thread; + + PAGED_CODE(); + + RtlZeroMemory(ThreadContext, sizeof(*ThreadContext)); + fileHandle = nullptr; + + // + // Open or create the log file. Always append contents at the end. + // + status = ZwCreateFile(&fileHandle, + FILE_APPEND_DATA | SYNCHRONIZE, + &attributes, + &ioStatusBlock, + nullptr, + FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ, + FILE_OPEN_IF, + FILE_SYNCHRONOUS_IO_NONALERT | FILE_NON_DIRECTORY_FILE, + nullptr, + 0); + if (!NT_SUCCESS(status)) + { + goto Exit; + } + + // + // Initialize the context before creating the thread. This avoids race. + // + ThreadContext->LogFileHandle = fileHandle; + ThreadContext->PairedLogBuffer = &g_PairedLogBuffer; + KeInitializeEvent(&ThreadContext->ThreadExitEvent, SynchronizationEvent, FALSE); + + // + // Create the thread with the ready-to-use context. + // + status = PsCreateSystemThread(&threadHandle, + THREAD_ALL_ACCESS, + nullptr, + nullptr, + nullptr, + FlushBufferThreadEntryPoint, + ThreadContext); + if (!NT_SUCCESS(status)) + { + goto Exit; + } + + // + // Get the created thread object. This code does not fail (even the kernel + // code assumes so sometimes). + // + status = ObReferenceObjectByHandle(threadHandle, + THREAD_ALL_ACCESS, + *PsThreadType, + KernelMode, + reinterpret_cast(&thread), + nullptr); + NT_VERIFY(NT_SUCCESS(ZwClose(threadHandle))); + NT_ASSERT(NT_SUCCESS(status)); + + // + // FlushBufferThread is not referenced by the thread. So it is OK to + // initialize after creation of the thread. + // + ThreadContext->FlushBufferThread = thread; + +Exit: + if (!NT_SUCCESS(status)) + { + if (fileHandle != nullptr) + { + NT_VERIFY(NT_SUCCESS(ZwClose(fileHandle))); + } + } + return status; +} + +/*! + @brief Starts debug print logging. + + @return STATUS_SUCCESS or an appropriate status code. +*/ +DEBUGLOGGER_INIT +static +_IRQL_requires_max_(PASSIVE_LEVEL) +NTSTATUS +StartDebugPrintLogging ( + VOID + ) +{ + NTSTATUS status; + BOOLEAN callbackStarted; + + PAGED_CODE(); + + callbackStarted = FALSE; + + // + // Start debug print callback that saves debug print messages into one of + // those two buffers. + // + status = StartDebugPrintCallback(&g_LogBuffer1, &g_LogBuffer2, &g_PairedLogBuffer); + if (!NT_SUCCESS(status)) + { + goto Exit; + } + callbackStarted = TRUE; + + // + // Starts the flush buffer thread that write the saved debug print + // messages into a log file and clears the buffer. + // + status = StartFlushBufferThread(&g_ThreadContext); + if (!NT_SUCCESS(status)) + { + goto Exit; + } + +Exit: + if (!NT_SUCCESS(status)) + { + if (callbackStarted != FALSE) + { + StopDebugPrintCallback(&g_PairedLogBuffer); + } + } + return status; +} + +/*! + @brief The entry point of the driver. Starts debug print logging. + + @param[in] DriverObject - The associated driver object. + + @param[in] RegistryPath - The associated registry path. + + @return STATUS_SUCCESS or an appropriate status code. +*/ +DEBUGLOGGER_INIT +_Use_decl_annotations_ +NTSTATUS +DriverEntry ( + PDRIVER_OBJECT DriverObject, + PUNICODE_STRING RegistryPath + ) +{ + NTSTATUS status; + + UNREFERENCED_PARAMETER(RegistryPath); + + PAGED_CODE(); + + DriverObject->DriverUnload = DriverUnload; + + // + // Start debug print logging. This will fail when the driver started as Boot + // start because we try to open or create the log file while the file system + // is not mounted yet on that timing. Supporting that scenarios is pretty + // easy though. + // + status = StartDebugPrintLogging(); + if (!NT_SUCCESS(status)) + { + goto Exit; + } + +Exit: + return status; +} \ No newline at end of file diff --git a/DebugLogger/DebugLogger.inf b/DebugLogger/DebugLogger.inf new file mode 100644 index 0000000..5191059 --- /dev/null +++ b/DebugLogger/DebugLogger.inf @@ -0,0 +1,32 @@ +; +; DebugLogger.inf +; + +[Version] +Signature="$WINDOWS NT$" +Class=System +ClassGuid={4d36e97d-e325-11ce-bfc1-08002be10318} +Provider=%ManufacturerName% +DriverVer= +CatalogFile=DebugLogger.cat + +[DestinationDirs] +DefaultDestDir = 12 + + +[SourceDisksNames] +1 = %DiskName%,,,"" + +[SourceDisksFiles] + + +[Manufacturer] +%ManufacturerName%=Standard,NT$ARCH$ + +[Standard.NT$ARCH$] + + +[Strings] +ManufacturerName="" ;TODO: Replace with your manufacturer name +ClassName="" +DiskName="DebugLogger Source Disk" diff --git a/DebugLogger/DebugLogger.ruleset b/DebugLogger/DebugLogger.ruleset new file mode 100644 index 0000000..a3dcc5b --- /dev/null +++ b/DebugLogger/DebugLogger.ruleset @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DebugLogger/DebugLogger.vcxproj b/DebugLogger/DebugLogger.vcxproj new file mode 100644 index 0000000..5331375 --- /dev/null +++ b/DebugLogger/DebugLogger.vcxproj @@ -0,0 +1,167 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + Debug + ARM + + + Release + ARM + + + Debug + ARM64 + + + Release + ARM64 + + + + {A43C60C1-5FF6-410A-B59F-5C1C108CFEEB} + {dd38f7fc-d7bd-488b-9242-7d8754cde80d} + v4.5 + 12.0 + Debug + Win32 + DebugLogger + + + + true + WindowsKernelModeDriver10.0 + Driver + WDM + + + false + WindowsKernelModeDriver10.0 + Driver + WDM + + + true + WindowsKernelModeDriver10.0 + Driver + WDM + + + false + WindowsKernelModeDriver10.0 + Driver + WDM + + + true + WindowsKernelModeDriver10.0 + Driver + WDM + + + false + WindowsKernelModeDriver10.0 + Driver + WDM + + + true + WindowsKernelModeDriver10.0 + Driver + WDM + + + false + WindowsKernelModeDriver10.0 + Driver + WDM + + + + + + + + + + + DbgengKernelDebugger + DebugLogger.ruleset + + + DbgengKernelDebugger + DebugLogger.ruleset + + + DbgengKernelDebugger + DebugLogger.ruleset + + + DbgengKernelDebugger + DebugLogger.ruleset + + + DbgengKernelDebugger + DebugLogger.ruleset + + + DbgengKernelDebugger + DebugLogger.ruleset + + + DbgengKernelDebugger + DebugLogger.ruleset + + + DbgengKernelDebugger + DebugLogger.ruleset + + + + false + + + + + false + + + + + false + + + + + false + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DebugLogger/DebugLogger.vcxproj.filters b/DebugLogger/DebugLogger.vcxproj.filters new file mode 100644 index 0000000..edc077d --- /dev/null +++ b/DebugLogger/DebugLogger.vcxproj.filters @@ -0,0 +1,31 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {8E41214B-6785-4CFE-B992-037D68949A14} + inf;inv;inx;mof;mc; + + + + + Driver Files + + + + + Source Files + + + \ No newline at end of file diff --git a/Images/ExampleWithProcessHacker.jpg b/Images/ExampleWithProcessHacker.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cad9b27e413279c2184b495f742b5bc0e5e9169f GIT binary patch literal 207053 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®o*)F~mPX!G57o?Os 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�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
  • -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

    u}=;7+pM_=yD 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�G5nA$l4PbB!%8 z>Bb3(e`(NBDj14`;)9Y5Q~ z_^Q!4cT_H%aefCms4K;IZ<+^xruWQ3W8P`lu1!NbWFq!f?V8HU{IMt5^vRj}CsFce zv%HJ0UF~g7)AR=+2Nmx^oskr<$a+DJO9Sa#ayVRIXu6-{fytU=^>H2 z^uAu5{RX@KZoc}7N{brqr{YH*zCzXgZJerShP`DFcfPWE4{;c|Xtvb1pwpyLTJIeG zZ6OR8@Ofxd=Bg*)g#$^g$4ULqHq8}J@*j+MN?jdklqwa;z)j`Cy!hIOhubs+KEvJ8 zZ2j>G)mkRaw{4VG#zZeZ*E21T8*(-lL19_rE;g_b&Ct)TO#L2+%M;Fg^~T{#l!siK z5G(ya5BYp_3%K!Lf5+Cs0;F!0t%kGobpvOsR}7z2xQ`y+-A-^ZSon`?>>-EJ z-zuRI4+S=*5J_IDeLq5dr?6z9va{eJ+=KV#m{S`i5)hcygmP~1HU%YLN$ zpA&rAEJ-hGim!SZG-vV{KL%CL^tw#xo6Vh=CGw7mQ|u5t?g zZ?HoyVd^d_?xDzQuCGT@PP~XZne1SCn2M=+95^^?v+2=u zK4y4ew?Me(EZn&guqy~Gy(N9wB%q>$QybFT{~1->YoLurGVgVELzAL(nFH)k^GvBDMNUVc4YJ3LgJ(s zut`a#!XfMA_-fR%&r-1^1oskFu=6Y7`agy=JROAuK5@L zk*blEX;%2v=;n;4)pq8+>WM3bkCW$Ak{eg#6Xeo(XOS63hOz?-U_r$RWw1Q(aSeaP~ETxZy-tdp22z-U)jIq;H3nq|0W^s<9kH~|l*K|d4_-dGE zpw9K!B5&bQ#HHQ+hIpk#KHSH$Hd9~v+leXjcELjRE%MwC=I2Tyft(tZsbp@%Vz_sJK zYZZ7rKE+^mNl|g>E@~&*foTbb=R6E75ge1(}F9Qd^R+U zfeO&OmPU;Tb4FnIUZ6y1{L$#MaDBe=BsxgPAd@cq4My+w*-m1a)prak*DT*v&N*|V zS(BW1VAxXcn%R3kmMi}6ktCqDatj=Ot`|Sh4?1Zc-ORZ-xanEmm|g_ip$v@@RE6-? zm$TR)zeVm%wSK9{aG|!R3gx4Ydsn_!ttzN4#w~?iMfxxa?c)|2)b=SgW?aA z6Xw|4_ix(id*KzaS?``kKDsw^)%f3hC6J{TPe%x71Rp{*M5p2h^!y*}PipcQb~fOb zC-)G0j=N3`7alv$XJ2@1$o2oi^WeVk_j>bLC3ddv?OWPQ2oQ3mIqWNpIW((v0`zG%ePfHMz6QhXM=Q2 dIrKxjzc%0F6n6|ZKYWk7&h`KKbL>Cz{{e7bcdedit /set testsigning on + +To install and uninstall the DebugLogger driver, use the `sc` command. For +installation and start: + + >sc create DebugLogger type= kernel binPath= C:\Users\user\Desktop\DebugLogger.sys + >sc start DebugLogger + +For uninstallation: + + >sc stop DebugLogger + >sc delete DebugLogger + >bcdedit /deletevalue testsigning + + +Output +------- + +All captured debug output are saved in `C:\Windows\DebugLogger.log`. + +Any `tail -f` like command lets you view contents of this file real-time and +gives similar user experience as DebugView does. The below command does this: + + > powershell Get-Content -Path C:\Windows\DebugLogger.log -Wait + +Here is an example output from Process Hacker's KProcessHacker3 driver on the +ARM64 system. +![ExampleWithProcessHacker](/Images/ExampleWithProcessHacker.jpg) + +For the testing purpose, the test driver `TestDriver` is included in the project. +Install and run this driver using the `sc` command to see output. + + +Supported Platforms +-------------------- +- Visual Studio 2017 Preview (15.8 Preview 1 or later) + - You will need additional Visual Studio components to compile device drivers + for ARM64 processors. See [Building ARM64 Drivers with the WDK]( + https://docs.microsoft.com/en-us/windows-hardware/drivers/develop/building-arm64-drivers) for more information. +- 64bit versions of Windows 10 on ARM64 or x64 diff --git a/TestDriver/TestDriver.cpp b/TestDriver/TestDriver.cpp new file mode 100644 index 0000000..3bb135d --- /dev/null +++ b/TestDriver/TestDriver.cpp @@ -0,0 +1,54 @@ +/*! + @file TestDriver.cpp + + @brief The basic test driver against DebugLogger. + + @author Satoshi Tanda + + @copyright Copyright (c) 2018, Satoshi Tanda. All rights reserved. + */ +#include + +EXTERN_C DRIVER_INITIALIZE DriverEntry; + +NTSTATUS +DriverEntry ( + PDRIVER_OBJECT DriverObject, + PUNICODE_STRING RegistryPath + ) +{ + // + // Test log messages and expected output. + // + const PCHAR testLogLines[] = + { + "123", // -> "123" + "123\n", // -> "123" + "123\n ", // -> "123" + // -> " " + "123\r\n", // -> "123" + "12\n3", // -> "12" + // -> "3" + "12\n3\n", // -> "12" + // -> "3" + "12\n\n3", // -> "12" + // -> "3" + }; + + UNREFERENCED_PARAMETER(DriverObject); + UNREFERENCED_PARAMETER(RegistryPath); + + for (auto& line : testLogLines) + { + // + // It will be logged despite that the level is INFO and not ERROR + // because DebugLogger enters the system to the verbose mode. + // + DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_INFO_LEVEL, "%s", line); + } + + // + // Always fail so this driver gets unloaded automatically. + // + return STATUS_UNSUCCESSFUL; +} \ No newline at end of file diff --git a/TestDriver/TestDriver.inf b/TestDriver/TestDriver.inf new file mode 100644 index 0000000..89ed0ce --- /dev/null +++ b/TestDriver/TestDriver.inf @@ -0,0 +1,32 @@ +; +; TestDriver.inf +; + +[Version] +Signature="$WINDOWS NT$" +Class=System +ClassGuid={4d36e97d-e325-11ce-bfc1-08002be10318} +Provider=%ManufacturerName% +DriverVer= +CatalogFile=TestDriver.cat + +[DestinationDirs] +DefaultDestDir = 12 + + +[SourceDisksNames] +1 = %DiskName%,,,"" + +[SourceDisksFiles] + + +[Manufacturer] +%ManufacturerName%=Standard,NT$ARCH$ + +[Standard.NT$ARCH$] + + +[Strings] +ManufacturerName="" ;TODO: Replace with your manufacturer name +ClassName="" +DiskName="TestDriver Source Disk" diff --git a/TestDriver/TestDriver.vcxproj b/TestDriver/TestDriver.vcxproj new file mode 100644 index 0000000..4565297 --- /dev/null +++ b/TestDriver/TestDriver.vcxproj @@ -0,0 +1,167 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + Debug + ARM + + + Release + ARM + + + Debug + ARM64 + + + Release + ARM64 + + + + {44387148-C1CA-4D1C-BE1C-7AA2AE8D9878} + {dd38f7fc-d7bd-488b-9242-7d8754cde80d} + v4.5 + 12.0 + Debug + Win32 + TestDriver + + + + Windows10 + true + WindowsKernelModeDriver10.0 + Driver + WDM + + + Windows10 + false + WindowsKernelModeDriver10.0 + Driver + WDM + + + Windows10 + true + WindowsKernelModeDriver10.0 + Driver + WDM + + + Windows10 + false + WindowsKernelModeDriver10.0 + Driver + WDM + + + Windows10 + true + WindowsKernelModeDriver10.0 + Driver + WDM + + + Windows10 + false + WindowsKernelModeDriver10.0 + Driver + WDM + + + Windows10 + true + WindowsKernelModeDriver10.0 + Driver + WDM + + + Windows10 + false + WindowsKernelModeDriver10.0 + Driver + WDM + + + + + + + + + + + DbgengKernelDebugger + + + DbgengKernelDebugger + + + DbgengKernelDebugger + + + DbgengKernelDebugger + + + DbgengKernelDebugger + + + DbgengKernelDebugger + + + DbgengKernelDebugger + + + DbgengKernelDebugger + + + + false + + + + + false + + + + + false + + + + + false + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TestDriver/TestDriver.vcxproj.filters b/TestDriver/TestDriver.vcxproj.filters new file mode 100644 index 0000000..68ca527 --- /dev/null +++ b/TestDriver/TestDriver.vcxproj.filters @@ -0,0 +1,31 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {8E41214B-6785-4CFE-B992-037D68949A14} + inf;inv;inx;mof;mc; + + + + + Driver Files + + + + + Source Files + + + \ No newline at end of file