【问题标题】:Create a process from a driver从驱动程序创建进程
【发布时间】:2010-11-11 06:21:18
【问题描述】:

有没有办法在 Windows NT 平台 (XP-W7) 上从内核模式创建用户模式进程?

编辑:我必须只安装驱动程序。这是项目的具体情况。

【问题讨论】:

标签: windows kernel driver internals


【解决方案1】:

要创建有效的 win32 进程,驱动程序必须与 CSRSS 进行通信(完全未记录)。所以我最终通过排队一个用户模式 ​​APC 并在现有 win32 进程的上下文中为 APC 代码分配虚拟内存(该代码将调用 CreateProcess 并完成这项工作)。

这是一个棘手的方法,但它有效。

【讨论】:

    【解决方案2】:

    我不知道实现此目的的更简单方法。但是,如果运行 Windows 服务,将重叠的 DeviceIoControl 放入您的驱动程序中呢?返回时,服务可以检查它从驱动程序接收到的数据并启动相应的应用程序。

    【讨论】:

    • 我会说这是正确的解决方案。从服务发出反向 IRP,让驱动程序在需要开始用户模式进程时完成。
    • 感谢您的建议,但我的服务无法运行(如果只有该服务将被安装并从内核模式启动)。
    • @Sergius:无论如何,您都必须安装驱动程序。您可以使用相同的 INF 文件安装服务。
    【解决方案3】:

    这不能直接完成 - 创建一个 win32 进程需要 CreateProcess 的用户模式部分进行一些设置,而不仅仅是在内核模式下创建进程对象。

    您需要一些用户模式代码 - 服务、桌面应用程序等,以启动您的用户模式应用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-02
      • 2011-05-12
      • 1970-01-01
      • 2018-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多