about summary refs log tree commit diff
diff options
context:
space:
mode:
authorvanhauser-thc <vh@thc.org>2023-06-06 13:12:31 +0200
committervanhauser-thc <vh@thc.org>2023-06-06 13:12:31 +0200
commit8de7f6131d48e27d53e894b65bd11e0dc3817639 (patch)
tree8dc1fd271e1d5bf9b6981774a5d1e172ed7fa02b
parent9a55bbdb44c1508a0b08728db2dacaebc9c43277 (diff)
downloadafl++-8de7f6131d48e27d53e894b65bd11e0dc3817639.tar.gz
add current mutation strategy to include
-rw-r--r--include/afl-mutations.h161
-rw-r--r--src/afl-fuzz-one.c7
2 files changed, 166 insertions, 2 deletions
diff --git a/include/afl-mutations.h b/include/afl-mutations.h
index 8d40855d..08037b09 100644
--- a/include/afl-mutations.h
+++ b/include/afl-mutations.h
@@ -77,6 +77,167 @@ enum {
 
 };
 
+  #define MUT_NORMAL_ARRAY_SIZE 77
+u32 normal_splice[MUT_NORMAL_ARRAY_SIZE] = {MUT_FLIPBIT,
+                                            MUT_FLIPBIT,
+                                            MUT_FLIPBIT,
+                                            MUT_FLIPBIT,
+                                            MUT_INTERESTING8,
+                                            MUT_INTERESTING8,
+                                            MUT_INTERESTING8,
+                                            MUT_INTERESTING8,
+                                            MUT_INTERESTING16,
+                                            MUT_INTERESTING16,
+                                            MUT_INTERESTING16BE,
+                                            MUT_INTERESTING16BE,
+                                            MUT_INTERESTING32,
+                                            MUT_INTERESTING32,
+                                            MUT_INTERESTING32BE,
+                                            MUT_INTERESTING32BE,
+                                            MUT_ARITH8_,
+                                            MUT_ARITH8_,
+                                            MUT_ARITH8_,
+                                            MUT_ARITH8_,
+                                            MUT_ARITH8,
+                                            MUT_ARITH8,
+                                            MUT_ARITH8,
+                                            MUT_ARITH8,
+                                            MUT_ARITH16_,
+                                            MUT_ARITH16_,
+                                            MUT_ARITH16BE_,
+                                            MUT_ARITH16BE_,
+                                            MUT_ARITH16,
+                                            MUT_ARITH16,
+                                            MUT_ARITH16BE,
+                                            MUT_ARITH16BE,
+                                            MUT_ARITH32_,
+                                            MUT_ARITH32_,
+                                            MUT_ARITH32BE_,
+                                            MUT_ARITH32BE_,
+                                            MUT_ARITH32,
+                                            MUT_ARITH32,
+                                            MUT_ARITH32BE,
+                                            MUT_ARITH32BE,
+                                            MUT_RAND8,
+                                            MUT_RAND8,
+                                            MUT_RAND8,
+                                            MUT_RAND8,
+                                            MUT_CLONE_COPY,
+                                            MUT_CLONE_COPY,
+                                            MUT_CLONE_COPY,
+                                            MUT_CLONE_FIXED,
+                                            MUT_OVERWRITE_COPY,
+                                            MUT_OVERWRITE_COPY,
+                                            MUT_OVERWRITE_COPY,
+                                            MUT_OVERWRITE_FIXED,
+                                            MUT_BYTEADD,
+                                            MUT_BYTESUB,
+                                            MUT_FLIP8,
+                                            MUT_SWITCH,
+                                            MUT_SWITCH,
+                                            MUT_DEL,
+                                            MUT_DEL,
+                                            MUT_DEL,
+                                            MUT_DEL,
+                                            MUT_DEL,
+                                            MUT_DEL,
+                                            MUT_DEL,
+                                            MUT_DEL,
+                                            MUT_EXTRA_OVERWRITE,
+                                            MUT_EXTRA_OVERWRITE,
+                                            MUT_EXTRA_INSERT,
+                                            MUT_EXTRA_INSERT,
+                                            MUT_AUTO_EXTRA_OVERWRITE,
+                                            MUT_AUTO_EXTRA_OVERWRITE,
+                                            MUT_AUTO_EXTRA_INSERT,
+                                            MUT_AUTO_EXTRA_INSERT,
+                                            MUT_SPLICE_OVERWRITE,
+                                            MUT_SPLICE_OVERWRITE,
+                                            MUT_SPLICE_INSERT,
+                                            MUT_SPLICE_INSERT};
+  #define MUT_SPLICE_ARRAY_SIZE 81
+u32 full_splice_array[MUT_SPLICE_ARRAY_SIZE] = {MUT_FLIPBIT,
+                                                MUT_FLIPBIT,
+                                                MUT_FLIPBIT,
+                                                MUT_FLIPBIT,
+                                                MUT_INTERESTING8,
+                                                MUT_INTERESTING8,
+                                                MUT_INTERESTING8,
+                                                MUT_INTERESTING8,
+                                                MUT_INTERESTING16,
+                                                MUT_INTERESTING16,
+                                                MUT_INTERESTING16BE,
+                                                MUT_INTERESTING16BE,
+                                                MUT_INTERESTING32,
+                                                MUT_INTERESTING32,
+                                                MUT_INTERESTING32BE,
+                                                MUT_INTERESTING32BE,
+                                                MUT_ARITH8_,
+                                                MUT_ARITH8_,
+                                                MUT_ARITH8_,
+                                                MUT_ARITH8_,
+                                                MUT_ARITH8,
+                                                MUT_ARITH8,
+                                                MUT_ARITH8,
+                                                MUT_ARITH8,
+                                                MUT_ARITH16_,
+                                                MUT_ARITH16_,
+                                                MUT_ARITH16BE_,
+                                                MUT_ARITH16BE_,
+                                                MUT_ARITH16,
+                                                MUT_ARITH16,
+                                                MUT_ARITH16BE,
+                                                MUT_ARITH16BE,
+                                                MUT_ARITH32_,
+                                                MUT_ARITH32_,
+                                                MUT_ARITH32BE_,
+                                                MUT_ARITH32BE_,
+                                                MUT_ARITH32,
+                                                MUT_ARITH32,
+                                                MUT_ARITH32BE,
+                                                MUT_ARITH32BE,
+                                                MUT_RAND8,
+                                                MUT_RAND8,
+                                                MUT_RAND8,
+                                                MUT_RAND8,
+                                                MUT_CLONE_COPY,
+                                                MUT_CLONE_COPY,
+                                                MUT_CLONE_COPY,
+                                                MUT_CLONE_FIXED,
+                                                MUT_OVERWRITE_COPY,
+                                                MUT_OVERWRITE_COPY,
+                                                MUT_OVERWRITE_COPY,
+                                                MUT_OVERWRITE_FIXED,
+                                                MUT_BYTEADD,
+                                                MUT_BYTESUB,
+                                                MUT_FLIP8,
+                                                MUT_SWITCH,
+                                                MUT_SWITCH,
+                                                MUT_DEL,
+                                                MUT_DEL,
+                                                MUT_DEL,
+                                                MUT_DEL,
+                                                MUT_DEL,
+                                                MUT_DEL,
+                                                MUT_DEL,
+                                                MUT_DEL,
+                                                MUT_EXTRA_OVERWRITE,
+                                                MUT_EXTRA_OVERWRITE,
+                                                MUT_EXTRA_INSERT,
+                                                MUT_EXTRA_INSERT,
+                                                MUT_AUTO_EXTRA_OVERWRITE,
+                                                MUT_AUTO_EXTRA_OVERWRITE,
+                                                MUT_AUTO_EXTRA_INSERT,
+                                                MUT_AUTO_EXTRA_INSERT,
+                                                MUT_SPLICE_OVERWRITE,
+                                                MUT_SPLICE_OVERWRITE,
+                                                MUT_SPLICE_OVERWRITE,
+                                                MUT_SPLICE_OVERWRITE,
+                                                MUT_SPLICE_INSERT,
+                                                MUT_SPLICE_INSERT,
+                                                MUT_SPLICE_INSERT,
+                                                MUT_SPLICE_INSERT};
+
 u32 mutation_strategy_exploration_text[MUT_STRATEGY_ARRAY_SIZE] = {
 
     MUT_FLIPBIT,
diff --git a/src/afl-fuzz-one.c b/src/afl-fuzz-one.c
index f5ddea0e..312e180d 100644
--- a/src/afl-fuzz-one.c
+++ b/src/afl-fuzz-one.c
@@ -2076,7 +2076,7 @@ havoc_stage:
      where we take the input file and make random stacked tweaks. */
 
   u32 *mutation_array;
-  u32  stack_max, stack_max_pow = afl->havoc_stack_pow2;
+  u32  stack_max;  // stack_max_pow = afl->havoc_stack_pow2;
 
   if (unlikely(afl->text_input || afl->queue_cur->is_ascii)) {  // is text?
 
@@ -2104,6 +2104,7 @@ havoc_stage:
 
   }
 
+  /*
   if (temp_len < 64) {
 
     --stack_max_pow;
@@ -2118,7 +2119,9 @@ havoc_stage:
 
   }
 
-  stack_max = 1 << stack_max_pow;
+  */
+
+  stack_max = 1 << (1 + rand_below(afl, afl->havoc_stack_pow2));
 
   // + (afl->extras_cnt ? 2 : 0) + (afl->a_extras_cnt ? 2 : 0);