From ba07d7cf9430ab95f6f1f886079f60a3dcf345d1 Mon Sep 17 00:00:00 2001 From: ladevieq Date: Fri, 17 Jul 2026 13:30:47 +0200 Subject: Fix stack walk find_function search Fix string stack asserts --- src/events.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/events.c') diff --git a/src/events.c b/src/events.c index 8c0f8ad..85e68c2 100644 --- a/src/events.c +++ b/src/events.c @@ -268,6 +268,7 @@ u8 expect_single_step = FALSE; extern DEBUG_EVENT dbg_event; extern u8* string_stack_base; extern u8* string_stack_current; +extern const u32 string_stack_size; const char* dummy_name = "Function_dummy_name"; @@ -394,10 +395,11 @@ void load_symbols(const void* base_addr, struct module* module) { for (; name_index < export_dir.NumberOfNames; name_index++) { if (ordinals[name_index] == i) { // TODO: Add string management code - assert(string_stack_current - 16U * 4096U < string_stack_base); void* name_address = (void*)((u64)module->base_addr + names_address[name_index]); read_memory(name_address, name, 256U); length = str_len((const char*)name); + + assert(string_stack_current - (string_stack_current + length) < string_stack_size); break; } } @@ -685,7 +687,7 @@ void handle_output_debug_string(void) { OUTPUT_DEBUG_STRING_INFO dbg_str_event = dbg_event.u.DebugString; char* str_addr = dbg_str_event.lpDebugStringData; size_t str_size = (size_t)dbg_str_event.nDebugStringLength; - // assert(str_size > 1024U); + assert(str_size > 1024U * sizeof(u16)); u16 dbg_str[1024U] = { 0U }; if (!read_memory(str_addr, dbg_str, str_size)) { print("%s %u\n", "OutputDebugStringDebugEvent : error reading debug string : ", GetLastError()); -- cgit v1.3