Files
bb107-MemoryModulePP/MemoryModule/LoadDllMemoryApi.cpp
T
2020-02-26 17:26:24 +08:00

39 lines
1.3 KiB
C++

#include "LoadDllMemoryApi.h"
#include "Native.h"
HMEMORYMODULE WINAPI LoadLibraryMemory(PVOID BufferAddress) {
HMEMORYMODULE hMemoryModule = nullptr;
NTSTATUS status = NtLoadDllMemory(&hMemoryModule, BufferAddress, 0);
if (!NT_SUCCESS(status)) {
SetLastError(RtlNtStatusToDosError(status));
}
return hMemoryModule;
}
HMEMORYMODULE WINAPI LoadLibraryMemoryExA(PVOID BufferAddress, size_t Reserved, LPCSTR DllBaseName, LPCSTR DllFullName, DWORD Flags) {
HMEMORYMODULE hMemoryModule = nullptr;
NTSTATUS status = NtLoadDllMemoryExA(&hMemoryModule, nullptr, Flags, BufferAddress, Reserved, DllBaseName, DllFullName);
if (!NT_SUCCESS(status)) {
SetLastError(RtlNtStatusToDosError(status));
}
return hMemoryModule;
}
HMEMORYMODULE WINAPI LoadLibraryMemoryExW(PVOID BufferAddress, size_t Reserved, LPCWSTR DllBaseName, LPCWSTR DllFullName, DWORD Flags) {
HMEMORYMODULE hMemoryModule = nullptr;
NTSTATUS status = NtLoadDllMemoryExW(&hMemoryModule, nullptr, Flags, BufferAddress, Reserved, DllBaseName, DllFullName);
if (!NT_SUCCESS(status)) {
SetLastError(RtlNtStatusToDosError(status));
}
return hMemoryModule;
}
BOOL WINAPI FreeLibraryMemory(HMEMORYMODULE hMemoryModule) {
NTSTATUS status = NtUnloadDllMemory(hMemoryModule);
if (!NT_SUCCESS(status)) {
SetLastError(RtlNtStatusToDosError(status));
return FALSE;
}
return TRUE;
}