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()); }