从内核模式显示MessageBox

消息框提供了一种向用户显示反馈的简单方法。在用户模式下,可以使用MessageBoxWAPI 函数显示一个消息框。但是,此 API 在内核模式下不存在。从内核模式显示信息的常用方法之一是DbgPrintAPI,它可以从 DbgView 或附加的内核调试器中侦听。不过最近我想从内核模式显示一个消息框,以便用户可以轻松接收反馈。已经有关于它是如何在网络上完成的资源,但我想带你了解MessageBox函数本身的内部工作原理并添加更多信息。

MessageBoxW

APIMessageBoxW位于. user32.dll它唯一做的就是调用MessageBoxTimeoutW. 在 内部MessageBoxTimeoutW,一个结构被初始化,它包含消息框的所有参数,例如文本、标题和类型。最后,MessageBoxWorker被调用。这个函数运行一些额外的检查,例如,如果当前线程是一个 GUI 线程。它还检查是否将父窗口句柄传递到MessageBoxW. 如果是这种情况,则该函数调用SoftModalMessageBox,否则,它调用ServiceMessageBox。由于我们在内核模式下没有父窗口句柄,因此我们将进入ServiceMessageBox.

© 版权声明
THE END
喜欢就支持一下吧
点赞39 分享