DbgkUserReportWorkRoutine
INT64 __stdcall DbgkUserReportWorkRoutine(PVOID P){
__int64 v2;
_KPROCESS *v3;
NTSTATUS v4;
char *v5;
NTSTATUS v6;
INT64 result;
POBJECT_TYPE ObjectType;
UINT64 AccessMode;
PVOID BaseAddress;
HANDLE ThreadHandle;
HANDLE Handle;
ULONG_PTR RegionSize[3];
__int128 v14;
__int128 v15;
__int128 v16;
_KAPC_STATE ApcState;
RegionSize[2] = (ULONG_PTR)P;
Handle = 0i64;
ThreadHandle = 0i64;
BaseAddress = 0i64;
RegionSize[0] = 168i64;
memset(&ApcState, 0, sizeof(ApcState));
v14 = 0i64;
v15 = 0i64;
v16 = 0i64;
v2 = *(_QWORD *)P;
RegionSize[1] = v2;
IoThreadToProcess((_ETHREAD *)v2);
KiStackAttachProcess((_KPROCESS *)v3, 0i64, &ApcState);
v4 = ObOpenObjectByPointer((PVOID)v2, 0, 0i64, 0x72u, (POBJECT_TYPE)PsThreadType, 1, &Handle);
if( v4 >= 0 )
{
LODWORD(AccessMode) = 4;
LODWORD(ObjectType) = 12288;
v4 = ZwAllocateVirtualMemory(
(PVOID)0xFFFFFFFFFFFFFFFFi64,
&BaseAddress,
0i64,
RegionSize,
(UINT64)ObjectType,
AccessMode);
if( v4 >= 0 )
{
*((_QWORD *)BaseAddress + 1) = *((_QWORD *)P + 1);
*(_QWORD *)BaseAddress = Handle;
if( *((_BYTE *)P + 16) )
{
v5 = (char *)BaseAddress + 16;
*((_OWORD *)BaseAddress + 1) = *(_OWORD *)((char *)P + 24);
*((_OWORD *)v5 + 1) = *(_OWORD *)((char *)P + 40);
*((_OWORD *)v5 + 2) = *(_OWORD *)((char *)P + 56);
*((_OWORD *)v5 + 3) = *(_OWORD *)((char *)P + 72);
*((_OWORD *)v5 + 4) = *(_OWORD *)((char *)P + 88);
*((_OWORD *)v5 + 5) = *(_OWORD *)((char *)P + 104);
*((_OWORD *)v5 + 6) = *(_OWORD *)((char *)P + 120);
*((_OWORD *)v5 + 7) = *(_OWORD *)((char *)P + 136);
*((_OWORD *)v5 + 8) = *(_OWORD *)((char *)P + 152);
*((_QWORD *)v5 + 18) = *((_QWORD *)P + 21);
}
LODWORD(v14) = 48;
*((_QWORD *)&v14 + 1) = 0i64;
DWORD2(v15) = 512;
*(_QWORD *)&v15 = 0i64;
v16 = 0i64;
ZwCreateThreadEx(&ThreadHandle);
v4 = v6;
}
else
{
BaseAddress = 0i64;
}
}
if( v4 < 0 )
{
_InterlockedAnd((volatile signed __int32 *)(v2 + 1296), 0xFFDFFFFF);
if( Handle )
ObCloseHandle(Handle, 1);
PsResumeThread(v2, 0i64);
if( BaseAddress )
ZwFreeVirtualMemory((PVOID)0xFFFFFFFFFFFFFFFFi64, &BaseAddress, 0i64, 0x8000ui64);
}
else
{
ZwSetInformationThread(ThreadHandle, ThreadPriorityBoost|0x20, &qword_140033510, 4ui64);
ZwResumeThread(ThreadHandle, 0i64);
ZwClose(ThreadHandle);
ThreadHandle = 0i64;
}
KiUnstackDetachProcess(&ApcState, 0i64);
ExFreePoolWithTag(P, 0x4B474244u);
HalPutDmaAdapter((PADAPTER_OBJECT)v2);
return result;
}Referenced by:
No references.