内核模式和驱动程序的差异

时间:2010-12-11 23:35:37

标签: windows kernel drivers

我只是想了解修补内核和编写驱动程序的差异。

据我所知,内核模式驱动程序可以执行内核可以执行的任何操作,并且在某些方面类似于Linux模块。

为什么当微软阻止他们修补Windows内核时,AV制造商是如此upset

通过内核修补可以通过驱动程序执行哪些操作?

2 个答案:

答案 0 :(得分:1)

在此上下文中,修补内核意味着修改其(未记录的?)内部结构以实现某些功能,通常是挂钩各种功能(例如打开文件)。你不应该搞乱不属于你的内部内核结构。过去,微软没有为某些事情提供官方挂钩,因此安全公司反向设计内部并直接挂钩内核。最近微软为某些事情提供了官方挂钩,因此直接挂钩内核的需求并不强烈。

答案 1 :(得分:0)

内核模式驱动程序确实可以执行内核可以执行的任何操作 - 毕竟,它们都在第0环中运行。这里的关键问题是:有多难?修补内容依赖关于可能在不同内核版本之间更改的内部细节。例如,系统调用号NtTerminateProcess将在不同版本之间发生变化,因此挂钩SSDT的驱动程序将在不同版本之间中断(尽管系统调用号可以通过其他方式获得)。读取或修改内部结构的字段(例如EPROCESSETHREAD)也存在风险,因为这些结构在不同版本之间也会发生变化。对于司机来说,这一切都不可能,但这很难。

如果提供了用于挂钩的官方界面,Microsoft可以保证版本之间的兼容性以及能够控制谁可以做什么(例如,只有已签名的驱动程序可以使用对象管理器回调)。但是,Microsoft无法为所有内容执行此操作,因为有些内容只是驱动程序不应该了解的实现细节。