gpt4 book ai didi

windows - 用于保护驱动程序的注册表访问 Hook

转载 作者:可可西里 更新时间:2023-11-01 10:38:22 24 4
gpt4 key购买 nike

我正在为 Windows NT 编写驱动程序,为用户空间应用程序提供 Ring-0 访问。我想制作一个具有专有权的实用程序来执行任何用户的命令,这些命令将受到保护免受任何外部有害影响。上网发现需要hook一些native内核函数,比如NtOpenProcessNtTerminateProcessNtDublicateObject等,我已经制作了一个保护应用程序的工作驱动程序,但后来我意识到最好也防止它从外部尝试删除驱动程序或在操作系统启动期间禁止其加载,如防火墙。我将任务分为两部分:防止从 \system32\drivers\ 中物理删除驱动程序,并防止更改/删除负责加载驱动程序的注册表项 (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\服务).

问题是我不明白如何从内核空间 Hook 对注册表项的访问,甚至不确定这是否可能:来自 ntdll 的所有与注册表一起使用的函数都在用户空间中,无法从内核空间访问。此外,我可以从用户空间设置的所有 API Hook 都将位于特定进程的内存上下文中。所以我们需要将 Dll 注入(inject)到每个进程中,无论是当前进程还是新进程。

有没有一种方法可以在一个地方挂接所有 NT 调用,而无需将 Dll 注入(inject)每个进程?

最佳答案

你这样做的方式不对。注册表调用也是 nt 系统调用,驻留在 SSDT 中(作为另一个 Zw* 系统调用)。但是 Hook SSDT 是不好的做法。主要缺点 - 由于 PathGuard,它不能在 x64 系统上工作。正确的方法是使用记录在案的特定操作系统过滤机制。对于注册表调用,它是 Configuration Manager 回调。对于此回调的 windows xp 版本有一些注意事项(一些功能未实现或伪造)但 xp 现在已经死了 =)。使用起来非常简单。您可以从本指南开始(和结束 =))http://msdn.microsoft.com/en-us/library/windows/hardware/ff545879(v=vs.85).aspx

关于windows - 用于保护驱动程序的注册表访问 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12599343/

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