Add Helper function for Reading/Writing memory if necessary
This commit is contained in:
parent
9ff3e8a957
commit
be5131b0d2
70
OpenParrot/src/Utility/Helper.cpp
Normal file
70
OpenParrot/src/Utility/Helper.cpp
Normal file
@ -0,0 +1,70 @@
|
||||
#include <Windows.h>
|
||||
#include "Helper.h"
|
||||
|
||||
typedef unsigned char U8;
|
||||
|
||||
// reading/writing memory
|
||||
LPVOID Helpers::GetTranslatedOffset(INT_PTR offset)
|
||||
{
|
||||
return reinterpret_cast<LPVOID>((INT_PTR)GetModuleHandle(NULL) + offset);
|
||||
}
|
||||
|
||||
UINT8 Helpers::ReadByte(INT_PTR offset, bool isRelativeOffset)
|
||||
{
|
||||
UINT8 val = 0;
|
||||
SIZE_T read;
|
||||
LPVOID trueOffset = (isRelativeOffset ? GetTranslatedOffset(offset) : (LPVOID)offset);
|
||||
ReadProcessMemory(GetCurrentProcess(), trueOffset, &val, sizeof(UINT8), &read);
|
||||
return val;
|
||||
}
|
||||
|
||||
float Helpers::WriteFloat32(INT_PTR offset, float val, bool isRelativeOffset)
|
||||
{
|
||||
SIZE_T written;
|
||||
LPVOID trueOffset = (isRelativeOffset ? GetTranslatedOffset(offset) : (LPVOID)offset);
|
||||
WriteProcessMemory(GetCurrentProcess(), trueOffset, &val, sizeof(float), &written);
|
||||
return val;
|
||||
};
|
||||
|
||||
UINT8 Helpers::WriteByte(INT_PTR offset, UINT8 val, bool isRelativeOffset)
|
||||
{
|
||||
SIZE_T written;
|
||||
LPVOID trueOffset = (isRelativeOffset ? GetTranslatedOffset(offset) : (LPVOID)offset);
|
||||
WriteProcessMemory(GetCurrentProcess(), trueOffset, &val, sizeof(UINT8), &written);
|
||||
return val;
|
||||
}
|
||||
|
||||
INT_PTR Helpers::WriteIntPtr(INT_PTR offset, INT_PTR val, bool isRelativeOffset)
|
||||
{
|
||||
SIZE_T written;
|
||||
LPVOID trueOffset = (isRelativeOffset ? GetTranslatedOffset(offset) : (LPVOID)offset);
|
||||
WriteProcessMemory(GetCurrentProcess(), trueOffset, &val, sizeof(INT_PTR), &written);
|
||||
return val;
|
||||
};
|
||||
|
||||
int Helpers::ReadInt32(INT_PTR offset, bool isRelativeOffset)
|
||||
{
|
||||
int val = 0;
|
||||
SIZE_T read;
|
||||
LPVOID trueOffset = (isRelativeOffset ? GetTranslatedOffset(offset) : (LPVOID)offset);
|
||||
ReadProcessMemory(GetCurrentProcess(), trueOffset, &val, sizeof(int), &read);
|
||||
return val;
|
||||
}
|
||||
|
||||
INT_PTR Helpers::ReadIntPtr(INT_PTR offset, bool isRelativeOffset)
|
||||
{
|
||||
SIZE_T read;
|
||||
LPVOID trueOffset = (isRelativeOffset ? GetTranslatedOffset(offset) : (LPVOID)offset);
|
||||
INT_PTR val;
|
||||
ReadProcessMemory(GetCurrentProcess(), trueOffset, &val, sizeof(INT_PTR), &read);
|
||||
return val;
|
||||
};
|
||||
|
||||
float Helpers::ReadFloat32(INT_PTR offset, bool isRelativeOffset)
|
||||
{
|
||||
float val = 0.0f;
|
||||
SIZE_T read;
|
||||
LPVOID trueOffset = (isRelativeOffset ? GetTranslatedOffset(offset) : (LPVOID)offset);
|
||||
ReadProcessMemory(GetCurrentProcess(), trueOffset, &val, sizeof(float), &read);
|
||||
return val;
|
||||
};
|
15
OpenParrot/src/Utility/Helper.h
Normal file
15
OpenParrot/src/Utility/Helper.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
#include <Windows.h>
|
||||
|
||||
class Helpers {
|
||||
public:
|
||||
// reading/writing memory
|
||||
LPVOID GetTranslatedOffset(INT_PTR offset);
|
||||
int ReadInt32(INT_PTR offset, bool isRelativeOffset);
|
||||
UINT8 ReadByte(INT_PTR offset, bool isRelativeOffset);
|
||||
float WriteFloat32(INT_PTR offset, float val, bool isRelativeOffset);
|
||||
UINT8 WriteByte(INT_PTR offset, UINT8 val, bool isRelativeOffset);
|
||||
INT_PTR WriteIntPtr(INT_PTR offset, INT_PTR val, bool isRelativeOffset);
|
||||
INT_PTR ReadIntPtr(INT_PTR offset, bool isRelativeOffset);
|
||||
float ReadFloat32(INT_PTR offset, bool isRelativeOffset);
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user