From ede86928d89a208b2d518bc0306ab54590f91965 Mon Sep 17 00:00:00 2001 From: Albert24GG Date: Fri, 1 Mar 2024 20:44:54 +0200 Subject: [PATCH] Handle situations when displacement is negative --- src/os/process.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/os/process.rs b/src/os/process.rs index d8e2624..4238732 100644 --- a/src/os/process.rs +++ b/src/os/process.rs @@ -199,7 +199,12 @@ impl Process { // The displacement value can be negative. let displacement = self.read_memory::(address + offset.unwrap_or(0x1))?; - Ok((address + displacement as usize) + length.unwrap_or(0x5)) + let final_address = if displacement.is_negative() { + address - displacement.wrapping_abs() as usize + } else { + address + displacement as usize + } + length.unwrap_or(0x5); + Ok(final_address) } pub fn resolve_rip( @@ -211,7 +216,12 @@ impl Process { // The displacement value can be negative. let displacement = self.read_memory::(address + offset.unwrap_or(0x3))?; - Ok((address + displacement as usize) + length.unwrap_or(0x7)) + let final_address = if displacement.is_negative() { + address - displacement.wrapping_abs() as usize + } else { + address + displacement as usize + } + length.unwrap_or(0x7); + Ok(final_address) } #[cfg(target_os = "windows")]