我正在尝试为监控过程编写基本驱动程序并获取进程路径
我创建PsSetCreateProcessNotifyRoutine
并使用ZwQueryInformationProcess
检索流程信息
但在我的ProcessCallback
函数中,当我尝试使用HANDLE
获取当前进程NtCurrentProcess
时,它会为我提供运行另一个进程的当前进程。
例如:
我尝试在c:\中运行myProgram.exe,当我使用Windows资源管理器转到C:\并运行 myProgram.exe我的 驱动程序给我explorer.exe路径,因为myProgram.exe在里面运行 explorer.exe的
我的ProcessCallback标题中有processID
void ProcessCallback(
IN HANDLE hParentId,
IN HANDLE hProcessId,
IN BOOLEAN bCreate
)
。我可以将它转换为进程句柄吗?
答案 0 :(得分:1)
感谢大家的有益评论 最后我用下面的代码解决了我的问题
HANDLE proc = NULL;
OBJECT_ATTRIBUTES obj_attr;
CLIENT_ID cid;
cid.UniqueProcess= hProcessId; //PsGetCurrentProcessId();
cid.UniqueThread= NULL ; //(HANDLE)0;
InitializeObjectAttributes(&obj_attr,NULL, 0, NULL, NULL);
ZwOpenProcess(&proc, PROCESS_ALL_ACCESS, &obj_attr, &cid);