about summary refs log tree commit diff
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2023-06-29 15:01:41 +0300
committerGitHub <noreply@github.com>2023-06-29 15:01:41 +0300
commit15fc47a62cd4fa47d6e2436a3830c656ffe64fc9 (patch)
tree476421e898e6268c220009dce0863817707ed608
parent7b1238b0f4d177976a4de5fa35182009da59cc45 (diff)
parentc2c27349c3d74f79ceb6cd3795862b21d90429ea (diff)
downloadafl++-15fc47a62cd4fa47d6e2436a3830c656ffe64fc9.tar.gz
Merge pull request #1789 from AFLplusplus/orig_mut3
better mutator weightings
-rw-r--r--include/afl-mutations.h460
-rw-r--r--src/afl-fuzz-one.c12
2 files changed, 467 insertions, 5 deletions
diff --git a/include/afl-mutations.h b/include/afl-mutations.h
index a3c9fd59..cc4840c8 100644
--- a/include/afl-mutations.h
+++ b/include/afl-mutations.h
@@ -77,6 +77,466 @@ enum {
 
 };
 
+  #define MUT_TXT_ARRAY_SIZE 200
+u32 text_array[MUT_TXT_ARRAY_SIZE] = {MUT_FLIPBIT,
+                                      MUT_FLIPBIT,
+                                      MUT_FLIPBIT,
+                                      MUT_FLIPBIT,
+                                      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_ARITH8,
+                                      MUT_ARITH8,
+                                      MUT_ARITH8,
+                                      MUT_ARITH8,
+                                      MUT_ARITH16_,
+                                      MUT_ARITH16_,
+                                      MUT_ARITH16_,
+                                      MUT_ARITH16_,
+                                      MUT_ARITH16_,
+                                      MUT_ARITH16BE_,
+                                      MUT_ARITH16BE_,
+                                      MUT_ARITH16BE_,
+                                      MUT_ARITH16BE_,
+                                      MUT_ARITH16BE_,
+                                      MUT_ARITH16,
+                                      MUT_ARITH16,
+                                      MUT_ARITH16,
+                                      MUT_ARITH16,
+                                      MUT_ARITH16,
+                                      MUT_ARITH16BE,
+                                      MUT_ARITH16BE,
+                                      MUT_ARITH16BE,
+                                      MUT_ARITH16BE,
+                                      MUT_ARITH16BE,
+                                      MUT_ARITH32_,
+                                      MUT_ARITH32_,
+                                      MUT_ARITH32_,
+                                      MUT_ARITH32_,
+                                      MUT_ARITH32_,
+                                      MUT_ARITH32BE_,
+                                      MUT_ARITH32BE_,
+                                      MUT_ARITH32BE_,
+                                      MUT_ARITH32BE_,
+                                      MUT_ARITH32BE_,
+                                      MUT_ARITH32,
+                                      MUT_ARITH32,
+                                      MUT_ARITH32,
+                                      MUT_ARITH32,
+                                      MUT_ARITH32,
+                                      MUT_ARITH32BE,
+                                      MUT_ARITH32BE,
+                                      MUT_ARITH32BE,
+                                      MUT_ARITH32BE,
+                                      MUT_ARITH32BE,
+                                      MUT_RAND8,
+                                      MUT_RAND8,
+                                      MUT_RAND8,
+                                      MUT_RAND8,
+                                      MUT_RAND8,
+                                      MUT_RAND8,
+                                      MUT_RAND8,
+                                      MUT_RAND8,
+                                      MUT_CLONE_COPY,
+                                      MUT_CLONE_COPY,
+                                      MUT_CLONE_COPY,
+                                      MUT_CLONE_COPY,
+                                      MUT_CLONE_COPY,
+                                      MUT_CLONE_COPY,
+                                      MUT_CLONE_COPY,
+                                      MUT_CLONE_COPY,
+                                      MUT_CLONE_COPY,
+                                      MUT_CLONE_COPY,
+                                      MUT_CLONE_COPY,
+                                      MUT_CLONE_COPY,
+                                      MUT_CLONE_COPY,
+                                      MUT_CLONE_COPY,
+                                      MUT_CLONE_COPY,
+                                      MUT_CLONE_COPY,
+                                      MUT_CLONE_FIXED,
+                                      MUT_CLONE_FIXED,
+                                      MUT_CLONE_FIXED,
+                                      MUT_CLONE_FIXED,
+                                      MUT_CLONE_FIXED,
+                                      MUT_CLONE_FIXED,
+                                      MUT_CLONE_FIXED,
+                                      MUT_CLONE_FIXED,
+                                      MUT_OVERWRITE_COPY,
+                                      MUT_OVERWRITE_COPY,
+                                      MUT_OVERWRITE_COPY,
+                                      MUT_OVERWRITE_COPY,
+                                      MUT_OVERWRITE_COPY,
+                                      MUT_OVERWRITE_COPY,
+                                      MUT_OVERWRITE_COPY,
+                                      MUT_OVERWRITE_COPY,
+                                      MUT_OVERWRITE_COPY,
+                                      MUT_OVERWRITE_COPY,
+                                      MUT_OVERWRITE_FIXED,
+                                      MUT_OVERWRITE_FIXED,
+                                      MUT_OVERWRITE_FIXED,
+                                      MUT_OVERWRITE_FIXED,
+                                      MUT_OVERWRITE_FIXED,
+                                      MUT_BYTEADD,
+                                      MUT_BYTEADD,
+                                      MUT_BYTEADD,
+                                      MUT_BYTEADD,
+                                      MUT_BYTEADD,
+                                      MUT_BYTESUB,
+                                      MUT_BYTESUB,
+                                      MUT_BYTESUB,
+                                      MUT_BYTESUB,
+                                      MUT_BYTESUB,
+                                      MUT_FLIP8,
+                                      MUT_FLIP8,
+                                      MUT_FLIP8,
+                                      MUT_FLIP8,
+                                      MUT_SWITCH,
+                                      MUT_SWITCH,
+                                      MUT_SWITCH,
+                                      MUT_SWITCH,
+                                      MUT_SWITCH,
+                                      MUT_SWITCH,
+                                      MUT_SWITCH,
+                                      MUT_DEL,
+                                      MUT_DEL,
+                                      MUT_DEL,
+                                      MUT_DEL,
+                                      MUT_DEL,
+                                      MUT_DEL,
+                                      MUT_DEL,
+                                      MUT_DEL,
+                                      MUT_DEL,
+                                      MUT_DEL,
+                                      MUT_EXTRA_OVERWRITE,
+                                      MUT_EXTRA_OVERWRITE,
+                                      MUT_EXTRA_OVERWRITE,
+                                      MUT_EXTRA_OVERWRITE,
+                                      MUT_EXTRA_OVERWRITE,
+                                      MUT_EXTRA_OVERWRITE,
+                                      MUT_EXTRA_OVERWRITE,
+                                      MUT_EXTRA_INSERT,
+                                      MUT_EXTRA_INSERT,
+                                      MUT_EXTRA_INSERT,
+                                      MUT_EXTRA_INSERT,
+                                      MUT_EXTRA_INSERT,
+                                      MUT_EXTRA_INSERT,
+                                      MUT_EXTRA_INSERT,
+                                      MUT_EXTRA_INSERT,
+                                      MUT_EXTRA_INSERT,
+                                      MUT_AUTO_EXTRA_OVERWRITE,
+                                      MUT_AUTO_EXTRA_OVERWRITE,
+                                      MUT_AUTO_EXTRA_OVERWRITE,
+                                      MUT_AUTO_EXTRA_OVERWRITE,
+                                      MUT_AUTO_EXTRA_INSERT,
+                                      MUT_AUTO_EXTRA_INSERT,
+                                      MUT_AUTO_EXTRA_INSERT,
+                                      MUT_AUTO_EXTRA_INSERT,
+                                      MUT_AUTO_EXTRA_INSERT,
+                                      MUT_SPLICE_OVERWRITE,
+                                      MUT_SPLICE_OVERWRITE,
+                                      MUT_SPLICE_OVERWRITE,
+                                      MUT_SPLICE_OVERWRITE,
+                                      MUT_SPLICE_OVERWRITE,
+                                      MUT_SPLICE_OVERWRITE,
+                                      MUT_SPLICE_OVERWRITE,
+                                      MUT_SPLICE_OVERWRITE,
+                                      MUT_SPLICE_OVERWRITE,
+                                      MUT_SPLICE_OVERWRITE,
+                                      MUT_SPLICE_OVERWRITE,
+                                      MUT_SPLICE_OVERWRITE,
+                                      MUT_SPLICE_INSERT,
+                                      MUT_SPLICE_INSERT,
+                                      MUT_SPLICE_INSERT,
+                                      MUT_SPLICE_INSERT,
+                                      MUT_SPLICE_INSERT,
+                                      MUT_SPLICE_INSERT,
+                                      MUT_SPLICE_INSERT,
+                                      MUT_SPLICE_INSERT,
+                                      MUT_SPLICE_INSERT,
+                                      MUT_SPLICE_INSERT,
+                                      MUT_SPLICE_INSERT,
+                                      MUT_SPLICE_INSERT,
+                                      MUT_SPLICE_INSERT};
+
+  #define MUT_BIN_ARRAY_SIZE 256
+u32 binary_array[MUT_BIN_ARRAY_SIZE] = {MUT_FLIPBIT,
+                                        MUT_FLIPBIT,
+                                        MUT_FLIPBIT,
+                                        MUT_FLIPBIT,
+                                        MUT_FLIPBIT,
+                                        MUT_FLIPBIT,
+                                        MUT_FLIPBIT,
+                                        MUT_FLIPBIT,
+                                        MUT_FLIPBIT,
+                                        MUT_FLIPBIT,
+                                        MUT_FLIPBIT,
+                                        MUT_INTERESTING8,
+                                        MUT_INTERESTING8,
+                                        MUT_INTERESTING8,
+                                        MUT_INTERESTING8,
+                                        MUT_INTERESTING8,
+                                        MUT_INTERESTING8,
+                                        MUT_INTERESTING8,
+                                        MUT_INTERESTING8,
+                                        MUT_INTERESTING8,
+                                        MUT_INTERESTING16,
+                                        MUT_INTERESTING16,
+                                        MUT_INTERESTING16,
+                                        MUT_INTERESTING16,
+                                        MUT_INTERESTING16,
+                                        MUT_INTERESTING16,
+                                        MUT_INTERESTING16BE,
+                                        MUT_INTERESTING16BE,
+                                        MUT_INTERESTING16BE,
+                                        MUT_INTERESTING16BE,
+                                        MUT_INTERESTING16BE,
+                                        MUT_INTERESTING16BE,
+                                        MUT_INTERESTING32,
+                                        MUT_INTERESTING32,
+                                        MUT_INTERESTING32,
+                                        MUT_INTERESTING32,
+                                        MUT_INTERESTING32,
+                                        MUT_INTERESTING32,
+                                        MUT_INTERESTING32BE,
+                                        MUT_INTERESTING32BE,
+                                        MUT_INTERESTING32BE,
+                                        MUT_INTERESTING32BE,
+                                        MUT_INTERESTING32BE,
+                                        MUT_INTERESTING32BE,
+                                        MUT_ARITH8_,
+                                        MUT_ARITH8_,
+                                        MUT_ARITH8_,
+                                        MUT_ARITH8_,
+                                        MUT_ARITH8_,
+                                        MUT_ARITH8_,
+                                        MUT_ARITH8_,
+                                        MUT_ARITH8_,
+                                        MUT_ARITH8_,
+                                        MUT_ARITH8,
+                                        MUT_ARITH8,
+                                        MUT_ARITH8,
+                                        MUT_ARITH8,
+                                        MUT_ARITH8,
+                                        MUT_ARITH8,
+                                        MUT_ARITH8,
+                                        MUT_ARITH8,
+                                        MUT_ARITH8,
+                                        MUT_ARITH8,
+                                        MUT_ARITH16_,
+                                        MUT_ARITH16_,
+                                        MUT_ARITH16_,
+                                        MUT_ARITH16_,
+                                        MUT_ARITH16_,
+                                        MUT_ARITH16_,
+                                        MUT_ARITH16BE_,
+                                        MUT_ARITH16BE_,
+                                        MUT_ARITH16BE_,
+                                        MUT_ARITH16BE_,
+                                        MUT_ARITH16BE_,
+                                        MUT_ARITH16BE_,
+                                        MUT_ARITH16,
+                                        MUT_ARITH16,
+                                        MUT_ARITH16,
+                                        MUT_ARITH16,
+                                        MUT_ARITH16,
+                                        MUT_ARITH16,
+                                        MUT_ARITH16BE,
+                                        MUT_ARITH16BE,
+                                        MUT_ARITH16BE,
+                                        MUT_ARITH16BE,
+                                        MUT_ARITH16BE,
+                                        MUT_ARITH16BE,
+                                        MUT_ARITH32_,
+                                        MUT_ARITH32_,
+                                        MUT_ARITH32_,
+                                        MUT_ARITH32_,
+                                        MUT_ARITH32_,
+                                        MUT_ARITH32_,
+                                        MUT_ARITH32BE_,
+                                        MUT_ARITH32BE_,
+                                        MUT_ARITH32BE_,
+                                        MUT_ARITH32BE_,
+                                        MUT_ARITH32BE_,
+                                        MUT_ARITH32BE_,
+                                        MUT_ARITH32,
+                                        MUT_ARITH32,
+                                        MUT_ARITH32,
+                                        MUT_ARITH32,
+                                        MUT_ARITH32,
+                                        MUT_ARITH32,
+                                        MUT_ARITH32BE,
+                                        MUT_ARITH32BE,
+                                        MUT_ARITH32BE,
+                                        MUT_ARITH32BE,
+                                        MUT_ARITH32BE,
+                                        MUT_ARITH32BE,
+                                        MUT_RAND8,
+                                        MUT_RAND8,
+                                        MUT_RAND8,
+                                        MUT_RAND8,
+                                        MUT_RAND8,
+                                        MUT_RAND8,
+                                        MUT_RAND8,
+                                        MUT_RAND8,
+                                        MUT_RAND8,
+                                        MUT_CLONE_COPY,
+                                        MUT_CLONE_COPY,
+                                        MUT_CLONE_COPY,
+                                        MUT_CLONE_COPY,
+                                        MUT_CLONE_COPY,
+                                        MUT_CLONE_COPY,
+                                        MUT_CLONE_COPY,
+                                        MUT_CLONE_COPY,
+                                        MUT_CLONE_COPY,
+                                        MUT_CLONE_COPY,
+                                        MUT_CLONE_COPY,
+                                        MUT_CLONE_COPY,
+                                        MUT_CLONE_COPY,
+                                        MUT_CLONE_COPY,
+                                        MUT_CLONE_FIXED,
+                                        MUT_CLONE_FIXED,
+                                        MUT_CLONE_FIXED,
+                                        MUT_CLONE_FIXED,
+                                        MUT_CLONE_FIXED,
+                                        MUT_CLONE_FIXED,
+                                        MUT_CLONE_FIXED,
+                                        MUT_OVERWRITE_COPY,
+                                        MUT_OVERWRITE_COPY,
+                                        MUT_OVERWRITE_COPY,
+                                        MUT_OVERWRITE_COPY,
+                                        MUT_OVERWRITE_COPY,
+                                        MUT_OVERWRITE_COPY,
+                                        MUT_OVERWRITE_COPY,
+                                        MUT_OVERWRITE_COPY,
+                                        MUT_OVERWRITE_COPY,
+                                        MUT_OVERWRITE_COPY,
+                                        MUT_OVERWRITE_FIXED,
+                                        MUT_OVERWRITE_FIXED,
+                                        MUT_OVERWRITE_FIXED,
+                                        MUT_OVERWRITE_FIXED,
+                                        MUT_OVERWRITE_FIXED,
+                                        MUT_BYTEADD,
+                                        MUT_BYTEADD,
+                                        MUT_BYTEADD,
+                                        MUT_BYTEADD,
+                                        MUT_BYTEADD,
+                                        MUT_BYTEADD,
+                                        MUT_BYTESUB,
+                                        MUT_BYTESUB,
+                                        MUT_BYTESUB,
+                                        MUT_BYTESUB,
+                                        MUT_BYTESUB,
+                                        MUT_BYTESUB,
+                                        MUT_FLIP8,
+                                        MUT_FLIP8,
+                                        MUT_FLIP8,
+                                        MUT_FLIP8,
+                                        MUT_SWITCH,
+                                        MUT_SWITCH,
+                                        MUT_SWITCH,
+                                        MUT_SWITCH,
+                                        MUT_SWITCH,
+                                        MUT_SWITCH,
+                                        MUT_DEL,
+                                        MUT_DEL,
+                                        MUT_DEL,
+                                        MUT_DEL,
+                                        MUT_DEL,
+                                        MUT_DEL,
+                                        MUT_DEL,
+                                        MUT_DEL,
+                                        MUT_DEL,
+                                        MUT_EXTRA_OVERWRITE,
+                                        MUT_EXTRA_OVERWRITE,
+                                        MUT_EXTRA_OVERWRITE,
+                                        MUT_EXTRA_OVERWRITE,
+                                        MUT_EXTRA_OVERWRITE,
+                                        MUT_EXTRA_OVERWRITE,
+                                        MUT_EXTRA_OVERWRITE,
+                                        MUT_EXTRA_OVERWRITE,
+                                        MUT_EXTRA_OVERWRITE,
+                                        MUT_EXTRA_OVERWRITE,
+                                        MUT_EXTRA_INSERT,
+                                        MUT_EXTRA_INSERT,
+                                        MUT_EXTRA_INSERT,
+                                        MUT_EXTRA_INSERT,
+                                        MUT_EXTRA_INSERT,
+                                        MUT_EXTRA_INSERT,
+                                        MUT_EXTRA_INSERT,
+                                        MUT_EXTRA_INSERT,
+                                        MUT_EXTRA_INSERT,
+                                        MUT_EXTRA_INSERT,
+                                        MUT_EXTRA_INSERT,
+                                        MUT_EXTRA_INSERT,
+                                        MUT_AUTO_EXTRA_OVERWRITE,
+                                        MUT_AUTO_EXTRA_OVERWRITE,
+                                        MUT_AUTO_EXTRA_OVERWRITE,
+                                        MUT_AUTO_EXTRA_OVERWRITE,
+                                        MUT_AUTO_EXTRA_OVERWRITE,
+                                        MUT_AUTO_EXTRA_OVERWRITE,
+                                        MUT_AUTO_EXTRA_OVERWRITE,
+                                        MUT_AUTO_EXTRA_OVERWRITE,
+                                        MUT_AUTO_EXTRA_OVERWRITE,
+                                        MUT_AUTO_EXTRA_INSERT,
+                                        MUT_AUTO_EXTRA_INSERT,
+                                        MUT_AUTO_EXTRA_INSERT,
+                                        MUT_AUTO_EXTRA_INSERT,
+                                        MUT_AUTO_EXTRA_INSERT,
+                                        MUT_AUTO_EXTRA_INSERT,
+                                        MUT_AUTO_EXTRA_INSERT,
+                                        MUT_AUTO_EXTRA_INSERT,
+                                        MUT_AUTO_EXTRA_INSERT,
+                                        MUT_AUTO_EXTRA_INSERT,
+                                        MUT_AUTO_EXTRA_INSERT,
+                                        MUT_SPLICE_OVERWRITE,
+                                        MUT_SPLICE_OVERWRITE,
+                                        MUT_SPLICE_OVERWRITE,
+                                        MUT_SPLICE_OVERWRITE,
+                                        MUT_SPLICE_OVERWRITE,
+                                        MUT_SPLICE_OVERWRITE,
+                                        MUT_SPLICE_OVERWRITE,
+                                        MUT_SPLICE_OVERWRITE,
+                                        MUT_SPLICE_OVERWRITE,
+                                        MUT_SPLICE_OVERWRITE,
+                                        MUT_SPLICE_OVERWRITE,
+                                        MUT_SPLICE_OVERWRITE,
+                                        MUT_SPLICE_OVERWRITE,
+                                        MUT_SPLICE_INSERT,
+                                        MUT_SPLICE_INSERT,
+                                        MUT_SPLICE_INSERT,
+                                        MUT_SPLICE_INSERT,
+                                        MUT_SPLICE_INSERT,
+                                        MUT_SPLICE_INSERT,
+                                        MUT_SPLICE_INSERT,
+                                        MUT_SPLICE_INSERT,
+                                        MUT_SPLICE_INSERT,
+                                        MUT_SPLICE_INSERT,
+                                        MUT_SPLICE_INSERT,
+                                        MUT_SPLICE_INSERT,
+                                        MUT_SPLICE_INSERT,
+                                        MUT_SPLICE_INSERT};
+
   #define MUT_NORMAL_ARRAY_SIZE 77
 u32 normal_splice_array[MUT_NORMAL_ARRAY_SIZE] = {MUT_FLIPBIT,
                                                   MUT_FLIPBIT,
diff --git a/src/afl-fuzz-one.c b/src/afl-fuzz-one.c
index 4efc661e..c6e49653 100644
--- a/src/afl-fuzz-one.c
+++ b/src/afl-fuzz-one.c
@@ -2101,17 +2101,17 @@ havoc_stage:
 
   */
 
-  rand_max = MUT_STRATEGY_ARRAY_SIZE;
-
-  if (unlikely(afl->text_input /*|| afl->queue_cur->is_ascii*/)) {  // is text?
+  if (unlikely(afl->text_input)) {  // is text?
 
     if (likely(afl->fuzz_mode == 0)) {  // is exploration?
 
-      mutation_array = (unsigned int *)&mutation_strategy_exploration_text;
+      mutation_array = (unsigned int *)&text_array;
+      rand_max = MUT_TXT_ARRAY_SIZE;
 
     } else {  // is exploitation!
 
       mutation_array = (unsigned int *)&mutation_strategy_exploitation_text;
+      rand_max = MUT_STRATEGY_ARRAY_SIZE;
 
     }
 
@@ -2119,11 +2119,13 @@ havoc_stage:
 
     if (likely(afl->fuzz_mode == 0)) {  // is exploration?
 
-      mutation_array = (unsigned int *)&mutation_strategy_exploration_binary;
+      mutation_array = (unsigned int *)&binary_array;
+      rand_max = MUT_BIN_ARRAY_SIZE;
 
     } else {  // is exploitation!
 
       mutation_array = (unsigned int *)&mutation_strategy_exploitation_binary;
+      rand_max = MUT_STRATEGY_ARRAY_SIZE;
 
     }