add fallback to ReadMemorySafe

This commit is contained in:
Duncan Ogilvie 2019-11-04 13:44:24 +01:00
parent 7ac6950874
commit 9fd62daff1
1 changed files with 13 additions and 1 deletions

View File

@ -242,7 +242,19 @@ public:
SIZE_T s; SIZE_T s;
if(!lpNumberOfBytesRead) if(!lpNumberOfBytesRead)
lpNumberOfBytesRead = &s; lpNumberOfBytesRead = &s;
return !!ReadProcessMemory(hProcess, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesRead); auto x = !!ReadProcessMemory(hProcess, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesRead);
if (!x && nSize <= 0x1000)
{
NtSuspendProcess(hProcess);
DWORD oldProtect = 0;
if (VirtualProtectEx(hProcess, lpBaseAddress, 0x1000, PAGE_EXECUTE_READWRITE, &oldProtect))
{
x = !!ReadProcessMemory(hProcess, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesRead);
VirtualProtectEx(hProcess, lpBaseAddress, 0x1000, oldProtect, &oldProtect);
}
NtResumeProcess(hProcess);
}
return x;
} }
bool MemoryWriteSafe(HANDLE hProcess, LPVOID lpBaseAddress, LPCVOID lpBuffer, SIZE_T nSize, SIZE_T* lpNumberOfBytesWritten) bool MemoryWriteSafe(HANDLE hProcess, LPVOID lpBaseAddress, LPCVOID lpBuffer, SIZE_T nSize, SIZE_T* lpNumberOfBytesWritten)