From d3095900b941d7b08d579f9dc5e9dac45690228b Mon Sep 17 00:00:00 2001 From: Santo Cariotti Date: Sun, 15 Oct 2023 21:25:49 +0200 Subject: Use `registers` mod --- src/registers.rs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/registers.rs (limited to 'src/registers.rs') diff --git a/src/registers.rs b/src/registers.rs new file mode 100644 index 0000000..80b4a9b --- /dev/null +++ b/src/registers.rs @@ -0,0 +1,31 @@ +use nix::libc::user_regs_struct; + +/// Struct used to manipulate registers data from https://docs.rs/libc/0.2.147/libc/struct.user_regs_struct.html +pub struct RegistersData { + orig_rax: u64, + rdi: u64, + rsi: u64, + rdx: u64, + rax: u64, +} + +impl RegistersData { + /// Create new `RegistersData` from an `user_regs_struct`'C structure + pub fn new(registers: user_regs_struct) -> RegistersData { + RegistersData { + orig_rax: registers.orig_rax, + rdi: registers.rdi, + rsi: registers.rsi, + rdx: registers.rdx, + rax: registers.rax, + } + } + + /// Returns a good string which shows the output for a line + pub fn output(&self) -> String { + format!( + "{}({:x}, {:x}, {:x}, ...) = {:x}", + self.orig_rax, self.rdi, self.rsi, self.rdx, self.rax + ) + } +} -- cgit v1.2.3-18-g5258