add new hook type UC_HOOK_MEM_READ_AFTER, adapted from PR #399 by @farmdve. updated all bindings, except Ruby & Haskell
This commit is contained in:
@ -195,38 +195,55 @@ typedef enum uc_mem_type {
|
||||
UC_MEM_WRITE_PROT, // Write to write protected, but mapped, memory
|
||||
UC_MEM_READ_PROT, // Read from read protected, but mapped, memory
|
||||
UC_MEM_FETCH_PROT, // Fetch from non-executable, but mapped, memory
|
||||
UC_MEM_READ_AFTER, // Memory is read from (successful access)
|
||||
} uc_mem_type;
|
||||
|
||||
// All type of hooks for uc_hook_add() API.
|
||||
typedef enum uc_hook_type {
|
||||
UC_HOOK_INTR = 1 << 0, // Hook all interrupt/syscall events
|
||||
UC_HOOK_INSN = 1 << 1, // Hook a particular instruction
|
||||
UC_HOOK_CODE = 1 << 2, // Hook a range of code
|
||||
UC_HOOK_BLOCK = 1 << 3, // Hook basic blocks
|
||||
UC_HOOK_MEM_READ_UNMAPPED = 1 << 4, // Hook for memory read on unmapped memory
|
||||
UC_HOOK_MEM_WRITE_UNMAPPED = 1 << 5, // Hook for invalid memory write events
|
||||
UC_HOOK_MEM_FETCH_UNMAPPED = 1 << 6, // Hook for invalid memory fetch for execution events
|
||||
UC_HOOK_MEM_READ_PROT = 1 << 7, // Hook for memory read on read-protected memory
|
||||
UC_HOOK_MEM_WRITE_PROT = 1 << 8, // Hook for memory write on write-protected memory
|
||||
UC_HOOK_MEM_FETCH_PROT = 1 << 9, // Hook for memory fetch on non-executable memory
|
||||
UC_HOOK_MEM_READ = 1 << 10, // Hook memory read events.
|
||||
UC_HOOK_MEM_WRITE = 1 << 11, // Hook memory write events.
|
||||
UC_HOOK_MEM_FETCH = 1 << 12, // Hook memory fetch for execution events
|
||||
// Hook all interrupt/syscall events
|
||||
UC_HOOK_INTR = 1 << 0,
|
||||
// Hook a particular instruction
|
||||
UC_HOOK_INSN = 1 << 1,
|
||||
// Hook a range of code
|
||||
UC_HOOK_CODE = 1 << 2,
|
||||
// Hook basic blocks
|
||||
UC_HOOK_BLOCK = 1 << 3,
|
||||
// Hook for memory read on unmapped memory
|
||||
UC_HOOK_MEM_READ_UNMAPPED = 1 << 4,
|
||||
// Hook for invalid memory write events
|
||||
UC_HOOK_MEM_WRITE_UNMAPPED = 1 << 5,
|
||||
// Hook for invalid memory fetch for execution events
|
||||
UC_HOOK_MEM_FETCH_UNMAPPED = 1 << 6,
|
||||
// Hook for memory read on read-protected memory
|
||||
UC_HOOK_MEM_READ_PROT = 1 << 7,
|
||||
// Hook for memory write on write-protected memory
|
||||
UC_HOOK_MEM_WRITE_PROT = 1 << 8,
|
||||
// Hook for memory fetch on non-executable memory
|
||||
UC_HOOK_MEM_FETCH_PROT = 1 << 9,
|
||||
// Hook memory read events.
|
||||
UC_HOOK_MEM_READ = 1 << 10,
|
||||
// Hook memory write events.
|
||||
UC_HOOK_MEM_WRITE = 1 << 11,
|
||||
// Hook memory fetch for execution events
|
||||
UC_HOOK_MEM_FETCH = 1 << 12,
|
||||
// Hook memory read events, but only successful access.
|
||||
// The callback will be triggered after successful read.
|
||||
UC_HOOK_MEM_READ_AFTER = 1 << 13,
|
||||
} uc_hook_type;
|
||||
|
||||
// hook type for all events of unmapped memory access
|
||||
// Hook type for all events of unmapped memory access
|
||||
#define UC_HOOK_MEM_UNMAPPED (UC_HOOK_MEM_READ_UNMAPPED + UC_HOOK_MEM_WRITE_UNMAPPED + UC_HOOK_MEM_FETCH_UNMAPPED)
|
||||
// hook type for all events of illegal protected memory access
|
||||
// Hook type for all events of illegal protected memory access
|
||||
#define UC_HOOK_MEM_PROT (UC_HOOK_MEM_READ_PROT + UC_HOOK_MEM_WRITE_PROT + UC_HOOK_MEM_FETCH_PROT)
|
||||
// hook type for all events of illegal read memory access
|
||||
// Hook type for all events of illegal read memory access
|
||||
#define UC_HOOK_MEM_READ_INVALID (UC_HOOK_MEM_READ_PROT + UC_HOOK_MEM_READ_UNMAPPED)
|
||||
// hook type for all events of illegal write memory access
|
||||
// Hook type for all events of illegal write memory access
|
||||
#define UC_HOOK_MEM_WRITE_INVALID (UC_HOOK_MEM_WRITE_PROT + UC_HOOK_MEM_WRITE_UNMAPPED)
|
||||
// hook type for all events of illegal fetch memory access
|
||||
// Hook type for all events of illegal fetch memory access
|
||||
#define UC_HOOK_MEM_FETCH_INVALID (UC_HOOK_MEM_FETCH_PROT + UC_HOOK_MEM_FETCH_UNMAPPED)
|
||||
// hook type for all events of illegal memory access
|
||||
// Hook type for all events of illegal memory access
|
||||
#define UC_HOOK_MEM_INVALID (UC_HOOK_MEM_UNMAPPED + UC_HOOK_MEM_PROT)
|
||||
// hook type for all events of valid memory access
|
||||
// Hook type for all events of valid memory access
|
||||
#define UC_HOOK_MEM_VALID (UC_HOOK_MEM_READ + UC_HOOK_MEM_WRITE + UC_HOOK_MEM_FETCH)
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user