Header for Umbra: DynamoRIO Shadow Memory Extension. More...
#include "drmemory_framework.h"
Data Structures | |
struct | _umbra_shadow_memory_info_t |
struct | _umbra_map_options_t |
Macros | |
#define | DRMGR_PRIORITY_NAME_EXCPT_UMBRA "umbra_except" |
#define | UMBRA_MAP_SCALE_IS_UP(scale) ((scale) >= UMBRA_MAP_SCALE_UP_2X) |
Typedefs | |
typedef struct _umbra_shadow_memory_info_t | umbra_shadow_memory_info_t |
typedef struct _umbra_map_t | umbra_map_t |
typedef void(* | app_memory_create_cb_t) (umbra_map_t *map, app_pc start, size_t size) |
typedef struct _umbra_map_options_t | umbra_map_options_t |
typedef bool(* | shadow_iterate_func_t) (umbra_map_t *map, umbra_shadow_memory_info_t *info, void *user_data) |
Enumerations | |
enum | { DRMGR_PRIORITY_EXCPT_UMBRA = -100 } |
enum | umbra_map_scale_t { , UMBRA_MAP_SCALE_DOWN_4X, UMBRA_MAP_SCALE_DOWN_2X, UMBRA_MAP_SCALE_SAME_1X, UMBRA_MAP_SCALE_UP_2X } |
enum | umbra_map_flags_t { UMBRA_MAP_CREATE_SHADOW_ON_TOUCH = 0x1, UMBRA_MAP_SHADOW_SHARED_READONLY = 0x2 } |
enum | umbra_shadow_memory_flags_t { UMBRA_CREATE_SHADOW_SHARED_READONLY = 0x1 } |
enum | umbra_shadow_memory_type_t { UMBRA_SHADOW_MEMORY_TYPE_UNKNOWN = 0x1, UMBRA_SHADOW_MEMORY_TYPE_NOT_SHADOW = 0x2, UMBRA_SHADOW_MEMORY_TYPE_NORMAL = 0x4, UMBRA_SHADOW_MEMORY_TYPE_SHARED = 0x8, UMBRA_SHADOW_MEMORY_TYPE_SHADOW_NOT_ALLOC = 0x10 } |
Functions | |
DR_EXPORT drmf_status_t | umbra_init (client_id_t client_id) |
DR_EXPORT drmf_status_t | umbra_exit (void) |
DR_EXPORT drmf_status_t | umbra_create_mapping (IN umbra_map_options_t *ops, OUT umbra_map_t **map_out) |
DR_EXPORT drmf_status_t | umbra_destroy_mapping (IN umbra_map_t *map) |
DR_EXPORT drmf_status_t | umbra_create_shadow_memory (IN umbra_map_t *map, IN umbra_shadow_memory_flags_t flags, IN app_pc app_addr, IN size_t app_size, IN ptr_uint_t value, IN size_t value_size) |
DR_EXPORT drmf_status_t | umbra_delete_shadow_memory (IN umbra_map_t *map, IN app_pc app_addr, IN size_t app_size) |
DR_EXPORT drmf_status_t | umbra_num_scratch_regs_for_translation (OUT int *num_regs) |
DR_EXPORT drmf_status_t | umbra_insert_app_to_shadow (IN void *drcontext, IN umbra_map_t *map, IN instrlist_t *ilist, IN instr_t *where, IN reg_id_t addr_reg, IN reg_id_t *scratch_regs, IN int num_scratch_regs) |
DR_EXPORT drmf_status_t | umbra_read_shadow_memory (IN umbra_map_t *map, IN app_pc app_addr, IN size_t app_size, INOUT size_t *shadow_size, OUT byte *buffer) |
DR_EXPORT drmf_status_t | umbra_write_shadow_memory (IN umbra_map_t *map, IN app_pc app_addr, IN size_t app_size, INOUT size_t *shadow_size, IN byte *buffer) |
DR_EXPORT drmf_status_t | umbra_shadow_set_range (IN umbra_map_t *map, IN app_pc app_addr, IN size_t app_size, OUT size_t *shadow_size, IN ptr_uint_t value, IN size_t value_size) |
DR_EXPORT drmf_status_t | umbra_shadow_copy_range (IN umbra_map_t *map, IN app_pc app_src, IN app_pc app_dst, IN size_t app_size, OUT size_t *shadow_size) |
DR_EXPORT drmf_status_t | umbra_value_in_shadow_memory (IN umbra_map_t *map, INOUT app_pc *app_addr, IN size_t app_size, IN ptr_uint_t value, IN size_t value_size, OUT bool *found) |
DR_EXPORT drmf_status_t | umbra_get_shadow_block_size (IN umbra_map_t *map, OUT size_t *size) |
DR_EXPORT drmf_status_t | umbra_iterate_app_memory (IN umbra_map_t *map, IN void *user_data, IN bool(*iter_func)(umbra_map_t *map, const dr_mem_info_t *info, void *user_data)) |
DR_EXPORT drmf_status_t | umbra_iterate_shadow_memory (IN umbra_map_t *map, IN void *user_data, IN shadow_iterate_func_t iter_func) |
DR_EXPORT drmf_status_t | umbra_get_shadow_memory_type (IN umbra_map_t *map, IN byte *shadow_addr, OUT umbra_shadow_memory_type_t *shadow_type) |
DR_EXPORT drmf_status_t | umbra_shadow_memory_is_shared (IN umbra_map_t *map, IN byte *shadow_addr, OUT umbra_shadow_memory_type_t *shadow_type) |
DR_EXPORT drmf_status_t | umbra_get_shadow_memory (IN umbra_map_t *map, IN app_pc app_addr, OUT byte **shadow_addr, INOUT umbra_shadow_memory_info_t *shadow_info) |
DR_EXPORT drmf_status_t | umbra_replace_shared_shadow_memory (IN umbra_map_t *map, IN app_pc app_addr, OUT byte **shadow_addr) |
DR_EXPORT drmf_status_t | umbra_create_shared_shadow_block (IN umbra_map_t *map, IN ptr_uint_t value, IN size_t value_size, OUT byte **block) |
DR_EXPORT drmf_status_t | umbra_get_shared_shadow_block (IN umbra_map_t *map, IN ptr_uint_t value, IN size_t value_size, OUT byte **block) |
static void | umbra_shadow_memory_info_init (umbra_shadow_memory_info_t *info) |
Header for Umbra: DynamoRIO Shadow Memory Extension.