首页
社区
课程
招聘
[讨论] 有没有可以在 DISPATCH_LEVEL 上写注册表的核心函数?
发表于: 2023-3-29 04:45 6795

[讨论] 有没有可以在 DISPATCH_LEVEL 上写注册表的核心函数?

2023-3-29 04:45
6795

有没有可以在 DISPATCH_LEVEL 写注册表的核心函数?
谢谢


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 3001
活跃值: (2625)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2

在 DISPATCH_LEVEL 的 IRQL 下访问注册表的函数是不推荐的,因为它可能会导致系统性能下降,安全性隐患以及蓝屏等严重问题发生。因此,在内核中访问注册表的函数应该在 PASSIVE_LEVEL 或者低于 PASSIVE_LEVEL 的 IRQL 中进行。如果一定需要在 DISPATCH_LEVEL 中访问注册表,可以使用 CmRegisterCallbackEx 函数在 PASSIVE_LEVEL 或者低于 PASSIVE_LEVEL 的 IRQL 中注册回调函数,回调函数可以在 DISPATCH_LEVEL 的 IRQL 下执行。

以下是一个使用 CmRegisterCallbackEx 函数注册注册表回调函数的示例代码:


#include <ntddk.h>

#define REG_NOTIFY_CLASS_KEY 3
#define REG_NOTIFY_CLASS_VALUE 4

VOID RegistryCallback(
    IN PVOID CallbackContext,
    IN PVOID Argument1,
    IN PVOID Argument2
    )
{
    PUNICODE_STRING pKeyName = (PUNICODE_STRING)Argument1;

    if (pKeyName != NULL)
    {
        KdPrint(("registry key %wZ is modified\n", pKeyName));
    }
}

VOID DriverUnload(
    IN PDRIVER_OBJECT DriverObject
    )
{
    ULONG ulRegCookie = 0;

    CmUnRegisterCallback(ulRegCookie);
}

NTSTATUS DriverEntry(
    IN PDRIVER_OBJECT DriverObject,
    IN PUNICODE_STRING RegistryPath
    )
{
    NTSTATUS status;

    status = CmRegisterCallbackEx(
        RegistryCallback,
        &ExNotifyCallback,
        DriverObject,
        NULL,
        &ulRegCookie,
        NULL
        );
    if (!NT_SUCCESS(status))
    {
        KdPrint(("Failed to register registry callback function\n"));
    }

    DriverObject->DriverUnload = DriverUnload;

    return status;
}


在以上代码中,我们在驱动入口函数(DriverEntry)中使用 CmRegisterCallbackEx 函数注册了一个回调函数(RegistryCallback),并将当前驱动对象(DriverObject)作为上下文参数传递给回调函数。回调函数会在任意进程在注册表上作出更改时被调用。

在此示例代码中,我们只是简单地使用 KdPrint 函数输出了更改的键名,实际使用中需要根据需要修改回调函数具体实现。

请注意,此示例代码作为一个演示,不适用于所有情况。具体实现需要根据实际情况进行修改和完善。


2023-3-29 14:45
0
雪    币: 203
活跃值: (1204)
能力值: ( LV9,RANK:195 )
在线值:
发帖
回帖
粉丝
3
caocaofff 在 DISPATCH_LEVEL 的 IRQL 下访问注册表的函数是不推荐的,因为它可能会导致系统性能下降,安全性隐患以及蓝屏等严重问题发生。因此,在内核中访问注册表的函数应该在 PASSIVE_LE ...
这是chatgpt?
2023-3-30 11:12
1
雪    币: 3001
活跃值: (2625)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
palkiver 这是chatgpt?
被你发现了
2023-3-30 11:22
0
雪    币: 515
活跃值: (3312)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wem
5
牛牛牛
2023-4-4 18:33
0
游客
登录 | 注册 方可回帖
返回
//