I am playing around with windbg on a 64-bit machine and noticed something interesting:
nt!ExAllocatePool:
...
sub rsp, 0xd0
...
mov qword ptr [rsp+0xf8], rbx
Windows only allocated 0xd0 bytes for locals but then it decides to step on the callers stack since 0xf8 is > 0xd0! What am I missing here? This HAS to be a bug in Windows.
ntoskrnl.exe
ExAllocatePool()
encompasses 5 instructions including asub rsp, 28h
which clearly doesn't match whatever you have. TheExAllocatePoolWithTag()
it calls takes merely one more argument, meaning everything fits into registers anyway and stack is used only for locals. But none of what I see matches what you got. So what exact version of ntoskrnl?