* launcher now uses client_id instead of core_id
* adding overcommit to an example fuzzer
* Replace addr_of with &raw across the codebase (#2669)
* Replace addr_of with &raw across the codebase
* fix fixes
* more fix
* undo clang fmt?
* oops
* fix?
* allocator fix
* more fix
* more more
* more docs
* more fix
* mas mas mas
* hm
* more
* fix Frida
* needed
* more error
* qemu
* Introduce workspace (again) (#2673)
* Trying to redo workspace deps again after #2672
* unused
* clippy
* Replace addr_of with &raw across the codebase (#2669)
* Replace addr_of with &raw across the codebase
* fix fixes
* more fix
* undo clang fmt?
* oops
* fix?
* allocator fix
* more fix
* more more
* more docs
* more fix
* mas mas mas
* hm
* more
* fix Frida
* needed
* more error
* qemu
* Introduce workspace (again) (#2673)
* Trying to redo workspace deps again after #2672
* unused
* clippy
* fixing formatting issues
* cloning values to make borrow checker happy
* simplifying cfg constraints, removing excessive clippy allows
* printing clang version that is used to find inconsistencies between CI and local formatting
* some fixes according to the CI
* Specifying types
* improved logging for formatter
* more attempts at logging for the CI formatting
* fixing setting LLVM version in formatting in CI
* fixing cippy allows
* renaming launcher's ClientID to ClientDescription
* Lower capped RAND generators (#2671)
* Lower capped rand generators
* Updated all references to RAND generators
* Formatting updates
* New RAND bytes generator constructor
* Revert "Updated all references to RAND generators"
This reverts commit 9daad894b25ec3867daf93c4fe67c03abec1d8c6.
* Revert "Formatting updates"
This reverts commit ff2a61a366c48b3f313878f62409e51b1e1ed663.
* cargo nightly format
* Added must_use to with_min_size
* fix error '#' is not followed by a macro parameter (#2678)
* Use version.workspace (#2682)
* LibAFL_QEMU: Don't return a generic Address from Register reads (#2681)
* LibAFL_QEMU: Make ReadReg always return GuestReg type
* Don't return a generic address
* fix fuzzers
* fix mips
* Add DrCovReader to read DrCov files and DrCov dumper and merge utils (#2680)
* Add DrCov Reader
* Removed libafl_jumper deps
* Fix DrCovWriter, add dump_drcov_addrs
* Taplo
* Move frida from usize to u64
* DrCov usize=>u64
* Better error print
* More u64
* ?
* debug
* clippy
* clippy
* Add Merge option to DrCovReader
* Add drcov_merge tool
* Move folder around
* DrCov
* More assert
* fmt
* Move around
* Fix print
* Add option to read multiple files/full folders
* Fix build_all_fuzzers.sh for local runs (#2686)
* Add Intel PT tracing support (#2471)
* WIP: IntelPT qemu systemmode
* use perf-event-open-sys instead of bindgen
* intelPT Add enable and disable tracing, add test
* Use static_assertions crate
* Fix volatiles, finish test
* Add Intel PT availability check
* Use LibAFL errors in Result
* Improve filtering
* Add KVM pt_mode check
* move static_assertions use
* Check for perf_event_open support
* Add (empty) IntelPT module
* Add IntelPTModule POC
* partial ideas to implement intel pt
* forgot smth
* trace decoding draft
* add libipt decoder
* use cpuid instead of reading /proc/cpuinfo
* investigating nondeterministic behaviour
* intel_pt module add thread creation hook
* Fully identify deps versions
Cargo docs: Although it looks like a specific version of the crate, it actually specifies a range of versions and allows SemVer compatible updates
* Move mem image to module, output to file for debug
* fixup! Use static_assertions crate
* Exclude host kernel from traces
* Bump libipt-rs
* Callback to get memory as an alterantive to image
* WIP Add bootloader fuzzer example
* Split availability check: add availability_with_qemu
* Move IntelPT to observer
* Improve test docs
* Clippy happy now
* Taplo happy now
* Add IntelPTObserver boilerplate
* Hook instead of Observer
* Clippy & Taplo
* Add psb_freq setting
* Extremely bad and dirty babyfuzzer stealing
* Use thread local cell instead of mutex
* Try a trace diff based naive feedback
* fix perf aux buffer wrap handling
* Use f64 for feedback score
* Fix clippy for cargo test
* Add config format tests
* WIP intelpt babyfuzzer with fork
* Fix not wrapped tail offset in split buffer
* Baby PT with raw traces diff working
* Cache nr_filters
* Use Lazy_lock for perf_type
* Add baby_fuzzer_intel_pt
* restore baby fuzzer
* baby_fuzzer with block decoder
* instruction decoder instead of block
* Fix after upstream merge
* OwnedRefMut instead of Cow
* Read mem directly instead of going through files
* Fix cache lifetime and tail update
* clippy
* Taplo
* Compile caps only on linux
* clippy
* Fail compilation on unsupported OSes
* Add baby_fuzzer_intel_pt to CI
* Cleanup
* Move intel pt + linux check
* fix baby pt
* rollback forkexecutor
* Remove unused dep
* Cleanup
* Lints
* Compute an edge id instead of using only block ip
* Binary only intelPT POC
* put linux specific code behind target_os=linux
* Clippy & Taplo
* fix CI
* Disable relocation
* No unwrap in decode
* No expect in decode
* Better logging, smaller aux buffer
* add IntelPTBuilder
* some lints
* Add exclude_hv config
* Per CPU tracing and inheritance
* Parametrize buffer size
* Try not to break commandExecutor API pt.1
* Try not to break commandExecutor API pt.2
* Try not to break commandExecutor API pt.3
* fix baby PT
* Support on_crash & on_timeout callbacks for libafl_qemu modules (#2620)
* support (unsafe) on_crash / on_timeout callbacks for modules
* use libc types in bindgen
* Move common code to bolts
* Cleanup
* Revert changes to backtrace_baby_fuzzers/command_executor
* Move intel_pt in one file
* Use workspace deps
* add nr_addr_filter fallback
* Cleaning
* Improve decode
* Clippy
* Improve errors and docs
* Impl from<PtError> for libafl::Error
* Merge hooks
* Docs
* Clean command executor
* fix baby PT
* fix baby PT warnings
* decoder fills the map with no vec alloc
* WIP command executor intel PT
* filter_map() instead of filter().map()
* fix docs
* fix windows?
* Baby lints
* Small cleanings
* Use personality to disable ASLR at runtime
* Fix nix dep
* Use prc-maps in babyfuzzer
* working ET_DYN elf
* Cleanup Cargo.toml
* Clean command executor
* introduce PtraceCommandConfigurator
* Fix clippy & taplo
* input via stdin
* libipt as workspace dep
* Check kernel version
* support Arg input location
* Reorder stuff
* File input
* timeout support for PtraceExec
* Lints
* Move out method not needing self form IntelPT
* unimplemented
* Lints
* Move intel_pt_baby_fuzzer
* Move intel_pt_command_executor
* Document the need for smp_rmb
* Better comment
* Readme and Makefile.toml instead of build.rs
* Move out from libafl_bolts to libafl_intelpt
* Fix hooks
* (Almost) fix intel_pt command exec
* fix intel_pt command exec debug
* Fix baby_fuzzer
* &raw over addr_of!
* cfg(target_os = "linux")
* bolts Cargo.toml leftover
* minimum wage README.md
* extract join_split_trace from decode
* extract decode_block from decode
* add 1 to `previous_block_ip` to avoid that all the recursive basic blocks map to 0
* More generic hook
* fix windows
* Update CI, fmt
* No bitbybit
* Fix docker?
* Fix Apple silicon?
* Use old libipt from crates.io
---------
Co-authored-by: Romain Malmain <romain.malmain@pm.me>
Co-authored-by: Dominik Maier <domenukk@gmail.com>
* libafl-fuzz: introduce nyx_mode (#2503)
* add nyx_mode
* fix frida ci?
* damn clippy
* clippy
* LibAFL: Remove `tui_monitor` from default features (#2685)
* No Usermode default
* no tui
* gg
* try fix CI
* fmt
---------
Co-authored-by: Dominik Maier <dmnk@google.com>
* Actually make ConstMapObserver work, introduce `nonnull_raw_mut` macro (#2687)
* Actually make ConstMapObserver work
* fixes
* does that work?
* mas
* Feature: libafl-fuzzfuzzbench (#2689)
* fuzzbench
* clippy
* fmt
* fix unicorn CI?
* Move bitfields to bitbybit (#2688)
* move to bitbybit
* Restore bitbybit dependent code
* Clippy
* Fix NautilusContext::from_file for python files (#2690)
* Bump to 0.14.0 (#2692)
* Fix versions in libafl and libafl_intelpt for crates.io (#2693)
* Fix versions in libafl and libafl_intelpt for crates
* Add libafl_intelpt to publish
* StdMOptMutator:🆕 remove unused type parameter (#2695)
`I` is unused in `::new` and thus requires callers to explicitly specify
any type as it can't be determined by type inference.
Clippy's `extra_unused_type_parameters` should pick this up, but is
tuned a bit too conservative in order to avoid false positives AFAICT.
* Move test_harness from source directory to OUT_DIR (#2694)
* remove test_harness from source directory
* fmt
* Add package.metadata.docs.rs for libafl_intelpt (#2696)
* libafl-fuzz: fix cmplog running on inputs more than once (#2697)
* libafl-fuzz: fix cmplog running on inputs more than once
* fmt
* fix afl++ cmplog header
* update to latest afl stable commit
* Libafl workspace internal deps in workspace Cargo.toml (#2691)
* Add internal deps to workspace
* libafl: use workspace internal deps
* libafl_bolts: use workspace internal deps
* 0.14.0
* use workspace internal deps
* Fix tui monitor for example fuzzers (#2699)
* Fix tui monitor for example fuzzers
* New clippy lint
* fix
* Update pyo3-build-config requirement from 0.22.3 to 0.23.1 (#2701)
Updates the requirements on [pyo3-build-config](https://github.com/pyo3/pyo3) to permit the latest version.
- [Release notes](https://github.com/pyo3/pyo3/releases)
- [Changelog](https://github.com/PyO3/pyo3/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pyo3/pyo3/compare/v0.22.3...v0.23.1)
---
updated-dependencies:
- dependency-name: pyo3-build-config
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* bolts: fix build for tiers 3 platforms. (#2700)
cater to platforms knowingly support this feature instead.
* Pre init module hooks (#2704)
* differenciate pre qemu init and post qemu init hooks
* api breakage: Emulator::new_with_qemu is not public anymore.
* Fix edge module generators (#2702)
* fix generators
* fix metadata removal for ExecutionCountRestartHelper (#2705)
* Ignore pyo3 update (#2709)
* libafl-fuzz: feature-flag nyx mode (#2712)
* Bump ctor dependency to make nightly compile again (#2713)
* Batched timeout doc (#2716)
* timeout doc
* clp
* FMT
* More batched timeout doc (#2717)
* timeout doc
* clp
* FMT
* more
* fixing an overexited cast
* renaming variables
* removing unnecessary brackets
* fixing imports
* fixing imports
* renaming more variables
* even more variable renaming
* removing duplicate clap short options
* reverting mistaken variable renaming
* comparing the actual cores instead of an enumeration index
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Dominik Maier <domenukk@gmail.com>
Co-authored-by: Subhojeet Mukherjee, PhD <57270300+CowBoy4mH3LL@users.noreply.github.com>
Co-authored-by: jejuisland87654 <jejuisland87654@gmail.com>
Co-authored-by: Marco C. <46560192+Marcondiro@users.noreply.github.com>
Co-authored-by: Dongjia "toka" Zhang <tokazerkje@outlook.com>
Co-authored-by: Romain Malmain <romain.malmain@pm.me>
Co-authored-by: Aarnav <aarnav@srlabs.de>
Co-authored-by: Dominik Maier <dmnk@google.com>
Co-authored-by: Andrea Fioraldi <andreafioraldi@gmail.com>
Co-authored-by: Mrmaxmeier <3913977+Mrmaxmeier@users.noreply.github.com>
Co-authored-by: Sharad Khanna <sharad@mineo333.dev>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: David CARLIER <devnexen@gmail.com>
Co-authored-by: Henry Chu <henrytech@outlook.com>
`I` is unused in `::new` and thus requires callers to explicitly specify
any type as it can't be determined by type inference.
Clippy's `extra_unused_type_parameters` should pick this up, but is
tuned a bit too conservative in order to avoid false positives AFAICT.
* WIP: IntelPT qemu systemmode
* use perf-event-open-sys instead of bindgen
* intelPT Add enable and disable tracing, add test
* Use static_assertions crate
* Fix volatiles, finish test
* Add Intel PT availability check
* Use LibAFL errors in Result
* Improve filtering
* Add KVM pt_mode check
* move static_assertions use
* Check for perf_event_open support
* Add (empty) IntelPT module
* Add IntelPTModule POC
* partial ideas to implement intel pt
* forgot smth
* trace decoding draft
* add libipt decoder
* use cpuid instead of reading /proc/cpuinfo
* investigating nondeterministic behaviour
* intel_pt module add thread creation hook
* Fully identify deps versions
Cargo docs: Although it looks like a specific version of the crate, it actually specifies a range of versions and allows SemVer compatible updates
* Move mem image to module, output to file for debug
* fixup! Use static_assertions crate
* Exclude host kernel from traces
* Bump libipt-rs
* Callback to get memory as an alterantive to image
* WIP Add bootloader fuzzer example
* Split availability check: add availability_with_qemu
* Move IntelPT to observer
* Improve test docs
* Clippy happy now
* Taplo happy now
* Add IntelPTObserver boilerplate
* Hook instead of Observer
* Clippy & Taplo
* Add psb_freq setting
* Extremely bad and dirty babyfuzzer stealing
* Use thread local cell instead of mutex
* Try a trace diff based naive feedback
* fix perf aux buffer wrap handling
* Use f64 for feedback score
* Fix clippy for cargo test
* Add config format tests
* WIP intelpt babyfuzzer with fork
* Fix not wrapped tail offset in split buffer
* Baby PT with raw traces diff working
* Cache nr_filters
* Use Lazy_lock for perf_type
* Add baby_fuzzer_intel_pt
* restore baby fuzzer
* baby_fuzzer with block decoder
* instruction decoder instead of block
* Fix after upstream merge
* OwnedRefMut instead of Cow
* Read mem directly instead of going through files
* Fix cache lifetime and tail update
* clippy
* Taplo
* Compile caps only on linux
* clippy
* Fail compilation on unsupported OSes
* Add baby_fuzzer_intel_pt to CI
* Cleanup
* Move intel pt + linux check
* fix baby pt
* rollback forkexecutor
* Remove unused dep
* Cleanup
* Lints
* Compute an edge id instead of using only block ip
* Binary only intelPT POC
* put linux specific code behind target_os=linux
* Clippy & Taplo
* fix CI
* Disable relocation
* No unwrap in decode
* No expect in decode
* Better logging, smaller aux buffer
* add IntelPTBuilder
* some lints
* Add exclude_hv config
* Per CPU tracing and inheritance
* Parametrize buffer size
* Try not to break commandExecutor API pt.1
* Try not to break commandExecutor API pt.2
* Try not to break commandExecutor API pt.3
* fix baby PT
* Support on_crash & on_timeout callbacks for libafl_qemu modules (#2620)
* support (unsafe) on_crash / on_timeout callbacks for modules
* use libc types in bindgen
* Move common code to bolts
* Cleanup
* Revert changes to backtrace_baby_fuzzers/command_executor
* Move intel_pt in one file
* Use workspace deps
* add nr_addr_filter fallback
* Cleaning
* Improve decode
* Clippy
* Improve errors and docs
* Impl from<PtError> for libafl::Error
* Merge hooks
* Docs
* Clean command executor
* fix baby PT
* fix baby PT warnings
* decoder fills the map with no vec alloc
* WIP command executor intel PT
* filter_map() instead of filter().map()
* fix docs
* fix windows?
* Baby lints
* Small cleanings
* Use personality to disable ASLR at runtime
* Fix nix dep
* Use prc-maps in babyfuzzer
* working ET_DYN elf
* Cleanup Cargo.toml
* Clean command executor
* introduce PtraceCommandConfigurator
* Fix clippy & taplo
* input via stdin
* libipt as workspace dep
* Check kernel version
* support Arg input location
* Reorder stuff
* File input
* timeout support for PtraceExec
* Lints
* Move out method not needing self form IntelPT
* unimplemented
* Lints
* Move intel_pt_baby_fuzzer
* Move intel_pt_command_executor
* Document the need for smp_rmb
* Better comment
* Readme and Makefile.toml instead of build.rs
* Move out from libafl_bolts to libafl_intelpt
* Fix hooks
* (Almost) fix intel_pt command exec
* fix intel_pt command exec debug
* Fix baby_fuzzer
* &raw over addr_of!
* cfg(target_os = "linux")
* bolts Cargo.toml leftover
* minimum wage README.md
* extract join_split_trace from decode
* extract decode_block from decode
* add 1 to `previous_block_ip` to avoid that all the recursive basic blocks map to 0
* More generic hook
* fix windows
* Update CI, fmt
* No bitbybit
* Fix docker?
* Fix Apple silicon?
* Use old libipt from crates.io
---------
Co-authored-by: Romain Malmain <romain.malmain@pm.me>
Co-authored-by: Dominik Maier <domenukk@gmail.com>
* introducing Launcher::overcommit
* removing unnecessary cfg restrictions and clippy allows
* improving warning for wrong clang-format version
* installing black in the format CI
* Enforcing python formatting in CI
* extending formatting using black on all python files
* printing diff on black failure
* preferring python's black over system black
* moving to LLVM 19 for formatting
* Replace addr_of with &raw across the codebase
* fix fixes
* more fix
* undo clang fmt?
* oops
* fix?
* allocator fix
* more fix
* more more
* more docs
* more fix
* mas mas mas
* hm
* more
* fix Frida
* needed
* more error
* qemu
* clean clippy warnings from fuzzers/binary_only/*
* handle unused Results in fuzzers/binary_only/*
* format fuzzers/binary_only/qemu_cmin
* use unchecked memory write in qemu fuzzer examples
* create file_null in fuzzbench_fork_qemu
* compile-time edge module compilation trick
* clippy
* possible since rust 1.79
* split edge module in submodules
* Update frida to 0.14.0 (#2596)
* update frida crate to the latest version
* adapt libafl_frida to the latest version of frida
* tracers and generators private modules
* do not use star export.
* same for drcov
* forgot a file...
* first draft of generic-based edge module for ConstantLengthMapObserver.
* integration of OwnedSizedSlice.
replaced OwnedSlice in ConstMapObserver by the new OwnedSizedSlice.
* fix serde stuff
* no std
* import
* fixed qemu_cmin with new constant map abstraction.
* fix const map
* fix clippy from another pr...
* fix non-null usage
* fix ci?
* new feature stuff
* fixes
* minor fixes
* fmt
* non null
* im stupid
* fmt
* fix fuzzer
* fix fuzzers
* sized slice
* fuzzer fixes
* ptr::NonNull -> NonNull
* shorter trait length
* fmt
* add python grammar loader for Nautilus
* fmt
* fmt toml
* add python to macos CI deps
* install python
* fmt
* ci
* clippy
* fix workflow
* fmt
* fix baby nautilus
* fix nautilus sync
* fmt
* fmt
* clippy
* typo
* fix miri
* remove pyo3 from workspace to packages which need it and make it optional
* go back to AsRef<Path> for nautilus grammar loading
* replace hardcoded python flags for macos build
* typo
* taplo fmt
* revert formatting of libafl_qemu_arch
* ci
* typo
* remove expects in NautilusContext::from_file and make them Results
* remove not(miri) clause in test
* try and fix python build fir ios and android
* again
* android
* tmate
* fix android build
* document load_python_grammar
* log if python or json when loading nautilus grammar
* make nautilus optional
* add nautilus as feature to forkserver_simple_nautilus
* centralize clippy definition
* fmt
* add update bindings script
* add a checked and unchecked version of memory read to qemu stuff
also, a lot of clippy thing
* update binding position
* rm old script, new one is a bit better
* update doc
* macos clippy
* adapt fuzzers
* windows clippy
* fix fuzzer
* windows clippy
* remove old allowed clippy
* remove some allowed clippy
* use default features for serde_json in gramatron
* better error handler for failed rw to memory
* change fuzzbench_qemu
* real test
* fix qemu crash hook
* update bindings
* fix fork executor, reduce trait bound overhead
* make EdgeModule depend on observer to get ptrs.
* do not make EdgeCoverageModule::new public
* map observer as builder call
* adapt examples with new edge coverage module builder.
* TMP: everyone is a variable length map observer
* reuse profile path script
* fix absolute paths
* remove some dependencies to make pipeline faster
* compile-time builder initialization check
---------
Co-authored-by: Romain Malmain <romain.malmain@pm.me>
* versioning unification: use x.y.z format everywhere
* do not compile low-level logs (< info level) by default in fuzzers
* update dependencies to the latest versions
* add members to workspace.
* use workspace for common dependencies
* add vscode native support
---------
Co-authored-by: Toka <tokazerkje@outlook.com>
* Move fuzzers around some more
* back to baby
* this was missing..
* shuffeling shuffeling
* shuffeling
* md
* cleanup
* oops
* Move foldername to underscore
* more doc