Move more logging into callbacks

This commit is contained in:
momo5502
2025-06-06 19:27:50 +02:00
parent 24939583c4
commit bc77faec3d
18 changed files with 106 additions and 78 deletions

View File

@@ -63,7 +63,7 @@ namespace syscalls
if (attributes.ObjectName)
{
name = read_unicode_string(c.emu, attributes.ObjectName);
c.win_emu.log.print(color::dark_gray, "--> Event name: %s\n", u16_to_u8(name).c_str());
c.win_emu.callbacks.on_generic_access("Opening event", name);
}
}
@@ -100,7 +100,7 @@ namespace syscalls
{
const auto attributes = object_attributes.read();
const auto name = read_unicode_string(c.emu, attributes.ObjectName);
c.win_emu.log.print(color::dark_gray, "--> Event name: %s\n", u16_to_u8(name).c_str());
c.win_emu.callbacks.on_generic_access("Opening event", name);
if (name == u"\\KernelObjects\\SystemErrorPortReady")
{

View File

@@ -236,16 +236,7 @@ namespace syscalls
if (!f->enumeration_state || query_flags & SL_RESTART_SCAN)
{
const auto mask = file_mask ? read_unicode_string(c.emu, file_mask) : u"";
if (!mask.empty())
{
c.win_emu.log.print(color::dark_gray, "--> Enumerating directory: %s (Mask: \"%s\")\n",
u16_to_u8(f->name).c_str(), u16_to_u8(mask).c_str());
}
else
{
c.win_emu.log.print(color::dark_gray, "--> Enumerating directory: %s\n", u16_to_u8(f->name).c_str());
}
c.win_emu.callbacks.on_generic_access("Enumerating directory", f->name);
f->enumeration_state.emplace(file_enumeration_state{});
f->enumeration_state->files = scan_directory(c.win_emu.file_sys, f->name, mask);
@@ -565,7 +556,7 @@ namespace syscalls
const auto attributes = object_attributes.read();
auto filename = read_unicode_string(c.emu, attributes.ObjectName);
c.win_emu.log.print(color::dark_gray, "--> Query file info: %s\n", u16_to_u8(filename).c_str()); //
c.win_emu.callbacks.on_generic_access("Query file info", filename);
const auto ret = [&](const NTSTATUS status) {
block.Status = status;
@@ -798,7 +789,7 @@ namespace syscalls
auto filename = read_unicode_string(c.emu, attributes.ObjectName);
auto printer = utils::finally([&] {
c.win_emu.log.print(color::dark_gray, "--> Opening file: %s\n", u16_to_u8(filename).c_str()); //
c.win_emu.callbacks.on_generic_access("Opening file", filename); //
});
const auto io_device_name = get_io_device_name(filename);
@@ -849,7 +840,7 @@ namespace syscalls
if (is_directory || create_options & FILE_DIRECTORY_FILE)
{
c.win_emu.log.print(color::dark_gray, "--> Opening folder: %s\n", u16_to_u8(f.name).c_str());
c.win_emu.callbacks.on_generic_access("Opening folder", f.name);
if (create_disposition & FILE_CREATE)
{
@@ -871,7 +862,7 @@ namespace syscalls
return STATUS_SUCCESS;
}
c.win_emu.log.print(color::dark_gray, "--> Opening file: %s\n", u16_to_u8(f.name).c_str());
c.win_emu.callbacks.on_generic_access("Opening file", f.name);
std::u16string mode = map_mode(desired_access, create_disposition);
@@ -924,7 +915,7 @@ namespace syscalls
filename = root->name + (has_separator ? u"" : u"\\") + filename;
}
c.win_emu.log.print(color::dark_gray, "--> Querying file attributes: %s\n", u16_to_u8(filename).c_str());
c.win_emu.callbacks.on_generic_access("Querying file attributes", filename);
const auto local_filename = c.win_emu.file_sys.translate(filename).u8string();
@@ -965,7 +956,7 @@ namespace syscalls
const auto filename = read_unicode_string(
c.emu, emulator_object<UNICODE_STRING<EmulatorTraits<Emu64>>>{c.emu, attributes.ObjectName});
c.win_emu.log.print(color::dark_gray, "--> Querying file attributes: %s\n", u16_to_u8(filename).c_str());
c.win_emu.callbacks.on_generic_access("Querying file attributes", filename);
const auto local_filename = c.win_emu.file_sys.translate(filename).u8string();

View File

@@ -192,8 +192,6 @@ namespace syscalls
if (!potential_base)
{
c.win_emu.log.print(color::dark_gray, "--> Not allocated\n");
return STATUS_MEMORY_NOT_ALLOCATED;
}

View File

@@ -44,7 +44,7 @@ namespace syscalls
{
name = read_unicode_string(
c.emu, emulator_object<UNICODE_STRING<EmulatorTraits<Emu64>>>{c.emu, attributes.ObjectName});
c.win_emu.log.print(color::dark_gray, "--> Mutant name: %s\n", u16_to_u8(name).c_str());
c.win_emu.callbacks.on_generic_access("Opening mutant", name);
}
}
@@ -78,7 +78,7 @@ namespace syscalls
if (attributes.ObjectName)
{
name = read_unicode_string(c.emu, attributes.ObjectName);
c.win_emu.log.print(color::dark_gray, "--> Mutant name: %s\n", u16_to_u8(name).c_str());
c.win_emu.callbacks.on_generic_access("Opening mutant", name);
}
}

View File

@@ -14,7 +14,7 @@ namespace syscalls
const emulator_object<ULONG> connection_info_length)
{
auto port_name = read_unicode_string(c.emu, server_port_name);
c.win_emu.log.print(color::dark_gray, "NtConnectPort: %s\n", u16_to_u8(port_name).c_str());
c.win_emu.callbacks.on_generic_access("Connecting port", port_name);
port p{};
p.name = std::move(port_name);

View File

@@ -25,7 +25,7 @@ namespace syscalls
key = full_path.u16string();
}
c.win_emu.log.print(color::dark_gray, "--> Registry key: %s\n", u16_to_u8(key).c_str());
c.win_emu.callbacks.on_generic_access("Registry key", key);
auto entry = c.win_emu.registry.get_key({key});
if (!entry.has_value())
@@ -129,8 +129,12 @@ namespace syscalls
}
const auto query_name = read_unicode_string(c.emu, value_name);
c.win_emu.log.print(color::dark_gray, "--> Query value key: %s (%s\\%s)\n", u16_to_u8(query_name).c_str(),
key->hive.get().string().c_str(), key->path.get().string().c_str());
if (c.win_emu.callbacks.on_generic_access)
{
// TODO: Find a better way to log this
c.win_emu.callbacks.on_generic_access("Querying value key", query_name + u" (" + key->to_string() + u")");
}
const auto value = c.win_emu.registry.get_value(*key, u16_to_u8(query_name));
if (!value)

