WbAllocateMemoryBlock
NTSTATUS __stdcall WbAllocateMemoryBlock(_MDL *Mdl, VOID *BufferVa, VOID *Source, VOID *Original, UINT64 Length){
int VirtualMemory;
VirtualMemory = WbAlloc(1088);
if( VirtualMemory >= 0 )
{
MEMORY[0] = 0i64;
MEMORY[8] = 0x10000i64;
MEMORY[0x18] = 0i64;
MEMORY[0x20] = 0i64;
MEMORY[0x438] = 0i64;
MEMORY[0x10] = KeGetCurrentThread()->ApcState.Process;
MEMORY[0x430] = 0i64;
memset((VOID *)0x2C, 0i64, 0x400u);
VirtualMemory = MmAllocateVirtualMemory((PVOID *)0xFFFFFFFFFFFFFFFFi64, 0i64, (UINT64 *)8, 0x1000ui64);
if( VirtualMemory >= 0 )
{
if( MEMORY[0x438] )
{
VirtualMemory = WbMakeUserExecutablePagesKernelWritable(MEMORY[0], MEMORY[8], (_MDL **)0x18, (UINT64 *)0x20);
if( VirtualMemory >= 0 && BufferVa )
*(_QWORD *)BufferVa = 0i64;
}
else
{
VirtualMemory = -1073741595;
}
}
}
WbFreeMemoryBlock(0i64);
return VirtualMemory;
}Referenced by:
WbAllocateUserMemory