mirror of
https://github.com/a2x/cs2-dumper.git
synced 2025-08-28 15:42:17 +08:00
Handle situations when displacement is negative
This commit is contained in:
@@ -199,7 +199,12 @@ impl Process {
|
||||
// The displacement value can be negative.
|
||||
let displacement = self.read_memory::<i32>(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::<i32>(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")]
|
||||
|
Reference in New Issue
Block a user