View File

@@ -20,7 +20,7 @@ namespace syscalls
const auto* file = c.proc.files.get(file_handle);
if (file)
{
c.win_emu.log.print(color::dark_gray, "--> Section for file %s\n", u16_to_u8(file->name).c_str());
c.win_emu.callbacks.on_generic_access("Section for file", file->name);
s.file_name = file->name;
}
@@ -30,7 +30,7 @@ namespace syscalls
if (attributes.ObjectName)
{
auto name = read_unicode_string(c.emu, attributes.ObjectName);
c.win_emu.log.print(color::dark_gray, "--> Section with name %s\n", u16_to_u8(name).c_str());
c.win_emu.callbacks.on_generic_access("Section with name", name);
s.name = std::move(name);
}
}
@@ -60,7 +60,7 @@ namespace syscalls
const auto attributes = object_attributes.read();
auto filename = read_unicode_string(c.emu, attributes.ObjectName);
c.win_emu.log.print(color::dark_gray, "--> Opening section: %s\n", u16_to_u8(filename).c_str());
c.win_emu.callbacks.on_generic_access("Opening section", filename);
if (filename == u"\\Windows\\SharedSection")
{

View File

@@ -43,7 +43,7 @@ namespace syscalls
if (attributes.ObjectName)
{
name = read_unicode_string(c.emu, attributes.ObjectName);
c.win_emu.log.print(color::dark_gray, "--> Timer name: %s\n", u16_to_u8(name).c_str());
c.win_emu.callbacks.on_generic_access("Opening timer", name);
}
}