From 5454307a15cacfabec2a306d1386a73f86eaed55 Mon Sep 17 00:00:00 2001 From: Andrea Fioraldi Date: Tue, 6 Jul 2021 14:41:15 +0200 Subject: [PATCH] bump qemu_libafl_bridge to 0.3.0 --- qemu_libafl_bridge/Cargo.toml | 2 +- qemu_libafl_bridge/src/amd64.rs | 2 ++ qemu_libafl_bridge/src/lib.rs | 18 +++++++++++------- qemu_libafl_bridge/src/x86.rs | 2 ++ 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/qemu_libafl_bridge/Cargo.toml b/qemu_libafl_bridge/Cargo.toml index 999ecfb2a0..5b3a052baa 100644 --- a/qemu_libafl_bridge/Cargo.toml +++ b/qemu_libafl_bridge/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "qemu_libafl_bridge" -version = "0.2.2" +version = "0.3.0" authors = ["Andrea Fioraldi "] description = "QEMU and LibAFL bridge lib" repository = "https://github.com/AFLplusplus/qemu-libafl-bridge/" diff --git a/qemu_libafl_bridge/src/amd64.rs b/qemu_libafl_bridge/src/amd64.rs index a7cf27d2ab..b2ac5278d2 100644 --- a/qemu_libafl_bridge/src/amd64.rs +++ b/qemu_libafl_bridge/src/amd64.rs @@ -20,4 +20,6 @@ pub enum Amd64Regs { R13 = 13, R14 = 14, R15 = 15, + Rip = 16, + Rflags = 17, } diff --git a/qemu_libafl_bridge/src/lib.rs b/qemu_libafl_bridge/src/lib.rs index c03ecfda11..fa82d23003 100644 --- a/qemu_libafl_bridge/src/lib.rs +++ b/qemu_libafl_bridge/src/lib.rs @@ -1,4 +1,4 @@ -use core::{mem::transmute, ptr::copy_nonoverlapping}; +use core::{convert::Into, mem::transmute, ptr::copy_nonoverlapping}; use num::Num; pub mod amd64; @@ -26,17 +26,17 @@ extern "C" { pub struct QemuEmulator {} impl QemuEmulator { - pub fn write_mem(&mut self, addr: isize, buf: &[u8]) { + pub fn write_mem(&mut self, addr: isize, buf: &[T]) { let host_addr = self.g2h(addr); - unsafe { copy_nonoverlapping(buf.as_ptr() as *const u8, host_addr, buf.len()) } + unsafe { copy_nonoverlapping(buf.as_ptr() as *const _ as *const u8, host_addr, buf.len()) } } - pub fn read_mem(&mut self, addr: isize, buf: &mut [u8]) { + pub fn read_mem(&mut self, addr: isize, buf: &mut [T]) { let host_addr = self.g2h(addr); unsafe { copy_nonoverlapping( host_addr as *const u8, - buf.as_mut_ptr() as *mut u8, + buf.as_mut_ptr() as *mut _ as *mut u8, buf.len(), ) } @@ -46,10 +46,12 @@ impl QemuEmulator { unsafe { libafl_qemu_num_regs() } } - pub fn write_reg(&mut self, reg: i32, val: T) -> Result<(), String> + pub fn write_reg(&mut self, reg: R, val: T) -> Result<(), String> where T: Num + PartialOrd + Copy, + R: Into, { + let reg = reg.into(); let success = unsafe { libafl_qemu_write_reg(reg, &val as *const _ as *const u8) }; if success != 0 { Ok(()) @@ -58,10 +60,12 @@ impl QemuEmulator { } } - pub fn read_reg(&mut self, reg: i32) -> Result + pub fn read_reg(&mut self, reg: R) -> Result where T: Num + PartialOrd + Copy, + R: Into, { + let reg = reg.into(); let mut val = T::zero(); let success = unsafe { libafl_qemu_read_reg(reg, &mut val as *mut _ as *mut u8) }; if success != 0 { diff --git a/qemu_libafl_bridge/src/x86.rs b/qemu_libafl_bridge/src/x86.rs index 610bde7edf..d93ab25931 100644 --- a/qemu_libafl_bridge/src/x86.rs +++ b/qemu_libafl_bridge/src/x86.rs @@ -12,4 +12,6 @@ pub enum X86Regs { Edi = 5, Ebp = 6, Esp = 7, + Eip = 8, + Eflags = 9, }