我hook了ntcreateprocessex以后,需要根据process handle来得到相应的进程的名称
用了getprocessid来得到进程id,然后列举进程找到对应名称,但是getprocessid这个
函数在2000下无法使用,
又想到GetModuleFileNameEx这个函数,但是在hook函数调用这个api的时候,报handle无效的错误。有没有什么办法啊,谢谢
用了getprocessid来得到进程id,然后列举进程找到对应名称,但是getprocessid这个
函数在2000下无法使用,
又想到GetModuleFileNameEx这个函数,但是在hook函数调用这个api的时候,报handle无效的错误。有没有什么办法啊,谢谢
DWORD WINAPI GetProcessIdNT(HANDLE hProcess)
{
NTSTATUS Status;
PROCESS_BASIC_INFORMATION pbi;
HANDLE hDupHandle;
HANDLE hCurrentProcess; hCurrentProcess = GetCurrentProcess(); // Use DuplicateHandle() to get PROCESS_QUERY_INFORMATION access right
if (!DuplicateHandle(hCurrentProcess,
hProcess,
hCurrentProcess,
&hDupHandle,
PROCESS_QUERY_INFORMATION,
FALSE,
0))
{
SetLastError(ERROR_ACCESS_DENIED);
return 0;
} Status = NtQueryInformationProcess(hDupHandle,
ProcessBasicInformation,
&pbi,
sizeof(pbi),
NULL); CloseHandle(hDupHandle); if (!NT_SUCCESS(Status))
{
SetLastError(RtlNtStatusToDosError(Status));
return 0;
} // Return PID
return pbi.UniqueProcessId;
}