From 4a33feb5168a3c93e84ee85b03b584a597807533 Mon Sep 17 00:00:00 2001 From: Anh <zenpoems@gmail.com> Date: Fri, 17 Aug 2018 17:13:23 +0000 Subject: [PATCH] Option to set entry point of afl fork server --- src/SConscript | 3 +++ src/SConstruct | 1 - src/libzafl.cpp | 21 ++++++++++++++++----- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/SConscript b/src/SConscript index d41215f..65471d4 100644 --- a/src/SConscript +++ b/src/SConscript @@ -13,10 +13,13 @@ cpppath=''' ''' myenv=myenv.Clone(CPPPATH=Split(cpppath)) + myenv.Append(CXXFLAGS = " -std=c++11 ") +#myenv.Append(CXXFLAGS = " -std=c++11 -DZAFL_AUTO_INIT_FORK_SERVER") lib=myenv.SharedLibrary("zafl", Split(files)) install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib) + Default(install) Return('install') diff --git a/src/SConstruct b/src/SConstruct index 9ef80fb..05d1c2b 100644 --- a/src/SConstruct +++ b/src/SConstruct @@ -5,7 +5,6 @@ Export('env') env.Replace(debug=ARGUMENTS.get("debug",0)) - if int(env['debug']) == 1: print "Setting debug mode" env.Append(CFLAGS=" -g ") diff --git a/src/libzafl.cpp b/src/libzafl.cpp index 4dcb274..81ba777 100644 --- a/src/libzafl.cpp +++ b/src/libzafl.cpp @@ -44,16 +44,28 @@ static auto debug = false; static void zafl_setupSharedMemory(); static bool shared_memory_is_setup = false; +#ifdef ZAFL_AUTO_INIT_FORK_SERVER void __attribute__((constructor)) zafl_initAflForkServer(); +#else +void __attribute__((constructor)) zafl_setupSharedMemory(); +#endif static void zafl_setupSharedMemory() { + if (getenv("ZAFL_DEBUG")) debug = true; + + if (shared_memory_is_setup) + return; + zafl_prev_id = 0; zafl_trace_map = NULL; char *shm_env_var = getenv(SHM_ENV_VAR); if(!shm_env_var) { - PRINT_ERROR("Error getting shm environment variable\n"); + PRINT_ERROR("Error getting shm environment variable - fake allocate AFL trace map\n"); + + // fake allocate until someone calls zafl_initAflForkServer() + zafl_trace_map = (u8*)malloc(MAP_SIZE); return; } shm_id = atoi(shm_env_var); @@ -74,8 +86,7 @@ void zafl_initAflForkServer() if (getenv("ZAFL_DEBUG")) debug = true; - if (!shared_memory_is_setup) - zafl_setupSharedMemory(); + zafl_setupSharedMemory(); if (!zafl_trace_map) { zafl_trace_map = (u8*)malloc(MAP_SIZE); @@ -121,8 +132,8 @@ void zafl_initAflForkServer() } } -// for debugging purposes only -// basic block instrumentations will be inlined via a Zipr transformation +// for efficiency, basic block instrumentation is inlined via a Zipr transformation +// this code is used for debugging purposes only void zafl_bbInstrument(unsigned short id) { zafl_trace_map[zafl_prev_id ^ id]++; zafl_prev_id = id >> 1; -- GitLab