From 2730515c460281c63d68ca2f76718288761c817b Mon Sep 17 00:00:00 2001 From: Dongjia Zhang Date: Mon, 24 Jan 2022 17:17:19 +0900 Subject: [PATCH] Asan Fix (#490) * fix * fmt --- libafl_frida/src/asan/asan_rt.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/libafl_frida/src/asan/asan_rt.rs b/libafl_frida/src/asan/asan_rt.rs index b28f594531..f3a8a891ca 100644 --- a/libafl_frida/src/asan/asan_rt.rs +++ b/libafl_frida/src/asan/asan_rt.rs @@ -2295,6 +2295,14 @@ impl AsanRuntime { X86Register::Rip => { writer.put_mov_reg_address(X86Register::Rdi, true_rip); } + X86Register::Rsp => { + // In this case rsp clobbered + writer.put_lea_reg_reg_offset( + X86Register::Rdi, + X86Register::Rsp, + redzone_size + 0x8 * 6, + ); + } _ => { writer.put_mov_reg_reg(X86Register::Rdi, basereg.unwrap()); } @@ -2313,6 +2321,14 @@ impl AsanRuntime { // In this case rdi is already clobbered, so we want it from the stack (we pushed rdi onto stack before!) writer.put_mov_reg_reg_offset_ptr(X86Register::Rsi, X86Register::Rsp, -0x28); } + X86Register::Rsp => { + // In this case rsp is also clobbered + writer.put_lea_reg_reg_offset( + X86Register::Rsi, + X86Register::Rsp, + redzone_size + 0x8 * 6, + ); + } _ => { writer.put_mov_reg_reg(X86Register::Rsi, indexreg.unwrap()); }