aboutsummaryrefslogtreecommitdiff
path: root/custom_mutators
diff options
context:
space:
mode:
authorvanhauser-thc <vh@thc.org>2023-02-06 08:51:20 +0100
committervanhauser-thc <vh@thc.org>2023-02-06 08:51:20 +0100
commit8a2547073c500fcd637a7b276b7a38313bb70b5f (patch)
tree9afd3ed38005629d416e01df340f6538c9cac66f /custom_mutators
parente6120282556e4df79c01236849e5f6f225b8e428 (diff)
downloadafl++-8a2547073c500fcd637a7b276b7a38313bb70b5f.tar.gz
more options
Diffstat (limited to 'custom_mutators')
-rw-r--r--custom_mutators/autotokens/README2
-rw-r--r--custom_mutators/autotokens/TODO4
-rw-r--r--custom_mutators/autotokens/autotokens.cpp26
3 files changed, 27 insertions, 5 deletions
diff --git a/custom_mutators/autotokens/README b/custom_mutators/autotokens/README
index d8613232..e9c48662 100644
--- a/custom_mutators/autotokens/README
+++ b/custom_mutators/autotokens/README
@@ -24,6 +24,8 @@ Do **not** set `AFL_DISABLE_TRIM` with this custom mutator!
0 = none
1 = only -x or autodict
2 = -x, autodict and `CMPLOG`
+`AUTOTOKENS_CHANGE_MIN` - minimum number of mutations (1-256, default 8)
+`AUTOTOKENS_CHANGE_MAX` - maximum number of mutations (1-4096, default 64)
`AUTOTOKENS_CREATE_FROM_THIN_AIR` - if only one small start file is present and
a dictionary loaded then create one initial
structure based on the dictionary.
diff --git a/custom_mutators/autotokens/TODO b/custom_mutators/autotokens/TODO
index 528dff1f..496bfd45 100644
--- a/custom_mutators/autotokens/TODO
+++ b/custom_mutators/autotokens/TODO
@@ -9,7 +9,6 @@ analyse welche einen DICT haben, und welche davon rein ascii
corpus analyse:
+ libxml
- - hardbuzz
- sqlite
- libpcap
min len, max len, % wenn 95/98/99/100 ascii
@@ -20,3 +19,6 @@ AFL_TXT_MAX_LEN 65535
AFL_TXT_MIN_LEN 16
AFL_TXT_MIN_PERCENT=99
+-> KEIN FAV!
+
+change_min/_max werte
diff --git a/custom_mutators/autotokens/autotokens.cpp b/custom_mutators/autotokens/autotokens.cpp
index d3ae7e9c..ee35c68b 100644
--- a/custom_mutators/autotokens/autotokens.cpp
+++ b/custom_mutators/autotokens/autotokens.cpp
@@ -32,7 +32,7 @@ extern "C" {
#define AUTOTOKENS_CREATE_FROM_THIN_AIR 0
#define AUTOTOKENS_FUZZ_COUNT_SHIFT 0
// 0 = no learning, 1 only from -x dict/autodict, 2 also from cmplog
-#define AUTOTOKENS_LEARN_DICT 2
+#define AUTOTOKENS_LEARN_DICT 1
#ifndef AUTOTOKENS_SPLICE_DISABLE
#define AUTOTOKENS_SPLICE_DISABLE 0
#endif
@@ -64,6 +64,8 @@ static int alternative_tokenize = AUTOTOKENS_ALTERNATIVE_TOKENIZE;
static int learn_dictionary_tokens = AUTOTOKENS_LEARN_DICT;
static int fuzz_count_shift = AUTOTOKENS_FUZZ_COUNT_SHIFT;
static int create_from_thin_air = AUTOTOKENS_CREATE_FROM_THIN_AIR;
+static int change_min = AUTOTOKENS_CHANGE_MIN;
+static int change_max = AUTOTOKENS_CHANGE_MAX;
static u32 current_id;
static u32 valid_structures;
static u32 whitespace_ids;
@@ -151,8 +153,8 @@ extern "C" size_t afl_custom_fuzz(my_mutator_t *data, u8 *buf, size_t buf_size,
u32 i, m_size = (u32)m.size();
u32 rounds =
- MIN(AUTOTOKENS_CHANGE_MAX,
- MAX(AUTOTOKENS_CHANGE_MIN,
+ MIN(change_max,
+ MAX(change_min,
MIN(m_size >> 3, HAVOC_CYCLES * afl_ptr->queue_cur->perf_score *
afl_ptr->havoc_div / 256)));
// DEBUGF(stderr, "structure size: %lu, rounds: %u \n", m.size(), rounds);
@@ -1162,7 +1164,7 @@ extern "C" my_mutator_t *afl_custom_init(afl_state *afl, unsigned int seed) {
learn_dictionary_tokens = atoi(getenv("AUTOTOKENS_LEARN_DICT"));
if (learn_dictionary_tokens < 0 || learn_dictionary_tokens > 2) {
- learn_dictionary_tokens = 2;
+ learn_dictionary_tokens = AUTOTOKENS_LEARN_DICT;
}
@@ -1175,6 +1177,22 @@ extern "C" my_mutator_t *afl_custom_init(afl_state *afl, unsigned int seed) {
}
+ if (getenv("AUTOTOKENS_CHANGE_MIN")) {
+
+ change_min = atoi(getenv("AUTOTOKENS_CHANGE_MIN"));
+ if (change_min < 1 || change_min > 256) { change_min = AUTOTOKENS_CHANGE_MIN; }
+
+ }
+
+ if (getenv("AUTOTOKENS_CHANGE_MAX")) {
+
+ change_max = atoi(getenv("AUTOTOKENS_CHANGE_MAX"));
+ if (change_max < 1 || change_max > 4096) { change_max = AUTOTOKENS_CHANGE_MAX; }
+
+ }
+
+ if (change_max < change_min) { change_max = change_min + 1; }
+
if (getenv("AUTOTOKENS_WHITESPACE")) {
whitespace = getenv("AUTOTOKENS_WHITESPACE");