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

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

2023-3-29 04:45
6951

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


[注意]看雪招聘,专注安全领域的专业人才平台!

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

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

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


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#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
活跃值: (1274)
能力值: ( LV9,RANK:195 )
在线值:
发帖
回帖
粉丝
3
caocaofff 在 DISPATCH_LEVEL 的 IRQL 下访问注册表的函数是不推荐的,因为它可能会导致系统性能下降,安全性隐患以及蓝屏等严重问题发生。因此,在内核中访问注册表的函数应该在 PASSIVE_LE ...
这是chatgpt?
2023-3-30 11:12
1
雪    币: 3032
活跃值: (2650)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
palkiver 这是chatgpt?
被你发现了
2023-3-30 11:22
0
雪    币: 515
活跃值: (3332)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wem
5
牛牛牛
2023-4-4 18:33
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册