gpt4 book ai didi

C++ 可以访问内核模式注册表项访问吗?

转载 作者:行者123 更新时间:2023-11-28 03:45:38 25 4
gpt4 key购买 nike

当我使用 C# 时,我只能访问用户模式注册表访问。

使用 C++ 访问内核模式注册表访问是否非常困难?

我记得在某个地方读过我可能必须创建一个虚拟 Windows 驱动程序或其他东西?

编辑:基本上作为一个爱好项目,我希望创建一个简单的注册表监视器。但是,我确实想捕获内核模式(以及用户模式)注册表访问......上次我这样做时,使用 C# 我无法访问内核模式事件。

最佳答案

有两种方法可以实现:

  • 在内核中挂接相关函数 - 传统方式 - 这需要 C/内核驱动程序。这在 x86 Windows 上是可能的,但在 x64 上 Kernel Patch Protection将检测到这些修改并关闭系统(蓝屏)。
  • 构建一个 registry filter driver - 这是现在鼓励的解决此问题的方法,也是进程监视器的工作方式。您也可以通过这种方式构建文件系统过滤驱动程序。本质上,您只需要将信息传回用户空间,归结为:

    IoRegisterDevice(...somewhere in \Devices\YourDriverName...)
    IoCreateSymbolicLink(\\DosDevices\Name -> \Devices\YourDriverName)

    然后 C、C++、C# 应用程序应该能够打开文件 \\.\YourDriverNameDeviceIoControl 并接收响应。

可以使用 C++ 编写内核驱动程序,但是 see this before you embark on doing so .更清楚地说,您需要非常小心内核模式(分页、非分页)中的内存,并且您将无法访问标准库的大部分内容。

顺便说一句,您应该知道:

  • 并非所有注册表配置单元都可供内核模式驱动程序访问,具体取决于上下文。
  • 路径不常见。因此内核访问 \Registry\System 而用户态访问 HKLM

关于C++ 可以访问内核模式注册表项访问吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7779635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com