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

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

2023-3-29 04:45
6016
收藏
点赞0
打赏
分享
最新回复 (4)
雪    币: 2927
活跃值: (2530)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
caocaofff 2023-3-29 14:45
2
0

在 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 函数输出了更改的键名,实际使用中需要根据需要修改回调函数具体实现。

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


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