From b5a20f922bd0822ff53c9b46a7963b693fb79b74 Mon Sep 17 00:00:00 2001 From: _xeroxz Date: Sat, 22 May 2021 16:44:22 -0700 Subject: [PATCH] fixed reading/writing to invalid memory... --- src/vmemu_t.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/vmemu_t.cpp b/src/vmemu_t.cpp index 28ec438..ed42950 100644 --- a/src/vmemu_t.cpp +++ b/src/vmemu_t.cpp @@ -260,18 +260,25 @@ namespace vm bool emu_t::hook_mem_invalid(uc_engine* uc, uc_mem_type type, uint64_t address, int size, int64_t value, vm::emu_t* obj) { + uc_err err; + if ((err = uc_mem_map(obj->uc, address & ~0xFFFull, 0x1000, UC_PROT_ALL))) + std::printf("failed on uc_mem_map() with error returned %u: %s\n", + err, uc_strerror(err)); + switch (type) { case UC_MEM_WRITE_UNMAPPED: printf(">>> Missing memory is being WRITE at 0x%p, data size = %u, data value = 0x%p\n", address, size, value); - return false; + return true; case UC_MEM_READ_UNMAPPED: printf(">>> Missing memory is being READ at 0x%p, data size = %u, data value = 0x%p\n", address, size, value); - return false; + return true; default: - return false; + printf(">>> Missing memory at 0x%p, data size = %u, data value = 0x%p\n", + address, size, value); + return true; } } } \ No newline at end of file