【问题标题】:Differences in kernel mode and drivers内核模式和驱动的区别
【发布时间】:2011-05-24 02:33:03
【问题描述】:

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

据我了解,内核模式驱动程序可以做任何内核可以做的事情,并且在某些方面类似于 linux 模块。

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

你可以通过内核补丁做哪些你不能通过驱动程序做的事情?

【问题讨论】:

    标签: windows kernel drivers


    【解决方案1】:

    在这种情况下,修补内核意味着修改其(未记录的?)内部结构以实现某些功能,通常挂钩各种功能(例如打开文件)。你不应该乱搞不属于你的内部内核结构。以前微软官方没有提供一些东西的钩子,所以安全公司对内部进行逆向工程,直接钩子内核。最近微软官方提供了一些东西的hook,所以直接hook内核的需求不是很强。

    【讨论】:

      【解决方案2】:

      确实,内核模式驱动程序可以做任何内核可以做的事情——毕竟,它们都在 ring 0 中运行。这里的关键问题是:这有多难?关于可能在不同内核版本之间发生变化的内部细节。比如NtTerminateProcess的系统调用号会在版本之间发生变化,所以一个hook SSDT的驱动会在版本之间中断(虽然系统调用号可以通过其他方式获得)。读取或修改EPROCESSETHREAD 等内部结构的字段也是有风险的,因为这些结构在版本之间也会发生变化。对于司机来说,这些都不是不可能做到的,但很难。

      如果为 hooking 提供了官方接口,微软可以保证版本之间的兼容性以及能够控制谁可以做什么(例如,只有签名的驱动程序才能使用对象管理器回调)。但是,Microsoft 不能对所有事情都这样做,因为有些事情只是驱动程序不应该知道的实现细节。

      【讨论】:

      • 那么,为什么 Symantec 和 McAfee 对无法连接到内核如此着迷?
      猜你喜欢
      • 1970-01-01
      • 2014-03-12
      • 2015-11-19
      • 1970-01-01
      • 2022-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多