lots of debug tracing, fixed bug

This commit is contained in:
noonebtw 2022-01-20 21:30:11 +01:00
parent 45192f895b
commit c5f7a98382

View file

@ -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