Fix reading/writing non-debugged process memory

This commit is contained in:
Duncan Ogilvie 2023-02-22 08:47:28 +01:00
parent e0348b36fe
commit 9676c960b6
2 changed files with 9 additions and 3 deletions

View File

@ -244,7 +244,7 @@ typedef struct __PUBLIC_OBJECT_TYPE_INFORMATION
typedef struct _PROCESS_BASIC_INFORMATION typedef struct _PROCESS_BASIC_INFORMATION
{ {
PVOID Reserved1; NTSTATUS ExitStatus;
PVOID PebBaseAddress; PVOID PebBaseAddress;
PVOID Reserved2[2]; PVOID Reserved2[2];
ULONG_PTR UniqueProcessId; ULONG_PTR UniqueProcessId;

View File

@ -98,7 +98,10 @@ public:
{ {
auto process = processFromHandle(hProcess); auto process = processFromHandle(hProcess);
if(!process) if(!process)
return false; {
// This happens when reading from a process not being debugged
return !!ReadProcessMemory(hProcess, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesRead);
}
return process->MemReadSafe(ptr(lpBaseAddress), lpBuffer, nSize, (ptr*)lpNumberOfBytesRead); return process->MemReadSafe(ptr(lpBaseAddress), lpBuffer, nSize, (ptr*)lpNumberOfBytesRead);
} }
@ -106,7 +109,10 @@ public:
{ {
auto process = processFromHandle(hProcess); auto process = processFromHandle(hProcess);
if(!process) if(!process)
return false; {
// This happens when writing to a process not being debugged
return !!WriteProcessMemory(hProcess, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesWritten);
}
return process->MemWriteSafe(ptr(lpBaseAddress), lpBuffer, nSize, (ptr*)lpNumberOfBytesWritten); return process->MemWriteSafe(ptr(lpBaseAddress), lpBuffer, nSize, (ptr*)lpNumberOfBytesWritten);
} }