Skip to content

Commit 9fd62da

Browse files
committed
add fallback to ReadMemorySafe
1 parent 7ac6950 commit 9fd62da

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

StaticEngine/Emulator.h

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,19 @@ class Emulator
242242
SIZE_T s;
243243
if(!lpNumberOfBytesRead)
244244
lpNumberOfBytesRead = &s;
245-
return !!ReadProcessMemory(hProcess, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesRead);
245+
auto x = !!ReadProcessMemory(hProcess, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesRead);
246+
if (!x && nSize <= 0x1000)
247+
{
248+
NtSuspendProcess(hProcess);
249+
DWORD oldProtect = 0;
250+
if (VirtualProtectEx(hProcess, lpBaseAddress, 0x1000, PAGE_EXECUTE_READWRITE, &oldProtect))
251+
{
252+
x = !!ReadProcessMemory(hProcess, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesRead);
253+
VirtualProtectEx(hProcess, lpBaseAddress, 0x1000, oldProtect, &oldProtect);
254+
}
255+
NtResumeProcess(hProcess);
256+
}
257+
return x;
246258
}
247259

248260
bool MemoryWriteSafe(HANDLE hProcess, LPVOID lpBaseAddress, LPCVOID lpBuffer, SIZE_T nSize, SIZE_T* lpNumberOfBytesWritten)

0 commit comments

Comments
 (0)