mirror of
https://github.com/momo5502/emulator.git
synced 2026-01-18 11:13:57 +00:00
Exclude win32u.dll from module_load_count
This commit is contained in:
@@ -221,7 +221,7 @@ mapped_module* module_manager::map_module_core(const pe_detection_result& detect
|
||||
mapped_module mod = mapper();
|
||||
mod.is_static = is_static;
|
||||
|
||||
if (!mod.path.empty())
|
||||
if (!mod.path.empty() && mod.path.filename() != "win32u.dll")
|
||||
{
|
||||
this->module_load_count[mod.path]++;
|
||||
}
|
||||
@@ -451,9 +451,9 @@ void module_manager::map_main_modules(const windows_path& executable_path, const
|
||||
}
|
||||
}
|
||||
|
||||
std::optional<uint64_t> module_manager::get_module_load_count_by_path(const std::filesystem::path& path)
|
||||
std::optional<uint64_t> module_manager::get_module_load_count_by_path(const windows_path& path)
|
||||
{
|
||||
auto local_file = weakly_canonical(absolute(path));
|
||||
auto local_file = std::filesystem::weakly_canonical(std::filesystem::absolute(this->file_sys_->translate(path)));
|
||||
|
||||
if (!module_load_count.contains(local_file))
|
||||
{
|
||||
|
||||
@@ -94,7 +94,7 @@ class module_manager
|
||||
void map_main_modules(const windows_path& executable_path, const windows_path& system32_path, const windows_path& syswow64_path,
|
||||
const logger& logger);
|
||||
|
||||
std::optional<uint64_t> get_module_load_count_by_path(const std::filesystem::path& path);
|
||||
std::optional<uint64_t> get_module_load_count_by_path(const windows_path& path);
|
||||
mapped_module* map_module(const windows_path& file, const logger& logger, bool is_static = false, bool allow_duplicate = false);
|
||||
mapped_module* map_local_module(const std::filesystem::path& file, const logger& logger, bool is_static = false,
|
||||
bool allow_duplicate = false);
|
||||
|
||||
@@ -285,8 +285,7 @@ namespace syscalls
|
||||
return STATUS_IMAGE_MACHINE_TYPE_MISMATCH;
|
||||
}
|
||||
|
||||
auto local_file = c.win_emu.file_sys.translate(section_entry->file_name);
|
||||
if (c.win_emu.mod_manager.get_module_load_count_by_path(local_file) > 1)
|
||||
if (c.win_emu.mod_manager.get_module_load_count_by_path(section_entry->file_name) > 1)
|
||||
{
|
||||
return STATUS_IMAGE_NOT_AT_BASE;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user