0

我在这里读到相反的情况是可能的,但是如何实现这样的事情呢?我希望有一种简单的方法,类似于从加载的 DLL 调用,但我的谷歌研究一无所获。我唯一的另一个想法是,可以传递一些预定义的常量,WriteFile或者DeviceIoControl驱动程序像 switch 语句一样解析以执行相关功能;是否存在更直接的方法?

4

1 回答 1

1

问题是你为什么要这样做?一般来说,如果你必须依赖这样的机制,你需要重新审视你正在编写的应用程序/驱动程序的设计。

在用户模式应用程序的上下文中做某事的正确方法正是您所描述的。您可以对驱动程序进行 DeviceIoControl 调用,驱动程序会验证您传递的所有参数,然后代表用户模式调用执行操作。

如果出于某种原因,您需要直接调用内核,您将不得不求助于未记录的方法。有一些方法可以连接到内核调度表并覆盖其中一个调度处理程序以将调用重定向到您的函数。但我希望您永远不会向您的客户运送这样的东西。这有助于了解调度表的工作原理等,但会带来一些安全噩梦。最终,您的软件不应该为某人的机器被黑客入侵负责。

于 2021-02-23T21:54:54.923 回答