在内核模式下,从预操作例程中删除所需的访问,会使进程永远处于暂停状态

Removing the desired access from the pre operation routine in kernel mode, leaves the process in eternal suspension

本文关键字:访问 进程 永远 暂停状态 删除 模式 内核 操作 例程      更新时间:2024-09-30

我是内核和c++开发的新手,但我正在尝试开发一个处理程序测试,在该测试中,可以在特定进程(notepad.exe )的预操作例程中删除OperationInformation->Parameters->CreateHandleInformation.DesiredAccessPROCESS_SUSPEND_RESUME标志


if (OperationInformation->Operation == OB_OPERATION_HANDLE_CREATE) 
{
OperationInformation->Parameters->CreateHandleInformation.DesiredAccess &= ~0x0001;
OperationInformation->Parameters->CreateHandleInformation.DesiredAccess &= ~0x0800;
KdPrint(("[OperationInformation->Operation]: OB_OPERATION_HANDLE_CREATErn"));
}

我可以删除标志0x0001(即PROCESS_TERMINATE(和0x0800(即PROCESS_SUSPEND_RESUME(,但当创建进程时,它将永远挂起。我的测试目标是正常运行notepad.exe,防止进程被挂起或终止。

我正在主机上使用Visual Studio 2019。物理目标PC和主机正在运行Windows 10 1909

我找到了一个简单的解决方案。只需运行notepad.exe,然后指示内核驱动程序删除这些标志(0x0800(。Notepad.exe无法暂停或恢复