-
-
Notifications
You must be signed in to change notification settings - Fork 313
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #78 from AFLplusplus/dev
Dev
- Loading branch information
Showing
10 changed files
with
52 additions
and
47 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,14 +10,12 @@ LibAFL is written and maintained by Andrea Fioraldi <[email protected]> a | |
|
||
LibAFL gives you many of the benefits of an off-the-shelf fuzzer, while being completely customizable. | ||
Some highlight features currently include: | ||
- `multi platform`: LibAFL was confirmed to work on *Windows*, *MacOS*, *Linux*, and *Android* on *x86_64* and *aarch64*. | ||
- `portable`: `LibAFL` can be built in `no_std` mode. Inject LibAFL in obscure targets like embedded devices and hypervisors. | ||
- `fast`: We do everything we can at compile time, keeping runtime overhead minimal. Users reach 120k execs/sec in frida-mode on a phone (using all cores). | ||
- `scalable`: `Low Level Message Passing`, `LLMP` for short, allows LibAFL to scale almost linearly over cores, and via TCP to multiple machines soon! | ||
- `adaptable`: You can replace each part of LibAFL. For example, `BytesInput` is just one potential form input: | ||
feel free to add an AST-based input for structured fuzzing, and more. | ||
- `scalable`: `Low Level Message Passing`, `LLMP` for short, allows LibAFL to scale almost linearly over cores, and via TCP to multiple machines! | ||
- `fast`: We do everything we can at compile time, keeping runtime overhead minimal. | ||
- `multi platform`: LibAFL was confirmed to work on *Windows*, *MacOS*, *Linux*, and *Android* on *x86_64* and *aarch64*. `LibAFL` can be built in `no_std` mode to inject LibAFL into obscure targets like embedded devices and hypervisors. | ||
- `bring your own target`: We support binary-only modes, like Frida-Mode, as well as multiple compilation passes for sourced-based instrumentation. Of course it's easy to add custom instrumentation backends. | ||
- `usable`: We hope. But we'll let you be the judge. Enjoy LibAFL. | ||
|
||
## Overview | ||
|
||
|
@@ -26,26 +24,25 @@ It is fast, multi-platform, no_std compatible, and scales over cores and machine | |
|
||
It offers a main crate that provide building blocks for custom fuzzers, [libafl](./libafl), a library containing common code that can be used for targets instrumentation, [libafl_targets](./libafl_targets), and a library providing facilities to wrap compilers, [libafl_cc](./libafl_cc). | ||
|
||
LibAFL offers integrations with popular instrumemntation frameworks. At the moment, the supported backends are: | ||
LibAFL offers integrations with popular instrumentation frameworks. At the moment, the supported backends are: | ||
|
||
+ SanitizerCoverage, in [libafl_targets](./libafl_targets) | ||
+ Frida, in [libafl_frida](./libafl_frida), by s1341 <[email protected]> (Windows support is broken atm, it relies on [this upstream issue](https://github.com/meme/frida-rust/issues/9) to be fixed.) | ||
+ More to come (QEMU-mode, ...) | ||
|
||
LibAFL offers integrations with popular instrumemntation frameworks too. At the moment, the supported backends are: | ||
|
||
+ SanitizerCoverage, in [libafl_targets](./libafl_targets) | ||
+ Frida, in [libafl_frida](./libafl_frida), by s1341 <[email protected]> (Windows support will be added soon) | ||
|
||
## Getting started | ||
|
||
Clone the LibAFL repository with | ||
1. Install the Rust development language. We highly recommend *not* to use e.g. | ||
your Linux distribution package as this is likely outdated. So rather install | ||
Rust directly, instructions can be found [here](https://www.rust-lang.org/tools/install). | ||
|
||
2. Clone the LibAFL repository with | ||
|
||
``` | ||
git clone https://github.com/AFLplusplus/LibAFL | ||
``` | ||
|
||
To get the latest and greatest features, | ||
If you want to get the latest and greatest features, | ||
``` | ||
git checkout dev | ||
``` | ||
|
@@ -56,18 +53,19 @@ Build the library using | |
cargo build --release | ||
``` | ||
|
||
Build the API documentation with | ||
4. Build the API documentation with | ||
|
||
``` | ||
cargo doc | ||
``` | ||
|
||
Browse the LibAFL book (WIP!) with (requires [mdbook](https://github.com/rust-lang/mdBook)) | ||
5. Browse the LibAFL book (WIP!) with (requires [mdbook](https://github.com/rust-lang/mdBook)) | ||
|
||
``` | ||
cd docs && mdbook serve | ||
``` | ||
|
||
|
||
We collect all example fuzzers in [`./fuzzers`](./fuzzers/). | ||
Be sure to read their documentation (and source), this is *the natural way to get started!* | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters