109343 Commits

Author SHA1 Message Date
fed8214cc6 Remove comments 2024-11-17 15:02:27 +01:00
d7dccf9c44 Add output reading 2024-08-26 16:07:46 +02:00
bd9237e8af Add snapshots and register write for code benchmarking 2024-08-12 15:36:31 +02:00
ccc7d889c4 hack main.c to measure instructions 2024-06-18 17:13:31 +02:00
9a0a6ebc35 add libafl_qemu_read_user_sp_unchecked 2024-06-14 13:54:57 +02:00
eb21c70c3b read shift for timers, bump interrupt count 2024-06-06 14:41:38 +02:00
8e14d45910 fix jump instrumentation 2024-03-25 08:02:50 +01:00
0cda19cbcf fix jmp instrumentation 2024-01-16 15:53:38 +01:00
349d96795b simple standalone injection test 2024-01-15 10:05:35 +01:00
19f046ef6a fix build 2024-01-04 12:14:15 +01:00
cb70307812 fix jmp instrumentation 2023-12-22 13:02:52 +01:00
b2feee86a4 fix build 2023-12-22 13:02:52 +01:00
dacbbbd525 add standalone debugging config 2023-12-22 13:02:52 +01:00
e144fb9fdf re-introduce native breakpoints 2023-12-22 13:02:50 +01:00
a67a70d7f8 fuzz multiple interrupts 2023-12-22 13:01:43 +01:00
a946b67ff0 add interrupt injection 2023-12-22 13:01:43 +01:00
6b7718f671 add jmp instrumentation 2023-12-22 13:01:42 +01:00
Andrea Fioraldi
32206d23c3
Merge pull request #37 from AFLplusplus/fixcrash
New crash handling for usermode
2023-12-01 10:31:03 +01:00
Andrea Fioraldi
b85a54516d New crash handling for usermode 2023-11-30 21:50:21 +01:00
Andrea Fioraldi
deb4d6cd80
Merge pull request #36 from rmalmain/paging_filter
Paging ID for filtering
2023-11-30 20:42:24 +01:00
Romain Malmain
033f2439c7 added libafl guard. 2023-11-30 18:15:13 +01:00
Romain Malmain
c386a5a9b9 fix: check if get_paging_id is implemented. 2023-11-30 18:09:17 +01:00
Romain Malmain
9928452ab6 Added paging id boilerplate code + x86_64 implementation. 2023-11-30 17:27:34 +01:00
Andrea Fioraldi
c105904e66 Fix exit code for thumb mode in aarch64 fullsystem 2023-11-29 10:12:50 +01:00
Andrea Fioraldi
98a0d92463 Merge branch 'main' of github.com:AFLplusplus/qemu-libafl-bridge into main 2023-11-28 15:03:25 +01:00
Andrea Fioraldi
7eb4c9dc54 Fix edge coverage hooks 2023-11-28 15:03:08 +01:00
Andrea Fioraldi
9f6de425b8
Merge pull request #34 from rmalmain/syx_snapshot_fix
Fix of syx_snapshot_dirty_list_add_hostaddr_range
2023-11-24 18:00:53 +01:00
Romain Malmain
a9ea61c540 fix: check enabled snapshot before logging also in range version of dirty_list. 2023-11-24 17:54:18 +01:00
Andrea Fioraldi
b946fe4618 Jit edge coverage hook 2023-11-24 13:43:26 +01:00
Andrea Fioraldi
34b0d11943
Merge pull request #33 from AFLplusplus/self_hooks
New hooks
2023-11-23 21:34:54 +01:00
Andrea Fioraldi
6a63c7f792 fix generic hook 2023-11-23 15:45:37 +01:00
Andrea Fioraldi
3ae4ddb979 names 2023-11-22 18:06:46 +01:00
Andrea Fioraldi
60db9a9edb Fix backdoor hook 2023-11-22 17:49:54 +01:00
Andrea Fioraldi
e9c746c6ee Removable hooks 2023-11-22 14:51:15 +01:00
Andrea Fioraldi
e61d1f93b0 Refactor hooks and multiple newthread/syscalls hooks 2023-11-22 14:25:03 +01:00
Andrea Fioraldi
8db5524416 Remove unused and duplicate code 2023-11-21 15:28:07 +01:00
Andrea Fioraldi
4226e1656c Fix exit.c 2023-11-21 14:08:03 +01:00
Andrea Fioraldi
4605ea753b Fix usermode builds 2023-11-21 14:01:16 +01:00
Andrea Fioraldi
5d31b09a11
Merge pull request #31 from rmalmain/sync_exit
Fix: added exit.c in build system.
2023-11-21 13:46:35 +01:00
Andrea Fioraldi
e01e07db09
Merge pull request #32 from rmalmain/main
Add an option to not build tests
2023-11-21 13:46:21 +01:00
Romain Malmain
a26f16f2ef Add an option to not build tests
Seems to have no impact and saves the compilation of 1000 files.
2023-11-21 12:06:32 +01:00
Romain Malmain
b595b3969a Fix: added exit.c in build system. 2023-11-21 11:45:06 +01:00
Andrea Fioraldi
2d54a4e637
Merge pull request #29 from rmalmain/syx_snapshot_rework
Syx Snapshot rework
2023-11-21 11:41:38 +01:00
Andrea Fioraldi
4fc66b672e
Merge pull request #30 from rmalmain/sync_exit
Sync Exit
2023-11-21 11:41:27 +01:00
Romain Malmain
466658fc52 Sync Exit:
- Now the VM can trigger a synchronous backdoor stopping the VM and returning to LibAFL.
- LibAFL will exit with a corresponding exit reason to perform actions accordingly (checkout the LibAFL patch for more details).
- The breakpoint mechanism has been merged with this system (not tested yet, may not work out of the box).
- The main difference with the backdoor is that it will always stop the VM.
2023-11-21 10:48:27 +01:00
Romain Malmain
aa67fcae61 Syx Snapshot rework
- Most of the tables are now GHashtable instances
- Snapshot correctness checking
- Simplified API
- More callbacks to catch more dirty pages
2023-11-21 10:39:42 +01:00
Andrea Fioraldi
b0c8272465 Fix translation but not execution of edge TB 2023-11-17 14:48:04 +01:00
Stefan Hajnoczi
34a5cb6d84 accel/tcg: Forward probe size on to notdirty_write
accel/tcg: Remove CF_LAST_IO
 target/sparc: Fix RETURN
 -----BEGIN PGP SIGNATURE-----
 
 iQFRBAABCgA7FiEEekgeeIaLTbaoWgXAZN846K9+IV8FAmVTyVodHHJpY2hhcmQu
 aGVuZGVyc29uQGxpbmFyby5vcmcACgkQZN846K9+IV91UAf/Sf304RJutaNX+85s
 2HP31heScIsrrziDvPhZJG+gD3/Xeq9aDRCNqw7C/MhIHadarJcghTVqPuTMZ8Eg
 j3FqvSr6e+6A6VGNdg2d5CKasIYhRMHqCy94g/0fVWtnV9n/2cJPS6zIWGlxl2dT
 tJ9AK9IbkLo9b7jifUztTsllhzU8rMvxYznxr6dynJ/3V10gtcAIsc41BeHoLzob
 e8wZtuwNUtgiHBGhfEnpspK+oJaPKo2Qy1zPdBiuLadUhl066JdXeOKN9XgCuRyR
 024dOqVwZ+UBQhcmUdJuOjAnsnJJUx29TKtmOOoTugrq+mE1xybSBiiih6EELQlj
 AYq6jg==
 =D4Wj
 -----END PGP SIGNATURE-----

