仿照 KdDebuggerNotPresent变量的定义,在自己的源文件中添加下面两句来定义KdEnteredDebugger变量
*extern PBOOLEAN KdEnteredDebugger;
#define KD_ENTERED_DEBUGGER KdEnteredDebugger
如下面的代码就是打印KdEnteredDebugger变量的地址
#include<NTDDK.H>
extern PBOOLEAN KdEnteredDebugger;
#define KD_ENTERED_DEBUGGER *KdEnteredDebugger
//查找KdEnteredDebugger地址
VOID UnloadDriver(PDRIVER_OBJECT driver)
{
UNREFERENCED_PARAMETER(driver);
DbgPrint(“驱动卸载!!!!!”);
}
NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING RegistryPath)
{
NTSTATUS status=STATUS_SUCCESS;
UNICODE_STRING func;
PVOID addr = 0;
UNREFERENCED_PARAMETER(RegistryPath);
RtlInitUnicodeString(&func, L"IoAllocateMdl");
addr = MmGetSystemRoutineAddress(&func);
DbgPrint(“IoAllocateMdl的地址:%llx\n”,addr);
DbgPrint(“KdEnteredDebugger的地址:%llx\n”, KdEnteredDebugger);
driver->DriverUnload = UnloadDriver;
return status;
}
执行结果如下图:

本文介绍了如何在源文件中定义KdEnteredDebugger变量,并通过代码示例展示了如何打印该变量的地址。这对于理解内核调试环境和进行相关开发工作具有一定的指导意义。
5057

被折叠的 条评论
为什么被折叠?



