【问题标题】:NT Kernel ProgrammingNT 内核编程
【发布时间】:2008-10-07 09:51:43
【问题描述】:

我想知道从哪里开始,或者如何挂钩或修补 Windows 内核(XP 及更高版本)。我对 McAfee Entercept 之类的软件或某些修补内核的防病毒扫描程序特别感兴趣。我想知道初创公司创建向内核添加功能的软件的可行性(我知道 KPP,并且它可能被绕过),以及这样做的任何修改。我找不到简单的描述,并且对 Win32 的经验有限。非常感谢任何帮助,

J

进一步澄清:我并不追求这样的驱动程序,并且会感兴趣是否在技术上可以将诸如 PaX 之类的东西移植到 Windows 上。这是一个不好的例子,因为 windows 已经有了一个实现,但我很感兴趣是否可以在不访问 NT 源代码的情况下移植类似的技术。

【问题讨论】:

    标签: windows security kernel nt code-patching


    【解决方案1】:

    是的,很可能挂接到内核中。我强烈推荐Windows InternalsRootkits这两本书。

    这些应该为您提供所需的所有信息。

    【讨论】:

      【解决方案2】:

      Microsoft Detours 库允许您拦截来自进程的 API 调用,并插入或替换您自己的代码。

      请注意,成功完成这类事情可能需要的不仅仅是有限的 Win32 经验。可以想象,这可能是一个非常复杂的话题。

      【讨论】:

      • 注意:这对修补内核没有帮助,只对用户空间有帮助。
      • 不会,但不清楚他要问的可能是内核驱动程序(补丁在 Windows 内核世界中不是正确的术语)不是他需要的,这个库就足够了。跨度>
      • 你不会经常听到“补丁”,但微软确实使用了“内核补丁保护”这个词,所以它在 Windows 世界中并不奇怪。
      【解决方案3】:

      驱动程序开发根本不是一件容易的事。杀毒软件需要处理文件系统(文件系统过滤驱动程序),使生活变得更加复杂。如果您尝试更详细地描述您想要实现的目标,这将很有用。

      最推荐的驱动程序开发资源是OSR。有 2 个相关的邮件列表:

      1. ntdev通用驱动开发
      2. ntfsd用于文件系统驱动开发

      书单可以在here找到。

      除非驱动程序是您的核心忙碌(在这种情况下找到具有内核经验的人),否则我强烈建议将这项工作外包。在上面的列表中,您可以找到很多顾问。

      不幸的是,基本上无法访问 Windows 源代码 :)。要使用虚拟内存管理器,您必须处于内核模式(如果可能的话)。

      试着在 ntdev 上问这个问题,你会问到世界上大多数内核开发者。您需要提出更具体的问题才能获得合理的答案(我会关注主题,有趣的话题)。
      如果正确理解你想要做什么,这在 Windows 上是不可能的。至少不是没有主要的逆向工程工作,但我主要使用标准类型的驱动程序,所以我认为我知道的不够多,无法得出最终结论。

      回复评论:

      我不确定 Entercept 到底在做什么(在产品描述中没有发现任何暗示他们播放内存或进程权限的内容)。 因此,定义最终目标而不是具体的技术如何实现这一目标可能是更有成效的方式。

      对评论 2 的回应:

      1.1。什么是盖子?

      LIDS 是 Xie Huagang 和 Philippe Biondi 编写的 Linux 内核增强版。它实现了一些 Linux 内核本机没有的安全特性。 其中一些包括:
      1. 强制访问控制 (MAC) - 不知道什么是真正的意思。
      2. 端口扫描检测器 - 这在this 网站上绝对可行。
      3. 桩保护 - 文件系统过滤驱动上面解释。
      4.进程保护 - 你可以在你的驱动程序中hook process creation,在ntdev档案中查看有很多关于这个的discussions

      【讨论】:

      • 您好 Ilya,我当然会将工作外包,但首先要确定它是可能的,其次要知道要雇用哪种类型的程序员。我猜我要问的一定是可能的,因为像 Entercept 这样的产品可以管理它?
      • Entercept 是windows 的系统调用拦截,它们一定是以某种方式挂钩到内核中的。我感兴趣的具体目标是,例如移植 LIDS 之类的东西,或者为 windows 实现这样的东西。这样的事情可能吗,也许是内核补丁?
      • 只是一个旁注,你不修补内核,你写一个扩展 - 内核模式驱动程序
      • 对于 MAC 参见此处en.wikipedia.org/wiki/Mandatory_access_control 我对通用类型的功能更感兴趣,而不是任何特定功能,我想保持抽象的可能性。盖子可以是一个模块,但仍然需要修补内核 AFAIK
      • 祝你好运是什么意思?根据这个en.wikipedia.org/wiki/Kernel_Patch_Protection,它经常发生,但我想知道它可以做到什么程度。
      【解决方案4】:

      您谈论修补内核时没有提供合理的解释来说明您为什么要这样做,以及为什么您认为官方 API 无法让您到达您想要的位置。因此,我们必须假设您正计划编写某种恶意软件——不要指望 stackoverflow 上的任何人会帮助您!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-02
        • 2019-07-06
        • 2013-10-22
        • 1970-01-01
        • 2012-09-11
        • 2020-07-18
        • 1970-01-01
        相关资源
        最近更新 更多