diff --git a/ghost-core/src/pe_parser.rs b/ghost-core/src/pe_parser.rs index b9a8fed..c9ce92c 100644 --- a/ghost-core/src/pe_parser.rs +++ b/ghost-core/src/pe_parser.rs @@ -7,6 +7,8 @@ //! - Function address resolution use crate::{GhostError, Result}; use serde::{Deserialize, Serialize}; +#[cfg(windows)] +use std::collections::HashMap; /// PE data directory indices pub const IMAGE_DIRECTORY_ENTRY_EXPORT: usize = 0; @@ -113,7 +115,7 @@ pub fn parse_iat_from_memory( // Read PE signature and file header let _pe_sig = read_u32(pid, nt_header_addr, &memory_reader)?; let file_header_addr = nt_header_addr + 4; - let file_header = read_file_header(pid, file_header_addr, &memory_reader)?; + let _file_header = read_file_header(pid, file_header_addr, &memory_reader)?; // Read optional header magic to determine if 32-bit or 64-bit let opt_header_addr = file_header_addr + mem::size_of::(); diff --git a/ghost-core/src/thread.rs b/ghost-core/src/thread.rs index e967fa7..6234010 100644 --- a/ghost-core/src/thread.rs +++ b/ghost-core/src/thread.rs @@ -284,8 +284,9 @@ mod platform { pid: u32, memory_regions: &[crate::MemoryRegion], ) -> Result { + use windows::Win32::System::Kernel::GetThreadContext; use windows::Win32::System::Threading::{ - GetThreadContext, OpenProcess, ResumeThread, SuspendThread, PROCESS_QUERY_INFORMATION, + OpenProcess, ResumeThread, SuspendThread, PROCESS_QUERY_INFORMATION, PROCESS_VM_READ, THREAD_GET_CONTEXT, THREAD_SUSPEND_RESUME, }; @@ -320,8 +321,7 @@ mod platform { // Get thread context (registers) #[cfg(target_arch = "x86_64")] { - use windows::Win32::System::Diagnostics::Debug::CONTEXT; - use windows::Win32::System::Diagnostics::Debug::CONTEXT_CONTROL; + use windows::Win32::System::Kernel::{CONTEXT, CONTEXT_CONTROL}; let mut context = CONTEXT { ContextFlags: CONTEXT_CONTROL, @@ -513,7 +513,7 @@ mod platform { // Check if thread start address is suspicious (common for APC injection) if thread.start_address != 0 { // Check common APC entry points - let suspicious_start_patterns = [ + let _suspicious_start_patterns = [ "ntdll!LdrInitializeThunk", "ntdll!RtlUserThreadStart", "kernel32!BaseThreadInitThunk", @@ -610,10 +610,11 @@ mod platform { /// Detect hardware breakpoints by examining debug registers (DR0-DR7) pub fn detect_hardware_breakpoints(pid: u32) -> Result { - use windows::Win32::System::Diagnostics::Debug::CONTEXT; - use windows::Win32::System::Diagnostics::Debug::CONTEXT_DEBUG_REGISTERS; + use windows::Win32::System::Kernel::{ + GetThreadContext, CONTEXT, CONTEXT_DEBUG_REGISTERS, + }; use windows::Win32::System::Threading::{ - GetThreadContext, ResumeThread, SuspendThread, THREAD_GET_CONTEXT, + ResumeThread, SuspendThread, THREAD_GET_CONTEXT, THREAD_SUSPEND_RESUME, };