gpt4 book ai didi

c++ - 从内核模式执行用户模式可执行文件

转载 作者:可可西里 更新时间:2023-11-01 13:11:52 27 4
gpt4 key购买 nike

我正在为我们的司机团队构建硬件模拟器。现在,模拟器分为 2 个模块:第一个模块在驱动程序内部以内核模式运行,这是驱动程序和 HW-Simulator 之间的主要接口(interface)。第二个模块是可执行的用户模式代码,它为模拟器生成数据并通过调用 DeviceIOControl(在 windows API 下)将其传输到模拟器

我的需求是:我希望能够从内核模式中执行用户模式可执行文件。我需要能够以一种相对便携的方式来做到这一点。目前我只在 Windows 上运行,但很快就会改变。此外,我需要能够通过它的 stdin 管道与用户模式代码通信,以便重新配置它并最终关闭它。

我发现了这个: Executing a user-space function from the kernel space

但它只与 linux 内核有关。有没有更便携的选择?还是 Windows 替代品?

我能否在 Windows 中通过简单地使用 ShellExecute/RunAs API 函数来执行此操作?

注意:我们知道从内核空间调用用户模式代码所涉及的安全风险。但由于这仅用作测试环境,永远不会到达我们的发布代码,因此我们并不担心。

最佳答案

在 Windows 内核中没有一种干净的方法可以做到这一点。用户模式 ​​API CreateProcess创建进程使用未记录的 API ( NtCreateProcess/NtCreateThread ) 来创建进程。

推荐的做法是拥有“合作伙伴服务”,这是一种使用 IOCTL 与您的驱动程序通信的用户模式服务。您可以使用 inverted call model让您的驱动程序调用您的服务以创建一个流程。

关于c++ - 从内核模式执行用户模式可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6127115/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com