From d5d5868cc4fb6ddff6ee73d9582a629b170ced64 Mon Sep 17 00:00:00 2001 From: jbzdarkid Date: Sun, 21 Oct 2018 16:58:03 -0700 Subject: initial version, randomizing just tutorial --- WitnessRandomizer/Memory.h | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 WitnessRandomizer/Memory.h (limited to 'WitnessRandomizer/Memory.h') diff --git a/WitnessRandomizer/Memory.h b/WitnessRandomizer/Memory.h new file mode 100644 index 0000000..2453cf0 --- /dev/null +++ b/WitnessRandomizer/Memory.h @@ -0,0 +1,39 @@ +#pragma once +#include +#include +#include + +// https://github.com/erayarslan/WriteProcessMemory-Example +// http://stackoverflow.com/q/32798185 +// http://stackoverflow.com/q/36018838 +// http://stackoverflow.com/q/1387064 +class Memory +{ +public: + Memory(const std::string& processName); + ~Memory(); + + template + std::vector ReadData(const std::vector& offsets, int numItems) { + std::vector data; + data.resize(numItems); + if (!ReadProcessMemory(_handle, (LPVOID)ComputeOffset(offsets), &data[0], sizeof(T) * numItems, NULL)) { + ThrowError(); + } + return data; + } + + template + void WriteData(const std::vector& offsets, const std::vector& data) { + if (!WriteProcessMemory(_handle, (LPVOID)ComputeOffset(offsets), &data[0], sizeof(T) * data.size(), NULL)) { + ThrowError(); + } + } + +private: + void ThrowError(); + + uintptr_t ComputeOffset(std::vector offsets); + uintptr_t _baseAddress; + HANDLE _handle; +}; \ No newline at end of file -- cgit 1.4.1