Classes | |
| struct | BranchInfo |
Enumerations | |
| enum class | PageProtection { NoAccess = 0 << 0 , Read = 1 << 0 , Write = 1 << 1 , Execute = 1 << 2 , ReadWrite = Read | Write , ReadExecute = Read | Execute , ReadWriteExecute = Read | Write | Execute , R = Read , W = Write , X = Execute , RW = ReadWrite , RX = ReadExecute , RWX = ReadWriteExecute } |
| enum class | BranchType { Conditional , Jump , Call } |
| enum class | BranchDistance { Short , Near , Far } |
| enum class | BranchCondition { Overflow , NotOverflow , Below , NotBelow , Equal , NotEqual , BelowOrEqual , Above , Sign , NotSign , Parity , NotParity , Less , NotLess , NotGreater , Greater } |
Functions | |
| void * | GetOriginalModuleBase () |
| uint32_t | GetProtectionFlags (PageProtection in_protection) |
| bool | Protect (void *in_pAddress, size_t in_length, uint32_t in_newProtectionFlags, uint32_t *out_pOldProtectionFlags=nullptr) |
| void * | ToASLR (void *in_pAddress, void *in_pBaseAddress=nullptr) |
| void * | FromASLR (void *in_pAddress, void *in_pBaseAddress=nullptr) |
| bool | IsNop (void *in_pAddress) |
| template<typename T> | |
| T | Read (void *in_pAddress) |
| template<typename T, size_t Count> | |
| std::array< T, Count > | Read (void *in_pAddress) |
| BranchInfo | GetBranchInfo (void *in_pAddress) |
| template<typename T> | |
| void * | ReadInstructionAddress (void *in_pAddress, size_t in_offset, size_t in_stride) |
| void * | ReadCall (void *in_pAddress) |
| void * | ReadJump (void *in_pAddress) |
| template<typename T> | |
| bool | Write (void *in_pAddress, const T &in_rData, size_t in_count=1) |
| template<typename T> | |
| bool | Write (void *in_pAddress, const std::vector< T > &in_rData) |
| bool | WriteCall (void *in_pAddress, void *in_pDestination) |
| bool | WriteJump (void *in_pAddress, void *in_pDestination, bool in_isCall=false) |
| bool | WriteNop (void *in_pAddress, size_t in_count=1) |
| template<hedgedev::csl::ut::expr::AnyString T> | |
| bool | WriteString (void *in_pAddress, const T &in_rStr) |
| template<hedgedev::csl::ut::expr::AnyString T> | |
| bool | WriteStringFixedLength (void *in_pAddress, const T &in_rStr, size_t in_length=0) |
|
strong |
|
strong |
|
strong |
|
strong |
|
inline |
Transforms a virtual address from the current module's ASLR base.
| in_pAddress | The address to transform. |
| in_pBaseAddress | The original base address of the module containing the address (optional). |
|
inline |
Gets information about a branch instruction in memory.
| in_pAddress | The address of the branch instruction. |
|
inline |
Gets the original base address of the current module.
|
inline |
Gets the system flags for the specified page protection.
|
inline |
Checks if the instruction at the given memory address is a no-operation (NOP) instruction.
| in_pAddress | The address to check. |
|
inline |
Sets the protection of a page of memory.
|
inline |
Reads an array of values in memory.
| T | The type to read. |
| Count | The total number of values to read. |
| in_pAddress | The address to read from. |
|
inline |
Reads a value in memory.
| T | The type to read. |
| in_pAddress | The address to read from. |
|
inline |
Reads the address of a call instruction in memory.
| in_pAddress | The address of the call instruction to read. |
|
inline |
Reads the address of an instruction in memory.
| T | The type to read. |
| in_pAddress | The address of the instruction to read. |
| in_offset | The offset of the address after in_pAddress. |
| in_stride | The length of the instruction that was read. |
|
inline |
Reads the address of a jump instruction in memory.
| in_pAddress | The address of the jump instruction to read. |
|
inline |
Transforms a virtual address to the current module's ASLR base.
| in_pAddress | The address to transform. |
| in_pBaseAddress | The original base address of the module containing the address (optional). |
|
inline |
Writes an array of values in memory.
| T | The type to write. |
| in_pAddress | The address to write to. |
| in_rData | The collection of values to write. |
|
inline |
Writes a value in memory.
| T | The type to write. |
| in_pAddress | The address to write to. |
| in_rData | The data to write. |
| in_count | The total number of values to write. |
|
inline |
Writes a call instruction in memory.
| in_pAddress | The address to write to. |
| in_pDestination | The address of the function to call. |
|
inline |
Writes a jump instruction in memory.
| in_pAddress | The address to write to. |
| in_pDestination | The address of the address to jump to. |
| in_isCall | Determines whether the jump should be encoded as a call instruction. |
|
inline |
Writes a no-operation (NOP) instruction in memory.
| in_pAddress | The address to write to. |
| in_count | The total number of no-operation (NOP) instructions to write. |
|
inline |
Writes a string in memory.
| in_pAddress | The address to write to. |
| in_rStr | The string to write. |
|
inline |
Writes a string of fixed length in memory.
| in_pAddress | The address to write to. |
| in_rStr | The string to write. |
| in_length | The length of the string to write. If zero, the length will be determined by the length of an existing string located at in_pAddress. |