#35 Fix initialization failure in session 0

This commit is contained in:
Boring
2023-10-08 14:53:55 +08:00
parent 5fb7f591d2
commit 131699fe4a
+15 -6
View File
@@ -333,12 +333,21 @@ NTSTATUS MmpAllocateGlobalData() {
SIZE_T ViewSize = 0;
PTEB teb = NtCurrentTeb();
swprintf_s(
buffer,
L"\\Sessions\\%d\\BaseNamedObjects\\MMPP*%p",
NtCurrentPeb()->SessionId,
(PVOID)(~(ULONG_PTR)teb->ClientId.UniqueProcess ^ (ULONG_PTR)teb->ProcessEnvironmentBlock->ProcessHeap)
);
if (NtCurrentPeb()->SessionId == 0) {
swprintf_s(
buffer,
L"\\BaseNamedObjects\\MMPP*%p",
(PVOID)(~(ULONG_PTR)teb->ClientId.UniqueProcess ^ (ULONG_PTR)teb->ProcessEnvironmentBlock->ProcessHeap)
);
}
else {
swprintf_s(
buffer,
L"\\Sessions\\%d\\BaseNamedObjects\\MMPP*%p",
NtCurrentPeb()->SessionId,
(PVOID)(~(ULONG_PTR)teb->ClientId.UniqueProcess ^ (ULONG_PTR)teb->ProcessEnvironmentBlock->ProcessHeap)
);
}
RtlInitUnicodeString(&us, buffer);
InitializeObjectAttributes(&oa, &us, 0, nullptr, nullptr);