在内核模式下,从预操作例程中删除所需的访问,会使进程永远处于暂停状态
Removing the desired access from the pre operation routine in kernel mode, leaves the process in eternal suspension
我是内核和c++开发的新手,但我正在尝试开发一个处理程序测试,在该测试中,可以在特定进程(notepad.exe )
的预操作例程中删除OperationInformation->Parameters->CreateHandleInformation.DesiredAccess
的PROCESS_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无法暂停或恢复
相关文章:
- 为什么 Windows 拒绝访问某些进程的名称?
- 从根权限进程创建可访问的文件
- 使用加速进程间创建消息队列 - 内存访问冲突
- C++ Windows:从主进程和 CallWndProc 进程访问相同的变量
- 为什么创建进程 API 调用会导致内存访问冲突?
- 如何:监视Windows中另一个进程的文件访问?
- 进程退出,返回值3221225477访问多维向量
- 确定打开进程的内存访问位置
- 通过进程模块C 枚举时,访问被拒绝
- 如何在 Python 进程中访问由C++进程创建的互斥锁
- 尝试启动另一个进程并通过 MPI 加入它,但获得访问冲突
- 在不违反严格的别名规则的情况下访问进程间共享内存中的对象
- 进程间通信 - C# 和C++.对路径的访问被拒绝
- 从非提升的进程对提升的进程进行非默认访问
- 对关键部分的两个进程访问出错
- 如何确保一次只有一个进程访问共享内存
- 从由 CreateProcessWithLogonW 创建的进程中删除PROCESS_TERMINATE访问权限
- 结束进程错误代码 -1,如果访问结构的字符串字段
- 多个应用程序访问的单个进程
- 使用终止进程终止"mstsc.exe"进程时出现错误代码(5)访问被拒绝