CommonLib
Loading...
Searching...
No Matches
Memory.h File Reference
#include <array>
#include <vector>
#include "Memory.inl"

Go to the source code of this file.

Classes

struct  hedgedev::csl::mem::BranchInfo

Namespaces

namespace  hedgedev
namespace  hedgedev::csl
namespace  hedgedev::csl::mem

Macros

#define ASLR(ADDRESS)
#define IS_NOP(ADDRESS)
#define READ(ADDRESS, TYPE)
#define READ_ARRAY(ADDRESS, TYPE, COUNT)
#define READ_INSTR_ADDRESS(ADDRESS, TYPE, OFFSET, STRIDE)
#define READ_CALL(ADDRESS)
#define READ_JUMP(ADDRESS)
#define WRITE(ADDRESS, TYPE, ...)
#define WRITE_ARRAY(ADDRESS, TYPE, DATA)
#define WRITE_CALL(ADDRESS, DESTINATION)
#define WRITE_JUMP(ADDRESS, DESTINATION)
#define WRITE_NOP(ADDRESS, LENGTH)
#define WRITE_STRING(ADDRESS, STR)
#define WRITE_STRING_FIXED(ADDRESS, STR, ...)

Enumerations

enum class  hedgedev::csl::mem::PageProtection {
  hedgedev::csl::mem::NoAccess = 0 << 0 , hedgedev::csl::mem::Read = 1 << 0 , hedgedev::csl::mem::Write = 1 << 1 , hedgedev::csl::mem::Execute = 1 << 2 ,
  hedgedev::csl::mem::ReadWrite = Read | Write , hedgedev::csl::mem::ReadExecute = Read | Execute , hedgedev::csl::mem::ReadWriteExecute = Read | Write | Execute , hedgedev::csl::mem::R = Read ,
  hedgedev::csl::mem::W = Write , hedgedev::csl::mem::X = Execute , hedgedev::csl::mem::RW = ReadWrite , hedgedev::csl::mem::RX = ReadExecute ,
  hedgedev::csl::mem::RWX = ReadWriteExecute
}

Functions

void * hedgedev::csl::mem::GetOriginalModuleBase ()
uint32_t hedgedev::csl::mem::GetProtectionFlags (PageProtection in_protection)
bool hedgedev::csl::mem::Protect (void *in_pAddress, size_t in_length, uint32_t in_newProtectionFlags, uint32_t *out_pOldProtectionFlags=nullptr)
void * hedgedev::csl::mem::ToASLR (void *in_pAddress, void *in_pBaseAddress=nullptr)
void * hedgedev::csl::mem::FromASLR (void *in_pAddress, void *in_pBaseAddress=nullptr)
bool hedgedev::csl::mem::IsNop (void *in_pAddress)
template<typename T>
hedgedev::csl::mem::Read (void *in_pAddress)
template<typename T, size_t Count>
std::array< T, Count > hedgedev::csl::mem::Read (void *in_pAddress)
BranchInfo hedgedev::csl::mem::GetBranchInfo (void *in_pAddress)
template<typename T>
void * hedgedev::csl::mem::ReadInstructionAddress (void *in_pAddress, size_t in_offset, size_t in_stride)
void * hedgedev::csl::mem::ReadCall (void *in_pAddress)
void * hedgedev::csl::mem::ReadJump (void *in_pAddress)
template<typename T>
bool hedgedev::csl::mem::Write (void *in_pAddress, const T &in_rData, size_t in_count=1)
template<typename T>
bool hedgedev::csl::mem::Write (void *in_pAddress, const std::vector< T > &in_rData)
bool hedgedev::csl::mem::WriteCall (void *in_pAddress, void *in_pDestination)
bool hedgedev::csl::mem::WriteJump (void *in_pAddress, void *in_pDestination, bool in_isCall=false)
bool hedgedev::csl::mem::WriteNop (void *in_pAddress, size_t in_count=1)
template<hedgedev::csl::ut::expr::AnyString T>
bool hedgedev::csl::mem::WriteString (void *in_pAddress, const T &in_rStr)
template<hedgedev::csl::ut::expr::AnyString T>
bool hedgedev::csl::mem::WriteStringFixedLength (void *in_pAddress, const T &in_rStr, size_t in_length=0)

