* Fix fuzzers in docs, add them to CI (fixes#3185)
* ignore macos for now
* Ooops wrong one
* fix?
* clp
---------
Co-authored-by: Dongjia "toka" Zhang <tokazerkje@outlook.com>
* no more shellscript
* metadatas
* clp
* clippo
* this language breaks everyday
* stop
* 2404?
* purge rust
* everything is broken
* test
* ci dead
* aa
* aa
* remove broken shit
* remove broken shit
* broken shit
* a
* lol
* aaaaa
* AI fix
* aa
* aaa
* yes?
* a
* FK
* tmate
* wtf who tf did this shit????
* aa
* useless printlnt
* for system too
* unset first
* Fixes to main
* Add librasan
* Party like it's 2024
* Fix snapshot module to work with guest asan
* Fix guest_asan module
* Fixes to runner
* Fix linking issues using a REL
* Fix qemu_launcher
* Change modify_mapping to a method
* Fix gasan_test
* Remove debug from Justfile
* Optimize release build of librasan
* Set ulimit for qasan and gasan tests
* Tidy up symbol renaming
* Add missing symbols for PPC
* Change to support rustix 1.0.0
* Canonicalize the CUSTOM_ASAN_PATH
* Review changes
* Restructure backends
* release_max_level_info
* More review changes
* Clippy fixes
* Changes to reduce the burden on the CI
* Fix macos clippy
---------
Co-authored-by: Your Name <you@example.com>
* make fuzzer great again
* crash handlers
* hello from windows
* fk
* gee
* m
* temporary fix
* f
* mm
* CICI
* fixer
* Fix Dockerfile
* lol
* clp
* Fuck you clippy
* This lint makes no sense, 0
* ??
* a
* fix
* this lint makes 0 sense
* mm
* clp
* a
* a
* clp
* clippy
* clp
* mm
* FMT
* p
---------
Co-authored-by: Your Name <you@example.com>
Co-authored-by: toka <toka@tokas-MacBook-Air.local>
* Move all unnecessary std uses to core,alloc
* More
* more fix
* more
* more
* Remove libafl-fuzz grimoire
* more
* more
* more cleanup
* remove bins
* fix
* more fix
* Decode with callback
* WIP restore intelpt module
* Fix build_target if target_dir doesn't exist
* WIP itelpt qemu/kvm example: bootloader
* qemu config refactoring
* Fix intel_pt_command_executor target dir
* * QEMU error refactoring*
* back to one QEMU init function
* other small things
* update test
* Bump libipt
* waitpid_filtered to ignore SIGWINCH
* Fix warnings unused manifest key: *.version
* Add export_raw feature to libafl_intelpt
* derive Debug for IntelPTHook
* Clippy
* Light refactor of EmulatorModules
* qemu is now a parameter to EmulatorModule callbacks and most function hooks.
* EmulatorModules is initialized before QEMU is initialized.
* Update target program ELF offsets
* fmt
* * asan fixed size accesses working with generics
* continue to propagate qemu argument as hook first parameter
* use pre_syscall* and post_syscall* everywhere
* fix some clippy stuff
* fmt
* Add comment to KVM pt_mode check
* refactor
* Add intel_pt_export_raw feature in libafl
* fix fuzzers
* * refactor asan and asanguest modules to avoid custom init of QEMU and use the module interface instead.
* adapt qemu_launcher example to fully work with emulator, since qemu must now be initialized by emulator.
* fmt
* clippy
* fix qemu_coverage
* fmt
* forgot qemu args in launcher
* map_error instead of unwrap
* use correct args
* Update to new libafl_qemu
* adapt api
* borrow checker friendly join_split_trace
and copy trace before deocde to prevent decoding failures
* testing stuff
* Set ip_filters (also) with builder
* Move trace to file
* Store a pt_builder in module
enable the setting of filters and other pt settings
* baby_bootloader target
* Best bootloader ever
* new builder?
* use closure for qemu config from emulator builder.
* better format
* clippy + fmt
* Fix build target
Create target directory if doesn't exist
* Remove filter on speculatively exec blocks
since also committed blocks can have this flag
* Add current ip_filters getter
* Fix possibile infinite loop in trace decode
* HW breakpoint + snapshot
* add snapshot and exit at first objective
* prefer raw pointers to slice_from_raw_parts_mut
since the latter is highly unsafe and allows more potentially dangerous reordering
* Add cpu option to QEMU config
* Add cpu option and minor improvements
* fix cargo run causing recompile
* no default devices
* windows clippy fix
* Exclude intel_pt feature from CI as all systemmode feats
* Add qemu_intel_pt_bootloader to CI
* Fix NopPageFilter
* Fix qemu_config
* Restore HW breakpoints
* Lints
* return Result for hw bp set/remove
* mark join_split_trace as unsafe
* Put the qcow2 in a tmpfs ramdisk
10x exec/sec
* Post merge fixes
* Try out libipt 0.3 alpha
* Try out libipt 0.3 alpha also in hook
* Clippy
* New libipt
* Post merge fixes
* Bump libipt
* Drive cache None
* Post merge fixes
* Use SectionInfo from libipt
* No slice::from_raw_parts_mut, just use raw pointer
* Cache the decoder builder
* Update qemu-bridge
* Add qemu -append param
* Move linux specific code to a mod, less #[cfg]s
* Add qemu initrd config
* Add qemu monitor tcp
* Add not enough ip filters message
* Fix wrong must_use
* Prevent possible infinite loop in block decoding in debug mode
* Clippy
* fix CI?
* Revert, keep libipt 0.3 and hw bp
---------
Co-authored-by: Romain Malmain <romain.malmain@pm.me>
Co-authored-by: Marco Cavenati <marco@lenovo300e>
* feat: unicorn support
* feat: update
* fix: remove unused files
* fix: clean
* fix: remove undeeded parameters
* fix: typo
* moved to justfile
* use log::debug!
* fix cargo and created justfile
* feat: add CI
* add runs on
* fix: CI
* fix: CI
* fix: don't use fork executor
* not needed anymore
* fix: CI
* fix: CI
* remove extra space
* drop grown address
* this clippy lint literally makes 0 sense!
* i hate you rust
* mm
* don't use drop! add comments for why alignment is not necessary
* testcase name logic
* implement locking
* implement logic for removing testcase
* minor modifications
* minor modifications to remove_testcase()
* extract generate_name() from trait Input (broken)
* Revert "extract generate_name() from trait Input (broken)"
This reverts commit 9e217be2810a8c33970846cdd380f542975cc05b.
* fix ci errors
* remove CorpusId from generate_name() calls
* toml formatting
* write from file instead of fs
* fmt and clippy
* fix windows clippy
* handle renaming of testcase
* fix failing cmplog test
* overwrite lockfile on remove testcase
* format
* bring back corpus id in generate_name
* missed windows executors hook
* fix failing tests
* some more errors
---------
Co-authored-by: Dongjia "toka" Zhang <tokazerkje@outlook.com>
* fix drcov path parsing
* refactoring of drcov tool
* add the possibility to sort addresses in drcov tools
* more aggressive clippy. it now catches more warnings as errors than before
* reduce the number of unfixable warnings displayed.
* update pyo3 to latest version
* add python bindings to workspace
* make pyo3 stuff dependent of workspace again
* adapt implementation for the newest version of pyo3
* 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>
* 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
* 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