Merge tag 'pull-tcg-20231114' of https://gitlab.com/rth7680/qemu into staging

accel/tcg: Forward probe size on to notdirty_write
accel/tcg: Remove CF_LAST_IO
target/sparc: Fix RETURN

# -----BEGIN PGP SIGNATURE-----
#
# iQFRBAABCgA7FiEEekgeeIaLTbaoWgXAZN846K9+IV8FAmVTyVodHHJpY2hhcmQu
# aGVuZGVyc29uQGxpbmFyby5vcmcACgkQZN846K9+IV91UAf/Sf304RJutaNX+85s
# 2HP31heScIsrrziDvPhZJG+gD3/Xeq9aDRCNqw7C/MhIHadarJcghTVqPuTMZ8Eg
# j3FqvSr6e+6A6VGNdg2d5CKasIYhRMHqCy94g/0fVWtnV9n/2cJPS6zIWGlxl2dT
# tJ9AK9IbkLo9b7jifUztTsllhzU8rMvxYznxr6dynJ/3V10gtcAIsc41BeHoLzob
# e8wZtuwNUtgiHBGhfEnpspK+oJaPKo2Qy1zPdBiuLadUhl066JdXeOKN9XgCuRyR
# 024dOqVwZ+UBQhcmUdJuOjAnsnJJUx29TKtmOOoTugrq+mE1xybSBiiih6EELQlj
# AYq6jg==
# =D4Wj
# -----END PGP SIGNATURE-----
# gpg: Signature made Tue 14 Nov 2023 14:24:10 EST
# gpg:                using RSA key 7A481E78868B4DB6A85A05C064DF38E8AF7E215F
# gpg:                issuer "richard.henderson@linaro.org"
# gpg: Good signature from "Richard Henderson <richard.henderson@linaro.org>" [full]
# Primary key fingerprint: 7A48 1E78 868B 4DB6 A85A  05C0 64DF 38E8 AF7E 215F

