AFLplusplus / AFLplusplus/LibAFL
Which Observer/Feedback Combination Should I Use for Coverage Guidance?
- Langage dominant
- Rust
- Étoiles
- 2.6k
- Forks
- 481
- Merge moyen
- 2 j 30 min
- PR mergées (30 j)
- 16
Description
I'm confused as to which combination of `MapObserver`s and `Feedback`s I should use. Is there a good overview of what the different options do/how to combine them? I have found some ways to accomplish *some* progress, but I feel like I might be missing something. Sorry if this is a stupid question.
I'm collecting coverage based on clang's `-fsanitize-coverage=trace-pc-guard`. The implementation of the two functions is a simple set or counter logic, redirected into some shared memory to get coverage back to the fuzzer:
```c
void __sanitizer_cov_trace_pc_guard_init(uint32_t *start, uint32_t *stop)
{
if (start == stop)
{
return;
};
guard_start = start;
guard_stop = stop;
memset(guard_start, 0, guard_stop - guard_start);
}
void __sanitizer_cov_trace_pc_guard(uint32_t *guard)
{
if (!cov_shmem_init) return; // ignore coverage before initialization
// *(guard - guard_start cov_shmem_ptr) = 1; // set
*(guard - guard_start cov_shmem_ptr) += 1; // counter
}
```
In the fuzzer, I have a `ShMem` object that contains the coverage data. How do I process it?
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
No source file or test is named; start by tracing the MapObserver, Feedback, and ShMem coverage-processing APIs in LibAFL and compare them with the clang trace-pc-guard data described here. Done means documenting what the available observer and feedback options do, how they combine, and how to process the shared-memory coverage.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- c, rust
- Domaine
- documentation, testing-qa
- Type d'issue
- Documentation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 25/100