You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.3 KiB
66 lines
1.3 KiB
#pragma once
|
|
#include <cstddef>
|
|
#include <cstdint>
|
|
|
|
namespace i6
|
|
{
|
|
//
|
|
// please call this before making any other calls!
|
|
//
|
|
bool begin();
|
|
|
|
//
|
|
// get process id of process.
|
|
//
|
|
unsigned get_pid(const char* proc_name);
|
|
|
|
//
|
|
// get process base address.
|
|
//
|
|
std::uintptr_t get_process_base(unsigned pid);
|
|
|
|
//
|
|
// get module base
|
|
//
|
|
std::uintptr_t get_module_base(unsigned pid, const wchar_t* module_name);
|
|
|
|
//
|
|
// read/write to specific process
|
|
//
|
|
bool read(unsigned pid, std::uintptr_t addr, void* buffer, std::size_t size);
|
|
bool write(unsigned pid, std::uintptr_t addr, void* buffer, std::size_t size);
|
|
|
|
//
|
|
// read/write kernel memory (you can write to readonly with this)
|
|
//
|
|
bool rkm(std::uintptr_t addr, void* buffer, std::size_t size);
|
|
bool wkm(std::uintptr_t addr, void* buffer, std::size_t size);
|
|
|
|
template <class T>
|
|
T rkm(std::uintptr_t addr)
|
|
{
|
|
T buffer{};
|
|
rkm(addr, (void*)&buffer, sizeof(T));
|
|
return buffer;
|
|
}
|
|
|
|
template <class T>
|
|
bool wkm(std::uintptr_t addr, const T& data)
|
|
{
|
|
return wkm(addr, (void*)&data, sizeof(T));
|
|
}
|
|
|
|
template <class T>
|
|
T read(unsigned pid, std::uintptr_t addr)
|
|
{
|
|
T buffer{};
|
|
read(pid, addr, (void*)&buffer, sizeof(T));
|
|
return buffer;
|
|
}
|
|
|
|
template <class T>
|
|
bool write(unsigned pid, std::uintptr_t addr, const T& data)
|
|
{
|
|
return write(pid, addr, (void*)&data, sizeof(T));
|
|
}
|
|
} |