2

我正在尝试为监视进程编写基本驱动程序并获取进程路径。
我使用创建PsSetCreateProcessNotifyRoutine和检索进程信息,ZwQueryInformationProcess
但在我的ProcessCallback函数中,当我尝试使用当前进程时HANDLENtCurrentProcess它为我提供了运行另一个进程的当前进程。

例如:

我尝试在 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
    )  

.我可以将其转换为进程句柄吗?

4

1 回答 1

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);
于 2014-09-09T07:35:01.027 回答