|
| enum class | page_protection {
no_access = 0 << 0
, read = 1 << 0
, write = 1 << 1
, execute = 1 << 2
,
read_write = read | write
, read_execute = read | execute
, read_write_execute = read | write | execute
, r = read
,
w = write
, x = execute
, rw = read_write
, rx = read_execute
,
rwx = read_write_execute
} |
| enum class | branch_type {
conditional
, jump
, call
, conditional
,
jump
, call
} |
| enum class | branch_distance {
short_branch
, near_branch
, far_branch
, short_branch
,
near_branch
, far_branch
} |
| enum class | branch_condition {
overflow
, not_overflow
, below
, not_below
,
equal
, not_equal
, below_or_equal
, above
,
sign
, not_sign
, parity
, not_parity
,
less
, not_less
, not_greater
, greater
,
overflow
, not_overflow
, below
, not_below
,
equal
, not_equal
, below_or_equal
, above
,
sign
, not_sign
, parity
, not_parity
,
less
, not_less
, not_greater
, greater
} |
| enum class | branch_type {
conditional
, jump
, call
, conditional
,
jump
, call
} |
| enum class | branch_distance {
short_branch
, near_branch
, far_branch
, short_branch
,
near_branch
, far_branch
} |
| enum class | branch_condition {
overflow
, not_overflow
, below
, not_below
,
equal
, not_equal
, below_or_equal
, above
,
sign
, not_sign
, parity
, not_parity
,
less
, not_less
, not_greater
, greater
,
overflow
, not_overflow
, below
, not_below
,
equal
, not_equal
, below_or_equal
, above
,
sign
, not_sign
, parity
, not_parity
,
less
, not_less
, not_greater
, greater
} |
|
| void * | get_original_module_base () |
| uint32_t | get_protect_flags (page_protection in_protection) |
| bool | protect (void *in_address, size_t in_length, uint32_t in_new_protect_flags, uint32_t *out_old_protect_flags=nullptr) |
| void * | to_aslr (void *in_address, void *in_base_address=nullptr) |
| void * | from_aslr (void *in_address, void *in_base_address=nullptr) |
| bool | is_nop (void *in_address) |
template<typename T>
requires (std::is_integral_v<T>) |
| constexpr T | align (T in_address, T in_alignment) |
| void * | align (void *in_address, uintptr_t in_alignment) |
| template<typename T> |
| T | read (void *in_address) |
| template<typename T, size_t count> |
| std::array< T, count > | read (void *in_address) |
| branch_info | get_branch_info (void *in_address) |
| template<typename T> |
| void * | read_instr_address (void *in_address, ptrdiff_t in_offset, size_t in_stride) |
| void * | read_call (void *in_address) |
| void * | read_jump (void *in_address) |
| template<typename T> |
| constexpr T | byteswap (T in_value) |
| template<typename T> |
| constexpr void | byteswap_inplace (T &io_value) |
| template<typename T> |
| bool | write (void *in_address, const T &in_data, size_t in_count=1) |
| template<typename T> |
| bool | write (void *in_address, const std::vector< T > &in_data) |
| bool | write_call (void *in_address, void *in_destination) |
| bool | write_jump (void *in_address, void *in_destination, bool in_call=false) |
| bool | write_nop (void *in_address, size_t in_count=1) |
| template<ut::expr::any_string T> |
| bool | write_string (void *in_address, const T &in_str) |
| template<ut::expr::any_string T> |
| bool | write_string_fixed_length (void *in_address, const T &in_str, size_t in_length=0) |