From c5f7a983820fd54add3e3a56328a973bcfda6c11 Mon Sep 17 00:00:00 2001 From: noonebtw Date: Thu, 20 Jan 2022 21:30:11 +0100 Subject: [PATCH] lots of debug tracing, fixed bug --- src/lib.rs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 21fd8ec..9694dc1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -11,7 +11,7 @@ use std::{ use lazy_static::lazy_static; use log::error; -use utils::string::ToWide; +use utils::{string::ToWide, win32::Win32Error}; use winapi::{ shared::ntdef::{HANDLE, ULONG}, um::{ @@ -105,6 +105,8 @@ impl ImageHelp { } }?; + log::debug!("trying GetProcAddress"); + let proc_addr = unsafe { let func_cname = CString::new(function_name)?; let proc_adr = GetProcAddress(module_handle, func_cname.as_ptr()); @@ -117,7 +119,9 @@ impl ImageHelp { return Ok(proc_addr.as_ptr() as *const _); } - utils::win32::error::true_or_last_error(|| unsafe { + log::debug!("SymLoadModuleExW.."); + + match utils::win32::error::true_or_last_error(|| unsafe { dbghelp::SymLoadModuleExW( GetCurrentProcess(), null_mut(), @@ -128,7 +132,14 @@ impl ImageHelp { null_mut(), 0, ) != 0 - })?; + }) { + Ok(_) => Ok(()), + Err(Win32Error { error_code: 0 }) => { + log::debug!("Symbols already loaded."); + Ok(()) + } + Err(err) => Err(err), + }?; let try_find_symbol = || { let mut sym_info = @@ -138,6 +149,8 @@ impl ImageHelp { let symbol_name_utf16 = function_name.to_wide_null(); sym_info.MaxNameLen = 255; + log::debug!("SymFromNameW.."); + utils::win32::error::true_or_last_error(|| unsafe { dbghelp::SymFromNameW(*process_handle, symbol_name_utf16.as_ptr(), &mut sym_info) != 0