From a336bdf2af0d6ee12b8cdab0efb29fbf7463655b Mon Sep 17 00:00:00 2001 From: momo5502 Date: Sat, 5 Apr 2025 10:01:28 +0200 Subject: [PATCH] Simplify violation hook API --- src/emulator/hook_interface.hpp | 8 +------- src/icicle-emulator/icicle_x64_emulator.cpp | 6 +----- src/unicorn-emulator/unicorn_x64_emulator.cpp | 5 ++--- 3 files changed, 4 insertions(+), 15 deletions(-) diff --git a/src/emulator/hook_interface.hpp b/src/emulator/hook_interface.hpp index 39752398..01762b8f 100644 --- a/src/emulator/hook_interface.hpp +++ b/src/emulator/hook_interface.hpp @@ -53,8 +53,7 @@ class hook_interface public: virtual ~hook_interface() = default; - virtual emulator_hook* hook_memory_violation(uint64_t address, size_t size, - memory_violation_hook_callback callback) = 0; + virtual emulator_hook* hook_memory_violation(memory_violation_hook_callback callback) = 0; virtual emulator_hook* hook_memory_access(uint64_t address, size_t size, memory_operation filter, complex_memory_hook_callback callback) = 0; @@ -67,11 +66,6 @@ class hook_interface virtual void delete_hook(emulator_hook* hook) = 0; - emulator_hook* hook_memory_violation(memory_violation_hook_callback callback) - { - return this->hook_memory_violation(0, std::numeric_limits::max(), std::move(callback)); - } - emulator_hook* hook_memory_read(const uint64_t address, const size_t size, simple_memory_hook_callback callback) { return this->hook_simple_memory_access(address, size, std::move(callback), memory_operation::read); diff --git a/src/icicle-emulator/icicle_x64_emulator.cpp b/src/icicle-emulator/icicle_x64_emulator.cpp index d6fddef1..8de2594e 100644 --- a/src/icicle-emulator/icicle_x64_emulator.cpp +++ b/src/icicle-emulator/icicle_x64_emulator.cpp @@ -277,12 +277,8 @@ namespace icicle // throw std::runtime_error("Not implemented"); } - emulator_hook* hook_memory_violation(const uint64_t address, const size_t size, - memory_violation_hook_callback callback) override + emulator_hook* hook_memory_violation(memory_violation_hook_callback callback) override { - (void)address; - (void)size; - auto obj = make_function_object(std::move(callback)); auto* ptr = obj.get(); auto* wrapper = diff --git a/src/unicorn-emulator/unicorn_x64_emulator.cpp b/src/unicorn-emulator/unicorn_x64_emulator.cpp index de01afcf..a91e44e5 100644 --- a/src/unicorn-emulator/unicorn_x64_emulator.cpp +++ b/src/unicorn-emulator/unicorn_x64_emulator.cpp @@ -537,8 +537,7 @@ namespace unicorn return result; } - emulator_hook* hook_memory_violation(uint64_t address, size_t size, - memory_violation_hook_callback callback) override + emulator_hook* hook_memory_violation(memory_violation_hook_callback callback) override { function_wrapper wrapper( [c = std::move(callback), this](uc_engine*, const uc_mem_type type, const uint64_t address, @@ -573,7 +572,7 @@ namespace unicorn auto container = std::make_unique(); uce(uc_hook_add(*this, hook.make_reference(), UC_HOOK_MEM_INVALID, wrapper.get_function(), - wrapper.get_user_data(), address, size)); + wrapper.get_user_data(), 0, std::numeric_limits::max())); container->add(std::move(wrapper), std::move(hook));