我正在尝试学习如何对Windows驱动程序进行编码,不幸的是,信息很少,有时我发现很难通过阅读MSDN
页面来获得完整的图片。
这就是说,几个星期前,我找到了一个相当简单的代码示例,该示例使用上述函数之一注册了回调,并在创建进程时将一些信息打印到调试控制台,我对其进行了一些修改只需打印出可执行文件的名称和 PID 。我计划将其保存以供以后参考,但有时我会错误地删除了代码,现在当我再次尝试实现相同的功能时,每次尝试加载驱动程序时我都无法正常工作ACCESS DENIED
错误。
这里是NotifyRoutine
VOID PsCreateProcessNotifyEx_CB(IN PEPROCESS Process, IN HANDLE ProcessId, IN PPS_CREATE_NOTIFY_INFO CreateInfo)
{
if(CreateInfo)
DbgPrint("PID = %d\r\n", ProcessId);
}
我正在像这样在DriverEntry
中注册回调。
NTSTATUS NtStatus = PsSetCreateProcessNotifyRoutineEx(PsCreateProcessNotifyEx_CB, FALSE);
然后通过将Remove参数设置为DriverUnload
,在TRUE
中删除
我希望我能找到我最初引用的代码所在的原始页面,但是我已经搜索了数小时并尝试了一些其他操作,但现在无法正常工作。
请有人指出我想念的东西。
答案 0 :(得分:0)
如果您在返回值中查看PsSetCreateProcessNotifyRoutineEx文档,则会显示“包含回调例程指针的图像的图像标题中未设置IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY”。您需要在Visual Studio的链接器选项中添加此选项/ INTEGRITYCHECK,或者只需使用PE编辑器在sys文件中对其进行编辑