仿照 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;
}
执行结果如下图: