Detect all occurences of write to read only page. Add callback capability on write to read only. Add new error type UC_ERR_MEM_WRITE_RO and new access type UC_MEM_WRITE_RO for use in callback
This commit is contained in:
0
include/hook.h
Normal file → Executable file
0
include/hook.h
Normal file → Executable file
@ -16,9 +16,8 @@
|
||||
QTAILQ_HEAD(CPUTailQ, CPUState);
|
||||
|
||||
typedef struct MemoryBlock {
|
||||
MemoryRegion *region; //inclusive
|
||||
MemoryRegion *region; //inclusive begin
|
||||
uint64_t end; //exclusive
|
||||
uint32_t perms;
|
||||
} MemoryBlock;
|
||||
|
||||
typedef struct ModuleEntry {
|
||||
@ -184,6 +183,6 @@ struct uc_struct {
|
||||
#include "qemu_macro.h"
|
||||
|
||||
// check if this address is mapped in (via uc_mem_map())
|
||||
bool memory_mapping(struct uc_struct* uc, uint64_t address);
|
||||
MemoryRegion *memory_mapping(struct uc_struct* uc, uint64_t address);
|
||||
|
||||
#endif
|
||||
|
@ -116,6 +116,7 @@ typedef enum uc_err {
|
||||
UC_ERR_HOOK, // Invalid hook type: uc_hook_add()
|
||||
UC_ERR_INSN_INVALID, // Quit emulation due to invalid instruction: uc_emu_start()
|
||||
UC_ERR_MAP, // Invalid memory mapping: uc_mem_map()
|
||||
UC_ERR_MEM_WRITE_RO, // Quit emulation due to invalid memory WRITE: uc_emu_start()
|
||||
} uc_err;
|
||||
|
||||
|
||||
@ -147,6 +148,7 @@ typedef enum uc_mem_type {
|
||||
UC_MEM_READ = 16, // Memory is read from
|
||||
UC_MEM_WRITE, // Memory is written to
|
||||
UC_MEM_READ_WRITE, // Memory is accessed (either READ or WRITE)
|
||||
UC_MEM_WRITE_RO, // Read only memory is written to
|
||||
} uc_mem_type;
|
||||
|
||||
// All type of hooks for uc_hook_add() API.
|
||||
|
Reference in New Issue
Block a user