From 1bce5ad8cf0c67df0cbdd63078fd97f016e0a1a7 Mon Sep 17 00:00:00 2001 From: vanhauser-thc Date: Thu, 4 Feb 2021 21:47:00 +0100 Subject: [PATCH] overwrite token mutator --- afl/src/mutators/mutations.rs | 22 ++++++++++++++++++++++ afl/src/mutators/scheduled.rs | 8 ++++---- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/afl/src/mutators/mutations.rs b/afl/src/mutators/mutations.rs index c5d2e928d4..f1e2d432a9 100644 --- a/afl/src/mutators/mutations.rs +++ b/afl/src/mutators/mutations.rs @@ -510,6 +510,28 @@ where mem_move(input.bytes_mut(), token, 0, off, len); Ok(MutationResult::Mutated) } + +// Overwrite with a dictionary token +pub fn mutation_tokenreplace( + mutator: &mut M, + rand: &mut R, + _: &C, + input: &mut I, +) -> Result +where + M: HasMaxSize, + I: Input + HasBytesVec, + R: Rand, +{ + if mutator.tokens.size() > len || !len { return Ok(MutationResult::Skipped); } + let token = &mutator.tokens[rand.below(token.size())]; + let token_len = token.size(); + let size = input.bytes().len(); + let off rand.below((mutator.max_size() - token_len) as u64)) as usize; + mem_move(input.bytes_mut(), token, 0, off, len); + Ok(MutationResult::Mutated) +} + */ pub fn mutation_bytesinsert( diff --git a/afl/src/mutators/scheduled.rs b/afl/src/mutators/scheduled.rs index e238e42aaa..a726331d59 100644 --- a/afl/src/mutators/scheduled.rs +++ b/afl/src/mutators/scheduled.rs @@ -288,10 +288,10 @@ where scheduled.add_mutation(mutation_bytescopy); scheduled.add_mutation(mutation_bytesswap); - // TODO dictionary and custom dictionary (redqueen etc.) - /*scheduled.add_mutation(mutation_bitflip); - scheduled.add_mutation(mutation_bitflip); - scheduled.add_mutation(mutation_bitflip);*/ + /*scheduled.add_mutation(mutation_tokeninsert); + scheduled.add_mutation(mutation_tokenreplace);*/ + + // TODO: custom dictionary (redqueen etc.) scheduled.add_mutation(mutation_splice);