diff --git a/docs/src/advanced_features/frida/frida.md b/docs/src/advanced_features/frida/frida.md index 66c0d8afe8..9b29f613c8 100644 --- a/docs/src/advanced_features/frida/frida.md +++ b/docs/src/advanced_features/frida/frida.md @@ -29,7 +29,7 @@ In LibAFL, We use struct `FridaInstrumentationHelper` to manage all the stuff re We have `CoverageRuntime` that has tracks the edge coverage, `AsanRuntime` for address sanitizer, `DrCovRuntime` that uses [__DrCov__](https://dynamorio.org/page_drcov.html) for coverage collection, and `CmpLogRuntime` for cmplog instrumentation. All these runtimes can be used by slotting them into `FridaInstrumentationHelper` -Combined with any `Runtime` you'd like to use, you can initialize the `FridaInstrumentationHelpe`r like this: +Combined with any `Runtime` you'd like to use, you can initialize the `FridaInstrumentationHelper` like this: ```rust let gum = Gum::obtain(); diff --git a/docs/src/advanced_features/no_std/no_std.md b/docs/src/advanced_features/no_std/no_std.md index 50a962c806..7db99f1b79 100644 --- a/docs/src/advanced_features/no_std/no_std.md +++ b/docs/src/advanced_features/no_std/no_std.md @@ -1,6 +1,6 @@ # Using LibAFL in `no_std` environments -It is possible to use LibAFL in `no_std` environments e.g. custom platforms like microcontrolles, kernels, hypervisors, and more. +It is possible to use LibAFL in `no_std` environments e.g. custom platforms like microcontrollers, kernels, hypervisors, and more. You can simply add LibAFL to your `Cargo.toml` file: diff --git a/docs/src/core_concepts/corpus.md b/docs/src/core_concepts/corpus.md index b6d30ede42..e8b71f9160 100644 --- a/docs/src/core_concepts/corpus.md +++ b/docs/src/core_concepts/corpus.md @@ -2,7 +2,7 @@ The Corpus is where testcases are stored. We define a Testcase as an Input and a set of related metadata like execution time for instance. -A Corpus can store testcases in diferent ways, for example on disk, or in memory, or implement a cache to speedup on disk storage. +A Corpus can store testcases in different ways, for example on disk, or in memory, or implement a cache to speedup on disk storage. Usually, a testcase is added to the Corpus when it is considered as interesting, but a Corpus is used also to store testcases that fulfill an objective (like crashing the tested program for instance). diff --git a/docs/src/core_concepts/executor.md b/docs/src/core_concepts/executor.md index 817edf1fd3..892efc5af5 100644 --- a/docs/src/core_concepts/executor.md +++ b/docs/src/core_concepts/executor.md @@ -50,7 +50,7 @@ But why do we want to do so? well, under some circumstances, you may find your h However, we have to take care of the shared memory, it's the child process that runs the harness code and writes the coverage to the map. -We have to make the map shared between the parent process and the child process, so we'll use shared memory again. You should compile your harness with `pointer_maps` (for `libafl_targes`) features enabled, this way, we can have a pointer; `EDGES_MAP_PTR` that can point to any coverage map. +We have to make the map shared between the parent process and the child process, so we'll use shared memory again. You should compile your harness with `pointer_maps` (for `libafl_targets`) features enabled, this way, we can have a pointer; `EDGES_MAP_PTR` that can point to any coverage map. On your fuzzer side, you can allocate a shared memory region and make the `EDGES_MAP_PTR` point to your shared memory. diff --git a/docs/src/core_concepts/feedback.md b/docs/src/core_concepts/feedback.md index a859a86a56..31678797ba 100644 --- a/docs/src/core_concepts/feedback.md +++ b/docs/src/core_concepts/feedback.md @@ -11,7 +11,7 @@ The concept of "interestingness" is abstract, but typically it is related to a n As an example, given an Observer that reports all the sizes of memory allocations, a maximization Feedback can be used to maximize these sizes to sport pathological inputs in terms of memory consumption. In terms of code, the library offers the [`Feedback`](https://docs.rs/libafl/0/libafl/feedbacks/trait.Feedback.html) and the [`FeedbackState`](https://docs.rs/libafl/0/libafl/feedbacks/trait.FeedbackState.html) traits. -The first is used to implement functors that, given the state of the obversers from the last execution, tells if the execution was interesting. The second is tied with `Feedback` and it is the state of the data that the feedback wants to persist in the fuzzers's state, for instance the cumulative map holding all the edges seen so far in the case of a feedback based on edge coverage. +The first is used to implement functors that, given the state of the observers from the last execution, tells if the execution was interesting. The second is tied with `Feedback` and it is the state of the data that the feedback wants to persist in the fuzzers's state, for instance the cumulative map holding all the edges seen so far in the case of a feedback based on edge coverage. Multiple Feedbacks can be combined into boolean formula, considering for instance an execution as interesting if it triggers new code paths or execute in less time compared to the average execution time using [`feedback_or`](https://docs.rs/libafl/0/libafl/macro.feedback_or.html). diff --git a/docs/src/design/architecture.md b/docs/src/design/architecture.md index a7678d6dac..554933e876 100644 --- a/docs/src/design/architecture.md +++ b/docs/src/design/architecture.md @@ -4,7 +4,7 @@ The LibAFL architecture is built around some entities to allow code reuse and lo Initially, we started thinking to implement LibAFL in an Object Oriented language, such C++. When we landed to Rust, we immediately changed our idea as we realized that, while Rust allows a sort of OOP pattern, we can build the library using a more sane approach like the one described in [this blogpost](https://kyren.github.io/2018/09/14/rustconf-talk.html) about game design in Rust. -The LibAFL code reuse meachanism is so based on components rather than sub-classes, but there are still some OOP patterns in the library. +The LibAFL code reuse mechanism is based on components rather than sub-classes, but there are still some OOP patterns in the library. Thinking about similar fuzzers, you can observe that most of the times the data structures that are modified are the ones related to testcases and the fuzzer global state. diff --git a/docs/src/getting_started/getting_started.md b/docs/src/getting_started/getting_started.md index 92299c63ef..48b8022b48 100644 --- a/docs/src/getting_started/getting_started.md +++ b/docs/src/getting_started/getting_started.md @@ -1,5 +1,5 @@ # Getting Started -To get startes with LibAFL, there are some initial steps to do. +To get started with LibAFL, there are some initial steps to do. In this chapter, we discuss how to download and build LibAFL, using Rust's `cargo` command. We also describe the structure of LibAFL's components, so-called crates, and the purpose of each individual crate.