* tag 'pull-tcg-20231114' of https://gitlab.com/rth7680/qemu:
  target/sparc: Fix RETURN
  accel/tcg: Forward probe size on to notdirty_write
  accel/tcg: Remove CF_LAST_IO

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2023-11-15 08:05:25 -05:00
Richard Henderson
0dfae4f948 target/sparc: Fix RETURN
Perform window restore before pc update. Required in order
to recognize any window underflow trap with the current pc.

Fixes: 86b82fe021f4 ("target/sparc: Move JMPL, RETT, RETURN to decodetree")
Reported-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2023-11-14 10:40:54 -08:00
Jessica Clarke
e2faabee78 accel/tcg: Forward probe size on to notdirty_write
Without this, we just dirty a single byte, and so if the caller writes
more than one byte to the host memory then we won't have invalidated any
translation blocks that start after the first byte and overlap those
writes. In particular, AArch64's DC ZVA implementation uses probe_access
(via probe_write), and so we don't invalidate the entire block, only the
TB overlapping the first byte (and, in the unusual case an unaligned VA
is given to the instruction, we also probe that specific address in
order to get the right VA reported on an exception, so will invalidate a
TB overlapping that address too). Since our IC IVAU implementation is a
no-op for system emulation that relies on the softmmu already having
detected self-modifying code via this mechanism, this means we have
observably wrong behaviour when jumping to code that has been DC ZVA'ed.
In practice this is an unusual thing for software to do, as in reality
the OS will DC ZVA the page and the application will go and write actual
instructions to it that aren't UDF #0, but you can write a test that
clearly shows the faulty behaviour.

For functions other than probe_access it's not clear what size to use
when 0 is passed in. Arguably a size of 0 shouldn't dirty at all, since
if you want to actually write then you should pass in a real size, but I
have conservatively kept the implementation as dirtying the first byte
in that case so as to avoid breaking any assumptions about that
behaviour.

Signed-off-by: Jessica Clarke <jrtc27@jrtc27.com>
Message-Id: <20231104031232.3246614-1-jrtc27@jrtc27.com>
[rth: Move the dirtysize computation next to notdirty_write.]
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2023-11-14 10:40:54 -08:00