Giter Club home page Giter Club logo

honggfuzz's Introduction

Description

This fork of honggfuzz has two purposes:

  • document usage of external mutators and postprocessors
  • add support for external encoders

The code is not fully ready (I may have broken dumb fuzzing with no instrumentation, and minimization is probably broken as well).

See ORIGINAL_README.md for, well, the original README.

External mutators, postprocessors, and encoders

TODO: move this to a file in docs?

Honggfuzz has three options which allow to call external programs for different purposes.

In all cases the external command is called with a filename referencing a file descriptor (/dev/fd/n) as first argument. This file should be overwritten to provide the output of the command. The file descriptor currently references a memory mapped file which does not exist on the disk.

--mutate_cmd <cmd>: cmd is called to provide the initial testcase to be mutated.

--pprocess_cmd <cmd>: the option name implies cmd should perform adjustments to the fuzzed file.

--ffmutate_cmd <cmd>: cmd is responsible for mutating the testcase. If this option is provided, honggfuzz will disable internal mutations.

--encode_cmd <cmd>: cmd should encode the testcase before it is provided to the target program. See below.

NOTE: The external programs are called in the exact order above

I find the invocation order and the name of the options to be confusing. mutate_cmd should be used not to mutate inputs, but to provide initial ones. pprocess_cmd is called before ffmutate_cmd, so it is not useful for many use cases, such as recomputing a checksum.

External encoders

External encoders are intended to be used primarily in conjunction with external mutators. This option allows to use mutators with inputs which are not directly readable by the target program (e.g. a serialized AST). The encoded is responsible to encode the input in some form which the target program reads. If this testcase increases coverage, honggfuzz will keep the pre-encoded testcase and not the encoded one, allowing it to be fed to the mutator again.

honggfuzz's People

Contributors

aaronc100 avatar ab1gale avatar anestisb avatar arnow117 avatar axtl avatar dobin avatar dyjakan avatar fcremo avatar hansmi avatar houjingyi233 avatar jduart avatar krytarowski avatar liyishuai avatar mrmaxmeier avatar n30m1nd avatar neuracr avatar ngg avatar paulgrandperrin avatar plusun avatar prashast avatar q3k avatar riusksk avatar robertswiecki avatar rtzoeller avatar thebabush avatar tl0gic avatar trofi avatar wifiadmin avatar zachriggle avatar zyv avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.