如何创建一个将在 Windows 内核级别运行的进程?

Posted

技术标签:

【中文标题】如何创建一个将在 Windows 内核级别运行的进程?【英文标题】:how to create a process which will run in kernel level in windows? 【发布时间】:2011-02-07 13:18:12 【问题描述】:

我想创建一个kernel level of process for windows (Ring 0),但我不知道从哪里开始。我想知道哪个SDK 是必需的,任何显示其实现的教程都会有所帮助。

【问题讨论】:

为什么?你打算写什么样的程序,你认为需要内核权限?如果您的程序崩溃或以其他方式出错,它将关闭整个系统。这对可用性来说根本不是好兆头。 您需要内核级访问权限做什么?可能有一种更安全的方法可以实现您所追求的目标.. @RAJ K:请,请,请不要创建未显示在任务管理器中的进程。它不必被非管理员用户杀死,但它至少应该显示出来,所以我知道它就在那里!它应该由管理员控制,因为这是管理员的工作。这就是成为管理员的意义。只需让您的活动监视器运行作为非管理员用户帐户下无法杀死的进程,然后使用管理员帐户来控制监控和查看活动日志等。 我们为什么要帮助您编写恶意软件? @RAJ:告诉客户他们想要的东西是不可能的。这不是谎言。您不能创建“内核模式进程”,它们的应用程序不符合驱动程序的条件。您无法从任务管理器中隐藏它。你能做的最好的就是将它从屏幕底部的任务栏中隐藏起来。那应该足够好了。如果它对用户做了有用的事情,他们会保持打开状态。否则,如果他们在任务管理器中遇到麻烦并关闭它,那么他们该死的希望它关闭并且没有办法阻止他们。有很多方法可以杀死进程。 【参考方案1】:

SDK 是 Windows Driver Kit 和文档 here。作为对您的问题的更正,在内核模式下您不能使用进程,因为内核模式驱动程序作为操作系统执行程序的一部分运行。不过你可以创建内核线程。

【讨论】:

【参考方案2】:

您是在与how to create a process which is not visible in task manager or services list 一起提出这个问题的

创建一个内核模式的解决方案会花费太多的开销来做你想做的事情,以至于它真的不是解决方案。创建一个驱动程序来替代典型的用户模式桌面应用程序并不像听起来那么简单。

您应该:

    使用 Windows 安全性来限制用户 将您的应用程序编写为服务(这仍然不是一个好的解决方案 imo,因为管理员可以停止它,并且它看到的“活动”级别与桌面应用程序不同) 采取一些基本技巧来防止关闭,例如两个哨兵进程相互监视并保持彼此存活。

【讨论】:

【参考方案3】:

您可以按照 Shinnok 的指示创建系统线程。 Windows 没有您想要执行的功能。

【讨论】:

以上是关于如何创建一个将在 Windows 内核级别运行的进程?的主要内容,如果未能解决你的问题,请参考以下文章

内核裁剪--三星2410

windows 驱动与内核调试 学习5

windows 驱动与内核调试 学习5

windows 驱动与内核调试 学习5

如何查找 Windows 服务当前正在使用的内核数量?

CUDA - 子网格将在哪个流中?