1232 Commits

Author SHA1 Message Date
Andrea Fioraldi
da4ee4deea readme fields in Cargo.toml for crates.io 2021-05-06 20:36:17 +02:00
Dominik Maier
cf23695773 Fix misaligned ptr accesses and other clippy issues (#94)
* more docs

* more docs:

* more docu

* more docu

* finished docs

* cleaned up markup

* must_use tags added

* more docs

* swapped if/else, as per clippy

* more docu, less clippy

* more fixes

* removed misaligned ptrs

* fixed testcases

* fixed arith mutators
2021-05-06 20:10:45 +02:00
Dominik Maier
7cd99543bb Clippy fixes (#92)
* more docs

* more docs:

* more docu

* more docu

* finished docs

* cleaned up markup

* must_use tags added

* more docs

* swapped if/else, as per clippy

* more docu, less clippy

* more fixes
2021-05-06 20:10:45 +02:00
Dominik Maier
ed9169119e Better docu (#90)
* more docs

* more docs:

* more docu

* more docu

* finished docs

* cleaned up markup

* must_use tags added

* more docs

* more docu, less clippy

* more fixes
2021-05-06 20:10:45 +02:00
Andrea Fioraldi
bfa3fffc18 Observers lifetime (#89)
* introduce MatchName and alow lifetimes in observers

* adapt fuzzers to observers with lifetime

* introduce type_eq when on nightly

* fix no_std

* fmt
2021-05-06 20:10:45 +02:00
Dominik Maier
08a32c3856 more docs 2021-05-06 20:10:45 +02:00
Dominik Maier
9b4fb23ec2 clippy fixes 2021-05-06 20:10:45 +02:00
Toka
46e010ba0b Reachability example (#65)
* add reachability observer/feedback

* add fuzzer exmaple

* fmt

* remove reachabilityobserver, use stdmapobserver instead

* update diff.patch

* update README

* fix the clippy warning

* Squashed commit of the following:

commit f20524ebd77011481e86b420c925e8504bd11308
Author: Andrea Fioraldi <andreafioraldi@gmail.com>
Date:   Tue May 4 16:00:39 2021 +0200

    Composing feedback (#85)

    * composing feedbacks as logic operations and bump to 0.2

    * adapt fuzzers and libafl_frida

    * fix windows build

commit e06efaa03bc96ef71740d7376c7381572bf11c6c
Author: Andrea Fioraldi <andreafioraldi@gmail.com>
Date:   Tue May 4 13:54:46 2021 +0200

    Observers refactor (#84)

    * new observer structure with HasExecHooks

    * adapt libafl_frida to new observers

    * docstrings

commit 17c6fcd31cb746c099654be2b7a168bd04d46381
Merge: 08a2d43 a78a4b7
Author: Andrea Fioraldi <andreafioraldi@gmail.com>
Date:   Mon May 3 11:16:49 2021 +0200

    Merge branch 'main' into dev

commit 08a2d43790797d8864565fec99e7043289a46283
Author: David CARLIER <devnexen@gmail.com>
Date:   Mon May 3 10:15:28 2021 +0100

    Build warning fix proposal, mostly about reference to packed fields. (#79)

commit 88fe8fa532ac34cbc10782f5f71264f620385dda
Merge: d5d46ad d2e7719
Author: Andrea Fioraldi <andreafioraldi@gmail.com>
Date:   Mon May 3 11:05:42 2021 +0200

    Merge pull request #80 from marcograss/book-typos

    fixed some minor typos in the book

commit a78a4b73fa798c1ed7a3d053369cca435e57aa07
Author: s1341 <s1341@users.noreply.github.com>
Date:   Mon May 3 10:34:15 2021 +0300

    frida-asan: Un-inline report funclet to reduce code bloat (#81)

    * frida-asan: Outline report funclet to reduce code bloat

    * fmt

commit d2e7719a8bea3a993394c187e2183d3e91f02c75
Author: Marco Grassi <marco.gra@gmail.com>
Date:   Sun May 2 21:58:33 2021 +0800

    fixed some minor typos in the book

commit d5d46ad7e440fd4a2925352ed1ccb9ced5d9463d
Author: Dominik Maier <domenukk@gmail.com>
Date:   Sat May 1 23:09:10 2021 +0200

    make clippy less pedantic

commit 52d25e979e23589587c885803641058dc36aa998
Author: Dominik Maier <domenukk@gmail.com>
Date:   Sat May 1 22:23:59 2021 +0200

    fixing clippy::match-same-arms

commit cd66f880dea830d1e38e89fd1bf3c20fd89c9d70
Author: Dominik Maier <domenukk@gmail.com>
Date:   Sat May 1 14:02:07 2021 +0200

    fixed clippy run in workflow

commit ddcf086acde2b703c36e4ec3976588313fc3d591
Author: Dominik Maier <domenukk@gmail.com>
Date:   Sat May 1 13:53:29 2021 +0200

    Update README.md

commit c715f1fe6e42942e53bd13ea6a23214620f6c829
Author: Dominik Maier <domenukk@gmail.com>
Date:   Sat May 1 13:48:38 2021 +0200

    using clippy.sh

commit 9374b26b1d2d44c6042fdd653a8d960ce698592c
Author: Dominik Maier <domenukk@gmail.com>
Date:   Sat May 1 13:47:44 2021 +0200

    some clippy warning ignored

commit b9e75c0c98fdfb1e70778e6f3612a94b71dcd21a
Author: Dominik Maier <domenukk@gmail.com>
Date:   Sat May 1 13:24:02 2021 +0200

    Tcp Broker to Broker Communication (#66)

    * initial b2b implementation

    * no_std and clippy fixes

    * b2b testcase added

    * more correct testcases

    * fixed b2b

    * typo

    * fixed unused warning

* feedbacks now return a boolean value

* use feedback_or, and modify Cargo.toml

* fix diff between dev and this branch

* fmt

Co-authored-by: Dominik Maier <domenukk@gmail.com>
2021-05-06 20:10:45 +02:00
s1341
2e192fd6cc Call append_metadata on crash (#88)
* Call append_metadata on crash

* Formatting
2021-05-06 20:10:45 +02:00
Toka
921ab9e289 add append/discard_metadata for and/or/not feedback (#86)
* add append/discard_metadata for and/or/not feedback

* fix
2021-05-06 20:10:45 +02:00
Dominik Maier
2ad5e71e9a fixed clippy warnings 2021-05-06 20:10:45 +02:00
Andrea Fioraldi
9f3b0984c3 Composing feedback (#85)
* composing feedbacks as logic operations and bump to 0.2

* adapt fuzzers and libafl_frida

* fix windows build
2021-05-06 20:10:45 +02:00
Andrea Fioraldi
9e9d95f93d Observers refactor (#84)
* new observer structure with HasExecHooks

* adapt libafl_frida to new observers

* docstrings
2021-05-06 20:10:45 +02:00
David CARLIER
116a51270c Build warning fix proposal, mostly about reference to packed fields. (#79) 2021-05-06 20:10:45 +02:00
Dominik Maier
8717d07369 some clippy warning ignored 2021-05-06 20:10:45 +02:00
Dominik Maier
b175500971 Tcp Broker to Broker Communication (#66)
* initial b2b implementation

* no_std and clippy fixes

* b2b testcase added

* more correct testcases

* fixed b2b

* typo

* fixed unused warning
2021-05-06 20:10:45 +02:00
Andrea Fioraldi
696d8be759 fixes for cargo publish 2021-04-30 15:40:15 +02:00
Andrea Fioraldi
1bf5e61358 fixes for cargo publish 2021-04-30 15:37:25 +02:00
s1341
3e9e1492c8 Get rid of unneeded spin dependency 2021-04-30 15:43:31 +03:00
Dominik Maier
f3b4305dac Refactored compression 2021-04-29 13:16:51 +02:00
Toka
9d748a887c
Add Llmp Compression Feature (#60), closes #46
* add compression

* modify event/llmp.rs

* rename to LLMP_TAG_COMPRESS

* remove compression code from bolts/llmp.rs

* add compress.rs

* handle compress & decompress in GzipCompress struct, compress if the size is large enough

* add code for benchmark

* remove LLMP_TAG_COMPRESS, use a flag instead

* cargo fmt

* rm test.sh

* passes the test

* comment benchmarks code out

* add recv_buf_with_flag()

* add the llmp_compress feature

* add send_buf, do not compile compression code if it's not used

* fix warning

* merged dev

* add error handling code

* doc for compress.rs

* remove tag from decompress

* rename every flag to flags

* fix some clippy.sh errors

* simplify recv_buf

* delete benchmark printf code

* cargo fmt

* fix doc

Co-authored-by: Dominik Maier <domenukk@gmail.com>
2021-04-29 12:36:12 +02:00
Dominik Maier
f9e4e7cbf0 initial strucutre layed out 2021-04-29 12:26:44 +02:00
Dominik Maier
10c1ce9d66 added bunny 2021-04-29 12:07:12 +02:00
Dominik Maier
dadc486452 added restarts to libfuzzer example, docu cleanup 2021-04-29 10:55:31 +02:00
Dominik Maier
454932ff91 added note about restarts 2021-04-29 09:23:42 +02:00
Dominik Maier
5ab480ac3e cargo clippy 2021-04-28 14:32:59 +02:00
s1341
5c856cccc8
WIP: Implement ASAN instrumentation using frida (#45)
* frida_asan: Implemented initial asan runtime library

* frida_asan: Switch to hashbrown

* Implemented GOT-based hooking to isolate the hooking of the memory functions. Implemented initial ASAN instrumentation

* WIP: Shadowing all used memory. Currently tracking pages using a BTreeSet. Slow AF!

* Add SigTrap to unix_signals and inprocess

* Working frida-asan, almost no speed degradation.

Currently the shadow check is reversed, so it checks only that the shadow is not 0.
We need to implement sub-8-byte checking.

* Format

* Cleanup and formatting

* Sub-qword and 16-byte checks implemented; Fixed unaligned access to QWORD

* Pass the ucontext_t to signal handlers. Initial regdump on crash

* Fix typo

* Make the context argument a mut ref

* Add missing files; Implement initial reporting

* Refactor out gothook; Move safety checkers to dynasm

* Get rid of const assembly blobs no longer needed

* Move to a handler function instead of using SIGTRAP.

This bloats the transformed code, but doesn't seem to have a major impact on performance.

Also, implemented pretty backtraces and assembly output.

* Formatting

* Get rid of all the pinning crap I wasted my day on, We don't need it

* windows fixes

* ashmem

* ashmem_service: server side ready

* ashmem_service: client side ready. Ready for integration

* ashmem_service: changes to UnixShMem to make it 'threadable'

* ashmem_service: format

* ashmem_service: Undo changes to UnixShMem, make the thread own the AshmemService instead; Fix protocol bug

* ashmem_service: working ashmem service. Fix merge issues

* use the newly released capston e 0.8.0; Fix a nasty bug where the afl_area an pc_pointer were reversed. Changed Vectors to Boxed [u8]

* Implement type detection for reporting; Implement double-free/unallocated free checking

* fmt

* Cleanup code a little

* frida-asan: This is an omnibus commit. Should probably have been a bunch of small commits, but I don't have the time/patience.

 - Implemented DrCov support in order to debug a failing harness. This is actually
   generic and should be moved out of libafl_frida.
 - Implemented LIBAFL_FRIDA_OPTIONS env var to pass options to the frida helper,
   to dynamically enable/disable asan and drcov.
 - Implemented memory reuse - after each test case the used pages are recycled and
   can be reused in the next test case.
 - Implemented and tested vectorized instruction instrumentation.
 - Implemented not instrumenting atomic load/store instructions. The cost of
   trying to emulate their behaviour is too high at the moment.
 - Implemented probing of shadow bit to determine the best match for the current
   system.
 - Implemented shadow memory pre-mapping where it is available. We probe for this
   too.
 - Implemented ability to specify a list of modules to instrument on the command
   line. This allows fine-grained control of which modules are instrumented for
   coverage/asan/drcov.
 - Implemented unpoisoning of the Input target_bytes in a pre_exec hook.
 - Added support for zero-sized allocations. We return 0x10 bytes at the moment.
 - Added all known operator new/delete functions to hooks.
 - Added workaround for frida_gum_allocate_near bug.
 - Cleaned up reporting, added reporting for different error types.

* frida-asan: Implement leak detection

* Fix merge issues

* Rebased on dev to get llmp/shmem changes; Clippy fixes

* Add FridaOptions struct

* Add the Custom ExitKind; Get rid of Clone/PartialEq on ExitKind

* Make it possible to recover from an ASAN error

* Add SIGTRAP to crashing signals

* Add back (conditional) crashing on Asan errors.

* Fix too-large immediates in add instruction

* Implement RcShMemProvider, finally fix the EOP bug

* Clear ASAN_ERRORS before each test

* Fix warnings; Fix review issues

* Cleanup prints

* Add timeout to Frida mode

* Make allocation-/free-site backtraces optional

* CPU Context and backtrace (on android/aarch64 atm) on crash

* Make stalker conditional

* Add metadata to solution, and write metadata files

* Add addresses to backtrace; Add reporting of ASAN stack errors; Fix ASAN reporting bugs

* Remove meaningless backtrace on crash

* Fix the x0, x1 load in report

* use upstream color-backtrace

* use __builtin_thread_pointer instead of custom asm

* Don't unwrap ASAN_ERRORS if it isn't some

* Fix bug where we weren't clearing the drcov basicblocks after each run

* Fix bug where we were dropping an ashmem too soon

* Fix OwnedPtr instead of CPtr

* Fix gettls for all archs

* cfg guards for target arch, disabling Frida-ASAN/-DrCov if not on aarch64

* Cargo fmt

* Only panic in options when asan/drcov are turned on; Merge fixes

* gothook only supported on unix

* Fix gettls on msvc

* Another attempt to fix MSVC gettls

* Fix backtrace use

* nostd fixes; warning fixes

* formatting

* Migrate FridaEdgeCoverageHelper into libafl_frida, and rename to FridaInstrumentationHelper

* Clean up uses

* Move DrCovWriter to libafl_targets

* Refactor DrCovWriter to get a vec of DrCovBasicBlocks; formatting

* Update to newer backtrace which supports android with gimli

* windows fixes

Co-authored-by: Dominik Maier <domenukk@gmail.com>
Co-authored-by: andreafioraldi <andreafioraldi@gmail.com>
2021-04-28 10:12:49 +02:00
Dominik Maier
b8b01baf59 added warning for out of memory error aborts (addresses #32) 2021-04-26 19:07:22 +02:00
Dominik Maier
77867306f2 fixed code style 2021-04-26 19:01:24 +02:00
Andrea Fioraldi
32d4c27c83 cargo toml metadata 2021-04-26 14:28:48 +02:00
Andrea Fioraldi
3105972a65 IntoOwned for ownedref 2021-04-26 10:42:56 +02:00
Andrea Fioraldi
1829fcf191 refactor ownedref 2021-04-26 10:17:42 +02:00
Andrea Fioraldi
7b54d725f3 reexport ctor in libafl 2021-04-25 12:48:02 +02:00
Andrea Fioraldi
964ce4f6eb const LEN for tuples 2021-04-24 10:47:37 +02:00
Andrea Fioraldi
ad5d45b3e2 fix 2021-04-23 17:34:11 +02:00
Andrea Fioraldi
15b7f0523c separate impl_serdeany macro for std and not 2021-04-23 17:32:25 +02:00
s1341
fc8056214b
Add selectable metadata format, including postcard and JSON (#59)
* Add selectable metadata format, including postcard and JSON

* Formatting

* nostd fix
2021-04-23 17:25:00 +02:00
Dominik Maier
c2efea2f93 cargo fmt 2021-04-23 05:46:58 +02:00
s1341
91509c2346 Fix the impl_serdeany macro for use outside the libafl crate 2021-04-22 17:58:26 +03:00
Andrea Fioraldi
832c6ad1c6 save meta in ondisk corpus 2021-04-22 16:11:32 +02:00
Andrea Fioraldi
3124d03665 bytesinput to_file raw 2021-04-22 15:55:13 +02:00
Andrea Fioraldi
7b772fedc5 metadata to solutions 2021-04-22 15:44:41 +02:00
Andrea Fioraldi
2f7bb8d532 baby fuzzer 2021-04-21 14:51:51 +02:00
s1341
655d30519b
Convert ShMem into a state-full ShMemProvider and otherwise refactor shmem/llmp (#54)
* shmeme/llmp refactor to convert ShMem into a stateful ShMemProvider
factory.

At the moment we use parking_lot::ReentrantMutex. That may not be
necessary.

* fix merge issue

* formatting

* Fix fuzzer examples for new ShMemProvider

* Fix clippy warnings

* Fix build and clippy for x86_64

* Resolve review comments

* Remove ReentrantMutex and RefCell - they are not needed

* Hopefully fix win32 build

* Fix tests, windows build

* Rename ShMemProvider to ShMem

* Revert "Rename ShMemProvider to ShMem"

This reverts commit eca07c8d7bb3d5e829fecf3f7213c763470a41e9.

* Rename ShMemMapping to ShMem; Test fixes

* Add missing trait to scope

* Fix from_int

* Fix try_into

* Move to alloc::sync::Arc and spin::Mutex to support nostd

* Fix tests

* nostd fixes; Make new() a part of the ShMemProvider trait

* Fix errant ?

* Fix windows

* Fix missing trait

* nostd remove dbg!

* Add Default and Clone to ShMemProvider

* Formatting

* Fix windows

* Get rid of ArcMutex in favor of RefCell

* Rc RefCell

* moved to refs

* SHP->SP

* Use alloc::rc::Rc instead of std::rc::Rc

* Format

* Add setup_restarting_mgr_std which selects the right ShMemProvider; changed fuzzers to use it

* Get rid of unnecessary clone

* Fix clippy error on windows

* Fix nostd

* Fix formatting

* Make StdShmemProvider include ServedShMemProvider

* Get rid of lifetime specifiers now that we are using Rc

* Get rid of unneccesary spin

* Rename ShMemProvider::Mapping to ShMemProvider::Mem

* Formatting

* fix Windows

* Rename DefaultUnixShmem* to CommonUnixShmem*

Co-authored-by: Dominik Maier <domenukk@gmail.com>
2021-04-16 11:26:06 +02:00
Dominik Maier
357b807c33 clippy warning muted 2021-04-11 04:07:58 +02:00
Dominik Maier
9bc22d0331
Llmp Fixes (#51)
* fixed llmp
2021-04-11 02:21:09 +02:00
Dominik Maier
fb0a23e767 cleaned up potential panic 2021-04-10 19:57:30 +02:00
Dominik Maier
70be959b82 debug 2021-04-10 17:03:33 +02:00
s1341
f4d5c045b4
Ashmem server for Android (#50)
* ashmem, initial commit

* ashmem

* ashmem_service: server side ready

* ashmem_service: client side ready. Ready for integration

* ashmem_service: changes to UnixShMem to make it 'threadable'

* ashmem_service: format

* ashmem_service: Undo changes to UnixShMem, make the thread own the AshmemService instead; Fix protocol bug

* ashmem_service: actually fix the protocol issue; clippy warnings

* no-std fixes

* fmt

Co-authored-by: Dominik Maier <domenukk@gmail.com>
2021-04-10 10:33:11 +02:00
Dominik Maier
77cbb45b7c docs 2021-04-08 10:34:31 +02:00