Fix Driver Verifier violation

GetProcessIDFromProcessHandle was calling ZwQIP instead of NtQIP, which causes a violation when non-kernel handles are passed to ObReferenceObjectByHandle inside ZwQIP
Also remove unused GetProcessIDFromThreadHandle function
This commit is contained in:
Mattiwatti 2019-03-13 00:39:21 +01:00
parent 2d927be5f8
commit dcaceb90ba
No known key found for this signature in database
GPG key ID: D40D1DBE299B83EA

View file

@ -4,26 +4,8 @@
ULONG Misc::GetProcessIDFromProcessHandle(HANDLE ProcessHandle)
{
PROCESS_BASIC_INFORMATION PBI;
if(NT_SUCCESS(Undocumented::ZwQueryInformationProcess(ProcessHandle, ProcessBasicInformation, &PBI, sizeof(PBI), NULL)))
if(NT_SUCCESS(Undocumented::NtQueryInformationProcess(ProcessHandle, ProcessBasicInformation, &PBI, sizeof(PBI), NULL)))
return (ULONG)PBI.UniqueProcessId;
else
return 0;
}
ULONG Misc::GetProcessIDFromThreadHandle(HANDLE ThreadHandle)
{
typedef struct _THREAD_BASIC_INFORMATION
{
NTSTATUS ExitStatus;
PVOID TebBaseAddress;
CLIENT_ID ClientId;
KAFFINITY AffinityMask;
KPRIORITY Priority;
KPRIORITY BasePriority;
} THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
THREAD_BASIC_INFORMATION TBI;
if(NT_SUCCESS(Undocumented::ZwQueryInformationThread(ThreadHandle, ThreadBasicInformation, &TBI, sizeof(TBI), NULL)))
return (ULONG)(ULONG_PTR)TBI.ClientId.UniqueProcess;
else
return 0;
return 0;
}