由于我使用的是C#和Java等高级语言,而且我不熟悉C和汇编,因此我很难理解如何编写内核模式驱动程序以进行系统范围的api挂钩。
我想为学习目的写一个简单的驱动程序和gui。它不一定非常完美。
我试图做的是编写一个简单的C#gui和一个内核模式驱动程序,它将用于现代Windows操作系统(x86和x64)上的系统范围的api挂钩。例如:MessageBoxW api。
C#gui将有一个挂钩和按钮的按钮解开MessageBoxW api。如果成功或不成功挂钩或取消挂钩,将提示用户。挂钩时,只要进程尝试显示消息框,驱动程序就会向c#应用程序发送有关详细信息的消息,而c#应用程序将向用户显示一个对话框,例如"此进程尝试显示消息框。你允许还是不允许?"用户可以选择是否允许。
我知道这种类型的软件可能没有任何意义,我这样做是出于学习目的。
首先,这是可以实现的吗?
是否有关于此主题的任何好的和易于学习的文档?我尝试过微软(如何编写内核模式驱动程序),但从那里学习起来真的很难,而且它并没有专注于api挂钩。我需要更多的分步指南或完整的示例代码。
我的最后一个问题是,即使我成功编写内核模式驱动程序,是否必须进行数字签名才能在任何计算机上使用?