Skip to content

Commit 5fb7f59

Browse files
committed
Fixed a bug when the dll did not have dynamic base addressing enabled.
1 parent c958100 commit 5fb7f59

1 file changed

Lines changed: 19 additions & 19 deletions

File tree

MemoryModule/MemoryModule.cpp

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -265,27 +265,27 @@ NTSTATUS MemoryLoadLibrary(
265265
//
266266
// Reserve the address range of image
267267
//
268-
LPBYTE base = (LPBYTE)VirtualAlloc(
269-
LPVOID(old_header->OptionalHeader.ImageBase),
270-
old_header->OptionalHeader.SizeOfImage,
271-
MEM_RESERVE,
272-
PAGE_EXECUTE_READWRITE
273-
);
268+
LPBYTE base = nullptr;
269+
if ((old_header->OptionalHeader.DllCharacteristics & IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE) == 0) {
270+
base = (LPBYTE)VirtualAlloc(
271+
LPVOID(old_header->OptionalHeader.ImageBase),
272+
old_header->OptionalHeader.SizeOfImage,
273+
MEM_RESERVE,
274+
PAGE_EXECUTE_READWRITE
275+
);
276+
}
274277
if (!base) {
275-
if (old_header->OptionalHeader.DllCharacteristics & IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE) {
276-
277-
base = (LPBYTE)VirtualAlloc(
278-
nullptr,
279-
old_header->OptionalHeader.SizeOfImage,
280-
MEM_RESERVE,
281-
PAGE_EXECUTE_READWRITE
282-
);
283-
if (!base) status = STATUS_NO_MEMORY;
284-
}
278+
base = (LPBYTE)VirtualAlloc(
279+
nullptr,
280+
old_header->OptionalHeader.SizeOfImage,
281+
MEM_RESERVE,
282+
PAGE_EXECUTE_READWRITE
283+
);
284+
if (!base) status = STATUS_NO_MEMORY;
285+
}
285286

286-
if (!NT_SUCCESS(status)) {
287-
return status;
288-
}
287+
if (!NT_SUCCESS(status)) {
288+
return status;
289289
}
290290

291291
//

0 commit comments

Comments
 (0)