From 3189e6f701249468a0f9982fab6511736a703614 Mon Sep 17 00:00:00 2001 From: momo5502 Date: Wed, 13 Aug 2025 19:50:04 +0200 Subject: [PATCH] Log more interesting things if outside any mapped module --- src/analyzer/analysis.cpp | 12 +++++++----- src/analyzer/analysis.hpp | 3 ++- src/analyzer/main.cpp | 6 +++--- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/analyzer/analysis.cpp b/src/analyzer/analysis.cpp index cbe05f3d..0e5671dd 100644 --- a/src/analyzer/analysis.cpp +++ b/src/analyzer/analysis.cpp @@ -468,23 +468,25 @@ void register_analysis_callbacks(analysis_context& c) watch_import_table(c); } -mapped_module* get_module_if_interesting(module_manager& manager, const string_set& modules, const uint64_t address) +std::optional get_module_if_interesting(module_manager& manager, const string_set& modules, + const uint64_t address) { if (manager.executable->is_within(address)) { return manager.executable; } - if (modules.empty()) + auto* mod = manager.find_by_address(address); + if (!mod) { + // Not being part of any module is interesting return nullptr; } - auto* mod = manager.find_by_address(address); - if (mod && modules.contains(mod->name)) + if (modules.contains(mod->name)) { return mod; } - return nullptr; + return std::nullopt; } diff --git a/src/analyzer/analysis.hpp b/src/analyzer/analysis.hpp index eba795ca..b432d83e 100644 --- a/src/analyzer/analysis.hpp +++ b/src/analyzer/analysis.hpp @@ -43,4 +43,5 @@ struct analysis_context }; void register_analysis_callbacks(analysis_context& c); -mapped_module* get_module_if_interesting(module_manager& manager, const string_set& modules, uint64_t address); +std::optional get_module_if_interesting(module_manager& manager, const string_set& modules, + uint64_t address); diff --git a/src/analyzer/main.cpp b/src/analyzer/main.cpp index f293a565..6a337ac4 100644 --- a/src/analyzer/main.cpp +++ b/src/analyzer/main.cpp @@ -430,13 +430,13 @@ namespace win_emu->emu().hook_instruction(x86_hookable_instructions::cpuid, [&] { const auto rip = win_emu->emu().read_instruction_pointer(); - auto* mod = get_module_if_interesting(win_emu->mod_manager, options.modules, rip); + const auto mod = get_module_if_interesting(win_emu->mod_manager, options.modules, rip); - if (mod) + if (mod.has_value()) { const auto leaf = win_emu->emu().reg(x86_register::eax); win_emu->log.print(color::blue, "Executing CPUID instruction with leaf 0x%X at 0x%" PRIx64 " (%s)\n", - leaf, rip, mod->name.c_str()); + leaf, rip, (*mod) ? (*mod)->name.c_str() : ""); } return instruction_hook_continuation::run_instruction;