Macro Definition Documentation

◆ ASLR

#define ASLR ( ADDRESS)
Value:
(hedgedev::csl::mem::ToASLR((void*)(ADDRESS)))
void * ToASLR(void *in_pAddress, void *in_pBaseAddress=nullptr)
Definition Memory.inl:52

◆ IS_NOP

#define IS_NOP ( ADDRESS)
Value:
(hedgedev::csl::mem::IsNop((void*)(ADDRESS)))
bool IsNop(void *in_pAddress)
Definition Memory.inl:37

◆ READ

#define READ ( ADDRESS,
TYPE )
Value:
(hedgedev::csl::mem::Read<TYPE>((void*)(ADDRESS)))
@ Read
Definition Memory.h:30

◆ READ_ARRAY

#define READ_ARRAY ( ADDRESS,
TYPE,
COUNT )
Value:

◆ READ_CALL

#define READ_CALL ( ADDRESS)
Value:
(hedgedev::csl::mem::ReadCall((void*)(ADDRESS)))
void * ReadCall(void *in_pAddress)
Definition Memory.inl:132

◆ READ_INSTR_ADDRESS

#define READ_INSTR_ADDRESS ( ADDRESS,
TYPE,
OFFSET,
STRIDE )
Value:
(hedgedev::csl::mem::ReadInstructionAddress<TYPE>((void*)(ADDRESS), OFFSET, STRIDE))
void * ReadInstructionAddress(void *in_pAddress, size_t in_offset, size_t in_stride)
Definition Memory.inl:124

◆ READ_JUMP

#define READ_JUMP ( ADDRESS)
Value:
(hedgedev::csl::mem::ReadJump((void*)(ADDRESS)))
void * ReadJump(void *in_pAddress)
Definition Memory.inl:137

◆ WRITE

#define WRITE ( ADDRESS,
TYPE,
... )
Value:
(hedgedev::csl::mem::Write<TYPE>((void*)(ADDRESS), { __VA_ARGS__ }))
@ Write
Definition Memory.h:31

◆ WRITE_ARRAY

#define WRITE_ARRAY ( ADDRESS,
TYPE,
DATA )
Value:
(hedgedev::csl::mem::Write<TYPE>((void*)(ADDRESS), DATA))

◆ WRITE_CALL

#define WRITE_CALL ( ADDRESS,
DESTINATION )
Value:
(hedgedev::csl::mem::WriteCall((void*)(ADDRESS), (void*)(DESTINATION)))
bool WriteCall(void *in_pAddress, void *in_pDestination)
Definition Memory.inl:142

◆ WRITE_JUMP

#define WRITE_JUMP ( ADDRESS,
DESTINATION )
Value:
(hedgedev::csl::mem::WriteJump((void*)(ADDRESS), (void*)(DESTINATION)))
bool WriteJump(void *in_pAddress, void *in_pDestination, bool in_isCall=false)
Definition Memory.inl:147

◆ WRITE_NOP

#define WRITE_NOP ( ADDRESS,
LENGTH )
Value:
(hedgedev::csl::mem::WriteNop((void*)(ADDRESS), LENGTH))
bool WriteNop(void *in_pAddress, size_t in_count=1)
Definition Memory.inl:182

◆ WRITE_STRING

#define WRITE_STRING ( ADDRESS,
STR )
Value:
(hedgedev::csl::mem::WriteString((void*)(ADDRESS), STR))
bool WriteString(void *in_pAddress, const T &in_rStr)
Definition Memory.inl:58

◆ WRITE_STRING_FIXED

#define WRITE_STRING_FIXED ( ADDRESS,
STR,
... )
Value:
(hedgedev::csl::mem::WriteStringFixedLength((void*)(ADDRESS), STR, __VA_ARGS__))
bool WriteStringFixedLength(void *in_pAddress, const T &in_rStr, size_t in_length=0)
Definition Memory.inl:69