From 5258ea42bb3216c2f377b1b336a7eed8fe2c3b9c Mon Sep 17 00:00:00 2001 From: Anh <zenpoems@gmail.com> Date: Fri, 24 Aug 2018 20:40:41 +0000 Subject: [PATCH] Respect red zone when inserting fork server code --- afl_transforms/tools/zafl/zafl.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/afl_transforms/tools/zafl/zafl.cpp b/afl_transforms/tools/zafl/zafl.cpp index 306df83..8a07e25 100644 --- a/afl_transforms/tools/zafl/zafl.cpp +++ b/afl_transforms/tools/zafl/zafl.cpp @@ -444,7 +444,8 @@ void Zafl_t::insertForkServer(Instruction_t* p_entry) // insert the instrumentation auto tmp=p_entry; - (void)insertAssemblyBefore(getFileIR(),tmp," push rdi") ; + (void)insertAssemblyBefore(getFileIR(), tmp, "lea rsp, [rsp-128]"); + tmp= insertAssemblyAfter(getFileIR(),tmp," push rdi") ; tmp= insertAssemblyAfter(getFileIR(), tmp," push rsi ") ; tmp= insertAssemblyAfter(getFileIR(), tmp," push rbp") ; tmp= insertAssemblyAfter(getFileIR(), tmp," push rdx") ; @@ -476,7 +477,7 @@ void Zafl_t::insertForkServer(Instruction_t* p_entry) tmp= insertAssemblyAfter(getFileIR(), tmp," pop rdx"); tmp= insertAssemblyAfter(getFileIR(), tmp," pop rbp"); tmp= insertAssemblyAfter(getFileIR(), tmp," pop rsi"); - tmp= insertAssemblyAfter(getFileIR(), tmp," pop rdi"); + tmp= insertAssemblyAfter(getFileIR(), tmp," lea rsp, [rsp+128]"); } void Zafl_t::insertForkServer(string p_forkServerEntry) -- GitLab