mirror of
https://github.com/AFLplusplus/AFLplusplus.git
synced 2025-06-24 22:53:24 +00:00
Compare commits
342 Commits
Author | SHA1 | Date | |
---|---|---|---|
108fb0b29a | |||
8a7705aedb | |||
37505928bc | |||
ae9cdb34e4 | |||
f290bdd83b | |||
a576f7aef4 | |||
ab532e7c15 | |||
b2d118f821 | |||
a062e84ba6 | |||
520daf5e0f | |||
bb1d4a2491 | |||
ef706ad668 | |||
5b655e0d59 | |||
981a90d788 | |||
5482204327 | |||
1250586156 | |||
638273e4f8 | |||
6c04d4cc80 | |||
5759b93b2d | |||
0e7afb75dd | |||
01e0d4aa1c | |||
477a517628 | |||
b0cb2f7e83 | |||
5d544ce21a | |||
4e0a794431 | |||
21f874c165 | |||
3fc9e680f3 | |||
858e0bfd05 | |||
d02036adfd | |||
1fa285079f | |||
39be50e2a8 | |||
74f8ca6b46 | |||
dd9a04c901 | |||
d2aef74ad7 | |||
e4f3ebcebb | |||
81b43cefdf | |||
bb523b4648 | |||
c9e0f01b43 | |||
0547c49b2b | |||
faedb3fb29 | |||
8af74bcaee | |||
770e868d04 | |||
c96aa400e4 | |||
d17e0b32f4 | |||
a2a4171039 | |||
d6cefdc193 | |||
aabbdac86d | |||
5681267bbc | |||
07352a932b | |||
91a1459820 | |||
444ddb2d09 | |||
f2cbcdf3ff | |||
d9ffe7427f | |||
d34bed5dbf | |||
75a3af8a23 | |||
4d8df780ed | |||
43b8812c5c | |||
1179bfeab7 | |||
b05e3f7ac0 | |||
885f949ac7 | |||
a071430983 | |||
a289a3e454 | |||
afb9b8a961 | |||
26045831a2 | |||
df9f2c4205 | |||
8b79d9b4d5 | |||
8c1f25b757 | |||
16993bba8f | |||
3fd2e161db | |||
61e27c6b54 | |||
a6efdfdb15 | |||
6f8696c314 | |||
cfbf1209b5 | |||
f7d19390fb | |||
ac0ad56348 | |||
8ad36af95d | |||
f3d2127fd8 | |||
053334f35d | |||
6ed3f4cfac | |||
8338844284 | |||
7e67dc9d69 | |||
2230f88887 | |||
e241280fcc | |||
7eafe22d6b | |||
7210a1c359 | |||
b22eef4736 | |||
f7fab79155 | |||
b8e55064c6 | |||
728401ee69 | |||
d52013832a | |||
cf458a7d25 | |||
4cdf7a1e3e | |||
85c5b5218c | |||
eaa6a1754a | |||
389c88c0f3 | |||
b50b2e822f | |||
bfb841d013 | |||
51f6229612 | |||
92ac2c228c | |||
c885a892ff | |||
943fa7eb73 | |||
9db9cc80e3 | |||
af18f2c732 | |||
48bff70cdd | |||
a380615811 | |||
c622e4c565 | |||
17bfb3a408 | |||
8eaa590c59 | |||
d97c7e4258 | |||
d09950f4bb | |||
63100d2012 | |||
1f7f1eff43 | |||
d9462657a8 | |||
bec74ae23c | |||
9a9dbaff72 | |||
3bfd194d46 | |||
b9db6b1254 | |||
49a1d81191 | |||
f3ec554803 | |||
05bea40ea4 | |||
efae28f27c | |||
6b73dee7da | |||
d6b6278cb4 | |||
fd76d6a433 | |||
1c582b6aee | |||
5f7c3a1ee0 | |||
bd90283d0f | |||
c762b6a305 | |||
14bca44311 | |||
762fe0aad8 | |||
a6b7da8808 | |||
5eb4c6eacd | |||
abbdf1c3ac | |||
6dc054be0f | |||
54f0148157 | |||
0b6e74eeb0 | |||
dee7699381 | |||
748d417f86 | |||
b28b58801d | |||
98eed79f57 | |||
3b835b7c8b | |||
7d2122e059 | |||
4f4ce24690 | |||
19c387a824 | |||
6c7c4b821a | |||
a384d7f91f | |||
9f023d482b | |||
a8185f8ff2 | |||
0688c779ec | |||
5f6c76e192 | |||
2f1043bbdf | |||
167fb7748d | |||
f8ca83ff4a | |||
91938d2dfc | |||
8e8acd0a04 | |||
0091afc761 | |||
bcaa3cb591 | |||
9b0a35d843 | |||
b679e155ca | |||
87b33740ea | |||
9307ef4b7c | |||
cd6b89eb74 | |||
d83edc6175 | |||
3bae404733 | |||
a809c3c50c | |||
1c4ff36496 | |||
dad56abc85 | |||
2c40fc4ae8 | |||
11a622c63d | |||
1604351368 | |||
8f5c510be1 | |||
88ca5c7563 | |||
78848f8637 | |||
5020e6b275 | |||
e4b408932d | |||
1fe27eb9cd | |||
d6e7740ad6 | |||
c60431247e | |||
51f2cef682 | |||
2b53b4af5c | |||
4a7e35b29c | |||
ad2af7caec | |||
82c875ef8a | |||
1128a1772c | |||
549e5dd926 | |||
d95cef8273 | |||
6ae779bc73 | |||
19d0c6a4c5 | |||
b397bdc3d9 | |||
e2026f7b71 | |||
959b753589 | |||
f41d121f07 | |||
213298fe59 | |||
71f9999f29 | |||
80f74934dd | |||
53c26d086b | |||
8cf6a13eb7 | |||
c2c8e780a5 | |||
fd219177c7 | |||
ca82b65d6c | |||
fdb4ed2131 | |||
4d8d8633ff | |||
26f29fd485 | |||
f838509d49 | |||
030799638d | |||
8823f22a9c | |||
1cd9258768 | |||
9607d1db06 | |||
f596a297c4 | |||
3721c65a0b | |||
fa44d8f79f | |||
55d696fbae | |||
b4bd33961c | |||
7f3b0a9503 | |||
d9cadb2e7d | |||
18d9234dfe | |||
5618062cb5 | |||
2c376f8994 | |||
a0aaae9b17 | |||
5b55cf84c1 | |||
2ce5113530 | |||
247d8539fe | |||
738a6c0731 | |||
c2a0a24594 | |||
08a6fd7c29 | |||
1fd1f0d8ce | |||
4f3aa90a5f | |||
fcdfe9e990 | |||
0a28bce016 | |||
79640acbf1 | |||
4a9264444f | |||
5d78a6f592 | |||
8f31086a7f | |||
641c551ba0 | |||
a61e1ffe4d | |||
1429c9724e | |||
0265b39c13 | |||
82635dc656 | |||
f75c430365 | |||
d0782a7f03 | |||
168ade3b70 | |||
f87ba7ed63 | |||
57c9dfda1f | |||
bd1648e707 | |||
705cdf45fc | |||
5f813bbb86 | |||
4113b6ccad | |||
7f17a94349 | |||
2b8e528a3b | |||
127c345161 | |||
1132b08d7d | |||
534b3eba14 | |||
2a34e84507 | |||
a46d27fad5 | |||
b547a6ab0d | |||
e10e0e01e9 | |||
a560e42a4d | |||
20dcb40c53 | |||
d30272a64e | |||
e71de2f2b8 | |||
877b2bcab6 | |||
6e5ca0c78c | |||
f37c4c8662 | |||
da33510855 | |||
db96b04aba | |||
0966957631 | |||
497ff5ff79 | |||
dcbfc88e7d | |||
d518426335 | |||
03bae6c4fe | |||
3426189c06 | |||
317a9df668 | |||
819ad95f03 | |||
641d02ab72 | |||
3e1d794107 | |||
15fc47a62c | |||
7b1238b0f4 | |||
32d5ccb92d | |||
aaa1d113e7 | |||
cac713ec30 | |||
1e3890ea7f | |||
edd352612d | |||
2106738d6b | |||
0616f368c8 | |||
c2c27349c3 | |||
b28b63f873 | |||
9926f07082 | |||
90f83c13d0 | |||
224e884ba1 | |||
93362c6e67 | |||
ec4ed66b1e | |||
64b15a00f2 | |||
936b6dcb5d | |||
2366c00235 | |||
51ab51ca27 | |||
68aacc4269 | |||
7b29f2cd24 | |||
420e36dcd3 | |||
a0242db421 | |||
450e00446d | |||
4231d33bc0 | |||
a360344247 | |||
9a0931858a | |||
fc1e352965 | |||
091d66fa92 | |||
3ad8e9856c | |||
f1a616406e | |||
61b6f4ed9e | |||
ed97dbacef | |||
25eba95bba | |||
6ec70fc084 | |||
31e2c6c2b4 | |||
c28779adc5 | |||
c7c6ad1a94 | |||
14e25340fb | |||
9b2c4a2a5a | |||
4deb45f3b3 | |||
8de7f6131d | |||
9a55bbdb44 | |||
ab148aeed8 | |||
d1ec5dc089 | |||
400c5e92cb | |||
fcb5eda5d0 | |||
a74561b0e7 | |||
e313180e4d | |||
1fc0731604 | |||
53b70ef104 | |||
41a452d4e8 | |||
3ab18d2861 | |||
2bff92c603 | |||
32ffa2664c | |||
fcd2125678 | |||
635da39bd1 | |||
71e2aa5d2b | |||
21203c2ea6 | |||
9eed60d105 | |||
8f17c81691 | |||
74baebd93e | |||
506f6b1349 | |||
145748a7e0 | |||
7893347e13 | |||
5218c0b187 |
@ -24,7 +24,7 @@ import importlib.metadata
|
|||||||
|
|
||||||
# string_re = re.compile('(\\"(\\\\.|[^"\\\\])*\\")') # TODO: for future use
|
# string_re = re.compile('(\\"(\\\\.|[^"\\\\])*\\")') # TODO: for future use
|
||||||
|
|
||||||
CURRENT_LLVM = os.getenv('LLVM_VERSION', 15)
|
CURRENT_LLVM = os.getenv('LLVM_VERSION', 17)
|
||||||
CLANG_FORMAT_BIN = os.getenv("CLANG_FORMAT_BIN", "")
|
CLANG_FORMAT_BIN = os.getenv("CLANG_FORMAT_BIN", "")
|
||||||
|
|
||||||
|
|
||||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -10,6 +10,7 @@
|
|||||||
.test
|
.test
|
||||||
.test2
|
.test2
|
||||||
.vscode
|
.vscode
|
||||||
|
afl-addseeds.8
|
||||||
afl-analyze
|
afl-analyze
|
||||||
afl-analyze.8
|
afl-analyze.8
|
||||||
afl-as
|
afl-as
|
||||||
|
@ -42,7 +42,7 @@ RUN apt-get update && \
|
|||||||
python3 python3-dev python3-pip python-is-python3 \
|
python3 python3-dev python3-pip python-is-python3 \
|
||||||
libtool libtool-bin libglib2.0-dev \
|
libtool libtool-bin libglib2.0-dev \
|
||||||
apt-transport-https gnupg dialog \
|
apt-transport-https gnupg dialog \
|
||||||
gnuplot-nox libpixman-1-dev \
|
gnuplot-nox libpixman-1-dev bc \
|
||||||
gcc-${GCC_VERSION} g++-${GCC_VERSION} gcc-${GCC_VERSION}-plugin-dev gdb lcov \
|
gcc-${GCC_VERSION} g++-${GCC_VERSION} gcc-${GCC_VERSION}-plugin-dev gdb lcov \
|
||||||
clang-${LLVM_VERSION} clang-tools-${LLVM_VERSION} libc++1-${LLVM_VERSION} \
|
clang-${LLVM_VERSION} clang-tools-${LLVM_VERSION} libc++1-${LLVM_VERSION} \
|
||||||
libc++-${LLVM_VERSION}-dev libc++abi1-${LLVM_VERSION} libc++abi-${LLVM_VERSION}-dev \
|
libc++-${LLVM_VERSION}-dev libc++abi1-${LLVM_VERSION} libc++abi-${LLVM_VERSION}-dev \
|
||||||
|
23
GNUmakefile
23
GNUmakefile
@ -32,7 +32,7 @@ VERSION = $(shell grep '^$(HASH)define VERSION ' ../config.h | cut -d '"' -f
|
|||||||
# PROGS intentionally omit afl-as, which gets installed elsewhere.
|
# PROGS intentionally omit afl-as, which gets installed elsewhere.
|
||||||
|
|
||||||
PROGS = afl-fuzz afl-showmap afl-tmin afl-gotcpu afl-analyze
|
PROGS = afl-fuzz afl-showmap afl-tmin afl-gotcpu afl-analyze
|
||||||
SH_PROGS = afl-plot afl-cmin afl-cmin.bash afl-whatsup afl-system-config afl-persistent-config afl-cc
|
SH_PROGS = afl-plot afl-cmin afl-cmin.bash afl-whatsup afl-addseeds afl-system-config afl-persistent-config afl-cc
|
||||||
MANPAGES=$(foreach p, $(PROGS) $(SH_PROGS), $(p).8) afl-as.8
|
MANPAGES=$(foreach p, $(PROGS) $(SH_PROGS), $(p).8) afl-as.8
|
||||||
ASAN_OPTIONS=detect_leaks=0
|
ASAN_OPTIONS=detect_leaks=0
|
||||||
|
|
||||||
@ -45,6 +45,10 @@ ifdef NO_SPLICING
|
|||||||
override CFLAGS_OPT += -DNO_SPLICING
|
override CFLAGS_OPT += -DNO_SPLICING
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifdef NO_UTF
|
||||||
|
override CFLAGS_OPT += -DFANCY_BOXES_NO_UTF
|
||||||
|
endif
|
||||||
|
|
||||||
ifdef ASAN_BUILD
|
ifdef ASAN_BUILD
|
||||||
$(info Compiling ASAN version of binaries)
|
$(info Compiling ASAN version of binaries)
|
||||||
override CFLAGS += $(ASAN_CFLAGS)
|
override CFLAGS += $(ASAN_CFLAGS)
|
||||||
@ -91,9 +95,9 @@ ifneq "$(SYS)" "Darwin"
|
|||||||
#ifeq "$(HAVE_MARCHNATIVE)" "1"
|
#ifeq "$(HAVE_MARCHNATIVE)" "1"
|
||||||
# SPECIAL_PERFORMANCE += -march=native
|
# SPECIAL_PERFORMANCE += -march=native
|
||||||
#endif
|
#endif
|
||||||
ifndef DEBUG
|
#ifndef DEBUG
|
||||||
CFLAGS_OPT += -D_FORTIFY_SOURCE=1
|
# CFLAGS_OPT += -D_FORTIFY_SOURCE=1
|
||||||
endif
|
#endif
|
||||||
else
|
else
|
||||||
# On some odd MacOS system configurations, the Xcode sdk path is not set correctly
|
# On some odd MacOS system configurations, the Xcode sdk path is not set correctly
|
||||||
SDK_LD = -L$(shell xcrun --show-sdk-path)/usr/lib
|
SDK_LD = -L$(shell xcrun --show-sdk-path)/usr/lib
|
||||||
@ -255,17 +259,17 @@ endif
|
|||||||
|
|
||||||
ifneq "$(findstring FreeBSD, $(SYS))" ""
|
ifneq "$(findstring FreeBSD, $(SYS))" ""
|
||||||
override CFLAGS += -pthread
|
override CFLAGS += -pthread
|
||||||
override LDFLAGS += -lpthread
|
override LDFLAGS += -lpthread -lm
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq "$(findstring NetBSD, $(SYS))" ""
|
ifneq "$(findstring NetBSD, $(SYS))" ""
|
||||||
override CFLAGS += -pthread
|
override CFLAGS += -pthread
|
||||||
override LDFLAGS += -lpthread
|
override LDFLAGS += -lpthread -lm
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq "$(findstring OpenBSD, $(SYS))" ""
|
ifneq "$(findstring OpenBSD, $(SYS))" ""
|
||||||
override CFLAGS += -pthread
|
override CFLAGS += -pthread
|
||||||
override LDFLAGS += -lpthread
|
override LDFLAGS += -lpthread -lm
|
||||||
endif
|
endif
|
||||||
|
|
||||||
COMM_HDR = include/alloc-inl.h include/config.h include/debug.h include/types.h
|
COMM_HDR = include/alloc-inl.h include/config.h include/debug.h include/types.h
|
||||||
@ -318,7 +322,7 @@ all: test_x86 test_shm test_python ready $(PROGS) afl-as llvm gcc_plugin test_bu
|
|||||||
@echo Build Summary:
|
@echo Build Summary:
|
||||||
@test -e afl-fuzz && echo "[+] afl-fuzz and supporting tools successfully built" || echo "[-] afl-fuzz could not be built, please set CC to a working compiler"
|
@test -e afl-fuzz && echo "[+] afl-fuzz and supporting tools successfully built" || echo "[-] afl-fuzz could not be built, please set CC to a working compiler"
|
||||||
@test -e afl-llvm-pass.so && echo "[+] LLVM basic mode successfully built" || echo "[-] LLVM mode could not be built, please install at least llvm-11 and clang-11 or newer, see docs/INSTALL.md"
|
@test -e afl-llvm-pass.so && echo "[+] LLVM basic mode successfully built" || echo "[-] LLVM mode could not be built, please install at least llvm-11 and clang-11 or newer, see docs/INSTALL.md"
|
||||||
@test -e SanitizerCoveragePCGUARD.so && echo "[+] LLVM mode successfully built" || echo "[-] LLVM mode could not be built, please install at least llvm-11 and clang-11 or newer, see docs/INSTALL.md"
|
@test -e SanitizerCoveragePCGUARD.so && echo "[+] LLVM mode successfully built" || echo "[-] LLVM mode could not be built, please install at least llvm-13 and clang-13 or newer, see docs/INSTALL.md"
|
||||||
@test -e SanitizerCoverageLTO.so && echo "[+] LLVM LTO mode successfully built" || echo "[-] LLVM LTO mode could not be built, it is optional, if you want it, please install LLVM and LLD 11+. More information at instrumentation/README.lto.md on how to build it"
|
@test -e SanitizerCoverageLTO.so && echo "[+] LLVM LTO mode successfully built" || echo "[-] LLVM LTO mode could not be built, it is optional, if you want it, please install LLVM and LLD 11+. More information at instrumentation/README.lto.md on how to build it"
|
||||||
ifneq "$(SYS)" "Darwin"
|
ifneq "$(SYS)" "Darwin"
|
||||||
@test -e afl-gcc-pass.so && echo "[+] gcc_mode successfully built" || echo "[-] gcc_mode could not be built, it is optional, install gcc-VERSION-plugin-dev to enable this"
|
@test -e afl-gcc-pass.so && echo "[+] gcc_mode successfully built" || echo "[-] gcc_mode could not be built, it is optional, install gcc-VERSION-plugin-dev to enable this"
|
||||||
@ -391,6 +395,7 @@ help:
|
|||||||
@echo INTROSPECTION - compile afl-fuzz with mutation introspection
|
@echo INTROSPECTION - compile afl-fuzz with mutation introspection
|
||||||
@echo NO_PYTHON - disable python support
|
@echo NO_PYTHON - disable python support
|
||||||
@echo NO_SPLICING - disables splicing mutation in afl-fuzz, not recommended for normal fuzzing
|
@echo NO_SPLICING - disables splicing mutation in afl-fuzz, not recommended for normal fuzzing
|
||||||
|
@echo NO_UTF - do not use UTF-8 for line rendering in status screen (fallback to G1 box drawing, of vanilla AFL)
|
||||||
@echo NO_NYX - disable building nyx mode dependencies
|
@echo NO_NYX - disable building nyx mode dependencies
|
||||||
@echo "NO_CORESIGHT - disable building coresight (arm64 only)"
|
@echo "NO_CORESIGHT - disable building coresight (arm64 only)"
|
||||||
@echo NO_UNICORN_ARM64 - disable building unicorn on arm64
|
@echo NO_UNICORN_ARM64 - disable building unicorn on arm64
|
||||||
@ -740,7 +745,7 @@ endif
|
|||||||
@echo Build Summary:
|
@echo Build Summary:
|
||||||
@test -e afl-fuzz && echo "[+] afl-fuzz and supporting tools successfully built" || echo "[-] afl-fuzz could not be built, please set CC to a working compiler"
|
@test -e afl-fuzz && echo "[+] afl-fuzz and supporting tools successfully built" || echo "[-] afl-fuzz could not be built, please set CC to a working compiler"
|
||||||
@test -e afl-llvm-pass.so && echo "[+] LLVM basic mode successfully built" || echo "[-] LLVM mode could not be built, please install at least llvm-11 and clang-11 or newer, see docs/INSTALL.md"
|
@test -e afl-llvm-pass.so && echo "[+] LLVM basic mode successfully built" || echo "[-] LLVM mode could not be built, please install at least llvm-11 and clang-11 or newer, see docs/INSTALL.md"
|
||||||
@test -e SanitizerCoveragePCGUARD.so && echo "[+] LLVM mode successfully built" || echo "[-] LLVM mode could not be built, please install at least llvm-11 and clang-11 or newer, see docs/INSTALL.md"
|
@test -e SanitizerCoveragePCGUARD.so && echo "[+] LLVM mode successfully built" || echo "[-] LLVM mode could not be built, please install at least llvm-13 and clang-13 or newer, see docs/INSTALL.md"
|
||||||
@test -e SanitizerCoverageLTO.so && echo "[+] LLVM LTO mode successfully built" || echo "[-] LLVM LTO mode could not be built, it is optional, if you want it, please install LLVM 11-14. More information at instrumentation/README.lto.md on how to build it"
|
@test -e SanitizerCoverageLTO.so && echo "[+] LLVM LTO mode successfully built" || echo "[-] LLVM LTO mode could not be built, it is optional, if you want it, please install LLVM 11-14. More information at instrumentation/README.lto.md on how to build it"
|
||||||
ifneq "$(SYS)" "Darwin"
|
ifneq "$(SYS)" "Darwin"
|
||||||
test -e afl-gcc-pass.so && echo "[+] gcc_mode successfully built" || echo "[-] gcc_mode could not be built, it is optional, install gcc-VERSION-plugin-dev to enable this"
|
test -e afl-gcc-pass.so && echo "[+] gcc_mode successfully built" || echo "[-] gcc_mode could not be built, it is optional, install gcc-VERSION-plugin-dev to enable this"
|
||||||
|
@ -28,15 +28,17 @@ MAN_PATH ?= $(PREFIX)/share/man/man8
|
|||||||
|
|
||||||
VERSION = $(shell grep '^$(HASH)define VERSION ' ./config.h | cut -d '"' -f2)
|
VERSION = $(shell grep '^$(HASH)define VERSION ' ./config.h | cut -d '"' -f2)
|
||||||
|
|
||||||
CFLAGS ?= -O3 -g -funroll-loops -D_FORTIFY_SOURCE=1
|
CFLAGS ?= -O3 -g -funroll-loops
|
||||||
|
# -D_FORTIFY_SOURCE=1
|
||||||
CFLAGS_SAFE := -Wall -Iinclude -Wno-pointer-sign \
|
CFLAGS_SAFE := -Wall -Iinclude -Wno-pointer-sign \
|
||||||
-DAFL_PATH=\"$(HELPER_PATH)\" -DBIN_PATH=\"$(BIN_PATH)\" \
|
-DAFL_PATH=\"$(HELPER_PATH)\" -DBIN_PATH=\"$(BIN_PATH)\" \
|
||||||
-DGCC_VERSION=\"$(GCCVER)\" -DGCC_BINDIR=\"$(GCCBINDIR)\" \
|
-DGCC_VERSION=\"$(GCCVER)\" -DGCC_BINDIR=\"$(GCCBINDIR)\" \
|
||||||
-Wno-unused-function
|
-Wno-unused-function
|
||||||
override CFLAGS += $(CFLAGS_SAFE)
|
override CFLAGS += $(CFLAGS_SAFE)
|
||||||
|
|
||||||
CXXFLAGS ?= -O3 -g -funroll-loops -D_FORTIFY_SOURCE=1
|
CXXFLAGS ?= -O3 -g -funroll-loops
|
||||||
CXXEFLAGS := $(CXXFLAGS) -Wall -std=c++11
|
# -D_FORTIFY_SOURCE=1
|
||||||
|
CXXEFLAGS := $(CXXFLAGS) $(CPPFLAGS) -Wall -std=c++11
|
||||||
|
|
||||||
CC ?= gcc
|
CC ?= gcc
|
||||||
CXX ?= g++
|
CXX ?= g++
|
||||||
@ -59,7 +61,7 @@ ifeq "$(findstring Foundation,$(shell $(CC) --version))" ""
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
PLUGIN_BASE = "$(shell $(CC) -print-file-name=plugin)"
|
PLUGIN_BASE = "$(shell $(CC) -print-file-name=plugin)"
|
||||||
PLUGIN_FLAGS = -fPIC -fno-rtti -I$(PLUGIN_BASE)/include -I$(PLUGIN_BASE)
|
PLUGIN_FLAGS = -fPIC -fno-rtti -fno-exceptions -I$(PLUGIN_BASE)/include -I$(PLUGIN_BASE)
|
||||||
HASH=\#
|
HASH=\#
|
||||||
|
|
||||||
GCCVER = $(shell $(CC) --version 2>/dev/null | awk 'NR == 1 {print $$NF}')
|
GCCVER = $(shell $(CC) --version 2>/dev/null | awk 'NR == 1 {print $$NF}')
|
||||||
|
@ -46,7 +46,8 @@ LLVMVER = $(shell $(LLVM_CONFIG) --version 2>/dev/null | sed 's/git//' | sed 's
|
|||||||
LLVM_MAJOR = $(shell $(LLVM_CONFIG) --version 2>/dev/null | sed 's/\..*//' )
|
LLVM_MAJOR = $(shell $(LLVM_CONFIG) --version 2>/dev/null | sed 's/\..*//' )
|
||||||
LLVM_MINOR = $(shell $(LLVM_CONFIG) --version 2>/dev/null | sed 's/.*\.//' | sed 's/git//' | sed 's/svn//' | sed 's/ .*//' )
|
LLVM_MINOR = $(shell $(LLVM_CONFIG) --version 2>/dev/null | sed 's/.*\.//' | sed 's/git//' | sed 's/svn//' | sed 's/ .*//' )
|
||||||
LLVM_UNSUPPORTED = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^[0-2]\.|^3.[0-7]\.' && echo 1 || echo 0 )
|
LLVM_UNSUPPORTED = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^[0-2]\.|^3.[0-7]\.' && echo 1 || echo 0 )
|
||||||
LLVM_TOO_NEW = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^1[7-9]' && echo 1 || echo 0 )
|
LLVM_TOO_NEW = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^1[8-9]|^2[0-9]' && echo 1 || echo 0 )
|
||||||
|
LLVM_TOO_OLD = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^[1-9]\.|^1[012]\.' && echo 1 || echo 0 )
|
||||||
LLVM_NEW_API = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^1[0-9]' && echo 1 || echo 0 )
|
LLVM_NEW_API = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^1[0-9]' && echo 1 || echo 0 )
|
||||||
LLVM_NEWER_API = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^1[6-9]' && echo 1 || echo 0 )
|
LLVM_NEWER_API = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^1[6-9]' && echo 1 || echo 0 )
|
||||||
LLVM_13_OK = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^1[3-9]' && echo 1 || echo 0 )
|
LLVM_13_OK = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^1[3-9]' && echo 1 || echo 0 )
|
||||||
@ -69,6 +70,12 @@ ifeq "$(LLVM_TOO_NEW)" "1"
|
|||||||
$(warning you are using an in-development llvm version - this might break llvm_mode!)
|
$(warning you are using an in-development llvm version - this might break llvm_mode!)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq "$(LLVM_TOO_OLD)" "1"
|
||||||
|
$(warning you are using an outdated LLVM version! Please use at least LLVM 13 or newer!)
|
||||||
|
$(shell sleep 2)
|
||||||
|
endif
|
||||||
|
|
||||||
|
# No switching the meaning of LLVM_TOO_OLD
|
||||||
LLVM_TOO_OLD=1
|
LLVM_TOO_OLD=1
|
||||||
|
|
||||||
ifeq "$(LLVM_MAJOR)" "9"
|
ifeq "$(LLVM_MAJOR)" "9"
|
||||||
@ -87,11 +94,6 @@ ifeq "$(LLVM_NEWER_API)" "1"
|
|||||||
LLVM_STDCXX = c++17
|
LLVM_STDCXX = c++17
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq "$(LLVM_TOO_OLD)" "1"
|
|
||||||
$(info [!] llvm_mode detected an old version of llvm, upgrade to at least 9 or preferable 11!)
|
|
||||||
$(shell sleep 1)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq "$(LLVM_HAVE_LTO)" "1"
|
ifeq "$(LLVM_HAVE_LTO)" "1"
|
||||||
$(info [+] llvm_mode detected llvm 11+, enabling afl-lto LTO implementation)
|
$(info [+] llvm_mode detected llvm 11+, enabling afl-lto LTO implementation)
|
||||||
LLVM_LTO = 1
|
LLVM_LTO = 1
|
||||||
@ -260,7 +262,8 @@ else
|
|||||||
AFL_CLANG_DEBUG_PREFIX =
|
AFL_CLANG_DEBUG_PREFIX =
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CFLAGS ?= -O3 -funroll-loops -fPIC -D_FORTIFY_SOURCE=1
|
CFLAGS ?= -O3 -funroll-loops -fPIC
|
||||||
|
# -D_FORTIFY_SOURCE=1
|
||||||
CFLAGS_SAFE := -Wall -g -Wno-cast-qual -Wno-variadic-macros -Wno-pointer-sign \
|
CFLAGS_SAFE := -Wall -g -Wno-cast-qual -Wno-variadic-macros -Wno-pointer-sign \
|
||||||
-I ./include/ -I ./instrumentation/ \
|
-I ./include/ -I ./instrumentation/ \
|
||||||
-DAFL_PATH=\"$(HELPER_PATH)\" -DBIN_PATH=\"$(BIN_PATH)\" \
|
-DAFL_PATH=\"$(HELPER_PATH)\" -DBIN_PATH=\"$(BIN_PATH)\" \
|
||||||
@ -285,7 +288,8 @@ ifdef AFL_TRACE_PC
|
|||||||
$(info Compile option AFL_TRACE_PC is deprecated, just set AFL_LLVM_INSTRUMENT=PCGUARD to activate when compiling targets )
|
$(info Compile option AFL_TRACE_PC is deprecated, just set AFL_LLVM_INSTRUMENT=PCGUARD to activate when compiling targets )
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CXXFLAGS ?= -O3 -funroll-loops -fPIC -D_FORTIFY_SOURCE=1
|
CXXFLAGS ?= -O3 -funroll-loops -fPIC
|
||||||
|
# -D_FORTIFY_SOURCE=1
|
||||||
override CXXFLAGS += -Wall -g -I ./include/ \
|
override CXXFLAGS += -Wall -g -I ./include/ \
|
||||||
-DVERSION=\"$(VERSION)\" -Wno-variadic-macros -Wno-deprecated-copy-with-dtor \
|
-DVERSION=\"$(VERSION)\" -Wno-variadic-macros -Wno-deprecated-copy-with-dtor \
|
||||||
-DLLVM_MINOR=$(LLVM_MINOR) -DLLVM_MAJOR=$(LLVM_MAJOR)
|
-DLLVM_MINOR=$(LLVM_MINOR) -DLLVM_MAJOR=$(LLVM_MAJOR)
|
||||||
@ -296,7 +300,7 @@ endif
|
|||||||
ifneq "$(LLVM_CONFIG)" ""
|
ifneq "$(LLVM_CONFIG)" ""
|
||||||
CLANG_CFL += -I$(shell dirname $(LLVM_CONFIG))/../include
|
CLANG_CFL += -I$(shell dirname $(LLVM_CONFIG))/../include
|
||||||
endif
|
endif
|
||||||
CLANG_CPPFL = `$(LLVM_CONFIG) --cxxflags` -fno-rtti -fPIC $(CXXFLAGS) -Wno-deprecated-declarations
|
CLANG_CPPFL = `$(LLVM_CONFIG) --cxxflags` -fno-rtti -fno-exceptions -fPIC $(CXXFLAGS) $(CPPFLAGS) -Wno-deprecated-declarations
|
||||||
CLANG_LFL = `$(LLVM_CONFIG) --ldflags` $(LDFLAGS)
|
CLANG_LFL = `$(LLVM_CONFIG) --ldflags` $(LDFLAGS)
|
||||||
|
|
||||||
# wasm fuzzing: disable thread-local storage and unset LLVM debug flag
|
# wasm fuzzing: disable thread-local storage and unset LLVM debug flag
|
||||||
|
13
README.md
13
README.md
@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
<img align="right" src="https://raw.githubusercontent.com/AFLplusplus/Website/main/static/aflpp_bg.svg" alt="AFL++ logo" width="250" heigh="250">
|
<img align="right" src="https://raw.githubusercontent.com/AFLplusplus/Website/main/static/aflpp_bg.svg" alt="AFL++ logo" width="250" heigh="250">
|
||||||
|
|
||||||
Release version: [4.07c](https://github.com/AFLplusplus/AFLplusplus/releases)
|
Release version: [4.09c](https://github.com/AFLplusplus/AFLplusplus/releases)
|
||||||
|
|
||||||
GitHub version: 4.07c
|
GitHub version: 4.09c
|
||||||
|
|
||||||
Repository:
|
Repository:
|
||||||
[https://github.com/AFLplusplus/AFLplusplus](https://github.com/AFLplusplus/AFLplusplus)
|
[https://github.com/AFLplusplus/AFLplusplus](https://github.com/AFLplusplus/AFLplusplus)
|
||||||
@ -12,12 +12,13 @@ Repository:
|
|||||||
AFL++ is maintained by:
|
AFL++ is maintained by:
|
||||||
|
|
||||||
* Marc "van Hauser" Heuse <mh@mh-sec.de>
|
* Marc "van Hauser" Heuse <mh@mh-sec.de>
|
||||||
* Andrea Fioraldi <andreafioraldi@gmail.com>
|
|
||||||
* Dominik Maier <mail@dmnk.co>
|
* Dominik Maier <mail@dmnk.co>
|
||||||
* Heiko "hexcoder-" Eißfeldt <heiko.eissfeldt@hexco.de>
|
* Andrea Fioraldi <andreafioraldi@gmail.com>
|
||||||
|
* Heiko "hexcoder-" Eissfeldt <heiko.eissfeldt@hexco.de>
|
||||||
|
* frida_mode is maintained by @Worksbutnottested
|
||||||
* Documentation: Jana Aydinbas <jana.aydinbas@gmail.com>
|
* Documentation: Jana Aydinbas <jana.aydinbas@gmail.com>
|
||||||
|
|
||||||
Originally developed by Michał "lcamtuf" Zalewski.
|
Originally developed by Michal "lcamtuf" Zalewski.
|
||||||
|
|
||||||
AFL++ is a superior fork to Google's AFL - more speed, more and better
|
AFL++ is a superior fork to Google's AFL - more speed, more and better
|
||||||
mutations, more and better instrumentation, custom module support, etc.
|
mutations, more and better instrumentation, custom module support, etc.
|
||||||
@ -228,7 +229,7 @@ Thank you! (For people sending pull requests - please add yourself to this list
|
|||||||
Thomas Rooijakkers David Carlier
|
Thomas Rooijakkers David Carlier
|
||||||
Ruben ten Hove Joey Jiao
|
Ruben ten Hove Joey Jiao
|
||||||
fuzzah @intrigus-lgtm
|
fuzzah @intrigus-lgtm
|
||||||
Yaakov Saxon
|
Yaakov Saxon Sergej Schumilo
|
||||||
```
|
```
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
25
TODO.md
25
TODO.md
@ -1,13 +1,29 @@
|
|||||||
# TODO list for AFL++
|
# TODO list for AFL++
|
||||||
|
|
||||||
|
## Must
|
||||||
|
|
||||||
|
- adapt MOpt to new mutation engine
|
||||||
|
- Update afl->pending_not_fuzzed for MOpt
|
||||||
|
- cmplog rtn sanity check on fixed length? + no length 1
|
||||||
|
- afl-showmap -f support
|
||||||
|
- afl-fuzz multicore wrapper script
|
||||||
|
- when trimming then perform crash detection
|
||||||
|
- either -L0 and/or -p mmopt results in zero new coverage
|
||||||
|
|
||||||
## Should
|
## Should
|
||||||
|
|
||||||
|
<<<<<<< Updated upstream
|
||||||
|
- add value_profile but only enable after 15 minutes without finds?
|
||||||
|
=======
|
||||||
|
- afl-showmap -f support
|
||||||
|
- afl-fuzz multicore wrapper script
|
||||||
|
- UI revamp
|
||||||
|
- hardened_usercopy=0 page_alloc.shuffle=0
|
||||||
|
- add value_profile but only enable after 15 minutes without finds
|
||||||
|
>>>>>>> Stashed changes
|
||||||
- afl-crash-analysis
|
- afl-crash-analysis
|
||||||
- show in the UI when fuzzing is "done"
|
|
||||||
- test cmplog for less than 16bit
|
|
||||||
- support persistent and deferred fork server in afl-showmap?
|
- support persistent and deferred fork server in afl-showmap?
|
||||||
- better autodetection of shifting runtime timeout values
|
- better autodetection of shifting runtime timeout values
|
||||||
- Update afl->pending_not_fuzzed for MOpt
|
|
||||||
- afl-plot to support multiple plot_data
|
- afl-plot to support multiple plot_data
|
||||||
- parallel builds for source-only targets
|
- parallel builds for source-only targets
|
||||||
- get rid of check_binary, replace with more forkserver communication
|
- get rid of check_binary, replace with more forkserver communication
|
||||||
@ -26,8 +42,7 @@ QEMU mode/FRIDA mode:
|
|||||||
- non colliding instrumentation
|
- non colliding instrumentation
|
||||||
- rename qemu specific envs to AFL_QEMU (AFL_ENTRYPOINT, AFL_CODE_START/END,
|
- rename qemu specific envs to AFL_QEMU (AFL_ENTRYPOINT, AFL_CODE_START/END,
|
||||||
AFL_COMPCOV_LEVEL?)
|
AFL_COMPCOV_LEVEL?)
|
||||||
- add AFL_QEMU_EXITPOINT (maybe multiple?), maybe pointless as there is
|
- add AFL_QEMU_EXITPOINT (maybe multiple?)
|
||||||
persistent mode
|
|
||||||
|
|
||||||
## Ideas
|
## Ideas
|
||||||
|
|
||||||
|
54
afl-addseeds
Executable file
54
afl-addseeds
Executable file
@ -0,0 +1,54 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
test -z "$1" -o "$1" = "-h" -o "$1" = "--help" && {
|
||||||
|
echo Syntax: afl-addseeds -o afl-out-dir [-i seed_file_or_dir] seed_file_or_seed_dir seed_file_or_seed_dir ...
|
||||||
|
echo
|
||||||
|
echo Options:
|
||||||
|
echo " -o afl-out-dir the output directory being used in the fuzzing campaign"
|
||||||
|
echo " -i seed_file_or_dir file or directory of files to add"
|
||||||
|
echo
|
||||||
|
echo Adds new seeds to an existing AFL++ fuzzing campaign.
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
for TOOL in find ls; do
|
||||||
|
X=`which $TOOL`
|
||||||
|
test -n "$X" || { echo "Error: required tool '$TOOL' not found."; exit 1; }
|
||||||
|
done
|
||||||
|
|
||||||
|
TEST=`printf %06d 123 2>/dev/null`
|
||||||
|
test "$TEST" = "000123" || { echo "Error: required tool 'printf' not found."; exit 1; }
|
||||||
|
|
||||||
|
OUT=
|
||||||
|
NEXT=
|
||||||
|
for i in $*; do
|
||||||
|
test -n "$NEXT" && { OUT=$i ; NEXT=""; }
|
||||||
|
test "$i" = "-o" && { NEXT=1; }
|
||||||
|
done
|
||||||
|
|
||||||
|
test -d "$OUT" || { echo Error: $OUT is not an existing directory; exit 1; }
|
||||||
|
OK=`ls $OUT/*/fuzzer_stats 2>/dev/null`
|
||||||
|
test -n "$OK" || { echo "Error: $OUT is not an 'afl-fuzz -o ... ' output directory" ; exit 1; }
|
||||||
|
|
||||||
|
OUTDIR=$OUT/addseeds/queue
|
||||||
|
mkdir -p "$OUTDIR" 2>/dev/null
|
||||||
|
test -d "$OUTDIR" || { echo Error: could not create $OUTDIR ; exit 1 ; }
|
||||||
|
|
||||||
|
echo Adding seeds ...
|
||||||
|
NEXTID=0
|
||||||
|
for i in $*; do
|
||||||
|
test -z "$i" -o "$i" = "$OUT" -o "$i" = "-i" -o "$i" = "-o" || {
|
||||||
|
find "$i" -type f | while read FILE; do
|
||||||
|
N=xxx
|
||||||
|
while [ -n "$N" ]; do
|
||||||
|
ID=$NEXTID
|
||||||
|
N=`ls "$OUTDIR/id:$(printf %06d $ID),"* 2>/dev/null`
|
||||||
|
NEXTID=$(($NEXTID + 1))
|
||||||
|
done
|
||||||
|
FN=`echo "$FILE" | sed 's/.*\///'`
|
||||||
|
cp -v "$FILE" "$OUTDIR/id:$(printf %06d $ID),time:0,execs:0,orig:$FN"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
done
|
||||||
|
|
||||||
|
echo Done.
|
78
afl-cmin
78
afl-cmin
@ -259,22 +259,20 @@ BEGIN {
|
|||||||
# Do a sanity check to discourage the use of /tmp, since we can't really
|
# Do a sanity check to discourage the use of /tmp, since we can't really
|
||||||
# handle this safely from an awk script.
|
# handle this safely from an awk script.
|
||||||
|
|
||||||
#if (!ENVIRON["AFL_ALLOW_TMP"]) {
|
if (!ENVIRON["AFL_ALLOW_TMP"]) {
|
||||||
# dirlist[0] = in_dir
|
dirlist[0] = in_dir
|
||||||
# dirlist[1] = target_bin
|
dirlist[1] = target_bin
|
||||||
# dirlist[2] = out_dir
|
dirlist[2] = out_dir
|
||||||
# dirlist[3] = stdin_file
|
dirlist[3] = stdin_file
|
||||||
# "pwd" | getline dirlist[4] # current directory
|
"pwd" | getline dirlist[4] # current directory
|
||||||
# for (dirind in dirlist) {
|
for (dirind in dirlist) {
|
||||||
# dir = dirlist[dirind]
|
dir = dirlist[dirind]
|
||||||
#
|
if (dir ~ /^(\/var)?\/tmp/) {
|
||||||
# if (dir ~ /^(\/var)?\/tmp/) {
|
print "[-] Warning: do not use this script in /tmp or /var/tmp for security reasons." > "/dev/stderr"
|
||||||
# print "[-] Error: do not use this script in /tmp or /var/tmp." > "/dev/stderr"
|
}
|
||||||
# exit 1
|
}
|
||||||
# }
|
delete dirlist
|
||||||
# }
|
}
|
||||||
# delete dirlist
|
|
||||||
#}
|
|
||||||
|
|
||||||
if (threads && stdin_file) {
|
if (threads && stdin_file) {
|
||||||
print "[-] Error: -T and -f cannot be used together." > "/dev/stderr"
|
print "[-] Error: -T and -f cannot be used together." > "/dev/stderr"
|
||||||
@ -318,7 +316,9 @@ BEGIN {
|
|||||||
|
|
||||||
if (!nyx_mode && target_bin && !exists_and_is_executable(target_bin)) {
|
if (!nyx_mode && target_bin && !exists_and_is_executable(target_bin)) {
|
||||||
|
|
||||||
"command -v "target_bin" 2>/dev/null" | getline tnew
|
cmd = "command -v "target_bin" 2>/dev/null"
|
||||||
|
cmd | getline tnew
|
||||||
|
close(cmd)
|
||||||
if (!tnew || !exists_and_is_executable(tnew)) {
|
if (!tnew || !exists_and_is_executable(tnew)) {
|
||||||
print "[-] Error: binary '"target_bin"' not found or not executable." > "/dev/stderr"
|
print "[-] Error: binary '"target_bin"' not found or not executable." > "/dev/stderr"
|
||||||
exit 1
|
exit 1
|
||||||
@ -330,6 +330,7 @@ BEGIN {
|
|||||||
echo "[!] Trying to obtain the map size of the target ..."
|
echo "[!] Trying to obtain the map size of the target ..."
|
||||||
get_map_size = "AFL_DUMP_MAP_SIZE=1 " target_bin
|
get_map_size = "AFL_DUMP_MAP_SIZE=1 " target_bin
|
||||||
get_map_size | getline mapsize
|
get_map_size | getline mapsize
|
||||||
|
close(get_map_size)
|
||||||
if (mapsize && mapsize > 65535 && mapsize < 100000000) {
|
if (mapsize && mapsize > 65535 && mapsize < 100000000) {
|
||||||
AFL_MAP_SIZE = "AFL_MAP_SIZE="mapsize" "
|
AFL_MAP_SIZE = "AFL_MAP_SIZE="mapsize" "
|
||||||
print "[+] Setting "AFL_MAP_SIZE
|
print "[+] Setting "AFL_MAP_SIZE
|
||||||
@ -359,14 +360,18 @@ BEGIN {
|
|||||||
system("rm -rf "trace_dir" 2>/dev/null");
|
system("rm -rf "trace_dir" 2>/dev/null");
|
||||||
system("rm "out_dir"/id[:_]* 2>/dev/null")
|
system("rm "out_dir"/id[:_]* 2>/dev/null")
|
||||||
|
|
||||||
"ls "out_dir"/* 2>/dev/null | wc -l" | getline noofentries
|
cmd = "ls "out_dir"/* 2>/dev/null | wc -l"
|
||||||
|
cmd | getline noofentries
|
||||||
|
close(cmd)
|
||||||
if (0 == system( "test -d "out_dir" -a "noofentries" -gt 0" )) {
|
if (0 == system( "test -d "out_dir" -a "noofentries" -gt 0" )) {
|
||||||
print "[-] Error: directory '"out_dir"' exists and is not empty - delete it first." > "/dev/stderr"
|
print "[-] Error: directory '"out_dir"' exists and is not empty - delete it first." > "/dev/stderr"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
if (threads) {
|
if (threads) {
|
||||||
"nproc" | getline nproc
|
cmd = "nproc"
|
||||||
|
cmd | getline nproc
|
||||||
|
close(cmd)
|
||||||
if (threads == "all") {
|
if (threads == "all") {
|
||||||
threads = nproc
|
threads = nproc
|
||||||
} else {
|
} else {
|
||||||
@ -386,12 +391,14 @@ BEGIN {
|
|||||||
if (stdin_file) {
|
if (stdin_file) {
|
||||||
# truncate input file
|
# truncate input file
|
||||||
printf "" > stdin_file
|
printf "" > stdin_file
|
||||||
close( stdin_file )
|
close(stdin_file)
|
||||||
}
|
}
|
||||||
|
|
||||||
# First we look in PATH
|
# First we look in PATH
|
||||||
if (0 == system("command -v afl-showmap >/dev/null 2>&1")) {
|
if (0 == system("command -v afl-showmap >/dev/null 2>&1")) {
|
||||||
"command -v afl-showmap 2>/dev/null" | getline showmap
|
cmd = "command -v afl-showmap 2>/dev/null"
|
||||||
|
cmd | getline showmap
|
||||||
|
close(cmd)
|
||||||
} else {
|
} else {
|
||||||
# then we look in the current directory
|
# then we look in the current directory
|
||||||
if (0 == system("test -x ./afl-showmap")) {
|
if (0 == system("test -x ./afl-showmap")) {
|
||||||
@ -413,13 +420,15 @@ BEGIN {
|
|||||||
# yuck, gnu stat is option incompatible to bsd stat
|
# yuck, gnu stat is option incompatible to bsd stat
|
||||||
# we use a heuristic to differentiate between
|
# we use a heuristic to differentiate between
|
||||||
# GNU stat and other stats
|
# GNU stat and other stats
|
||||||
"stat --version 2>/dev/null" | getline statversion
|
cmd = "stat --version 2>/dev/null"
|
||||||
if (statversion ~ /GNU coreutils/) {
|
cmd | getline statversion
|
||||||
|
close(cmd)
|
||||||
|
if (statversion ~ /GNU coreutils/ || statversion ~ /BusyBox/) {
|
||||||
stat_format = "-c '%s %n'" # GNU
|
stat_format = "-c '%s %n'" # GNU
|
||||||
} else {
|
} else {
|
||||||
stat_format = "-f '%z %N'" # *BSD, MacOS
|
stat_format = "-f '%z %N'" # *BSD, MacOS
|
||||||
}
|
}
|
||||||
cmdline = "(cd "in_dir" && find . \\( ! -name \".*\" -a -type d \\) -o -type f -exec stat "stat_format" \\{\\} + | sort -k1n -k2r)"
|
cmdline = "(cd "in_dir" && find . \\( ! -name \".*\" -a -type d \\) -o -type f -exec stat "stat_format" \\{\\} + | sort -k1n -k2r) | grep -Ev '^0'"
|
||||||
#cmdline = "ls "in_dir" | (cd "in_dir" && xargs stat "stat_format" 2>/dev/null) | sort -k1n -k2r"
|
#cmdline = "ls "in_dir" | (cd "in_dir" && xargs stat "stat_format" 2>/dev/null) | sort -k1n -k2r"
|
||||||
#cmdline = "(cd "in_dir" && stat "stat_format" *) | sort -k1n -k2r"
|
#cmdline = "(cd "in_dir" && stat "stat_format" *) | sort -k1n -k2r"
|
||||||
#cmdline = "(cd "in_dir" && ls | xargs stat "stat_format" ) | sort -k1n -k2r"
|
#cmdline = "(cd "in_dir" && ls | xargs stat "stat_format" ) | sort -k1n -k2r"
|
||||||
@ -432,6 +441,7 @@ BEGIN {
|
|||||||
infilesSmallToBigFullMap[infilesSmallToBigFull[i]] = infilesSmallToBig[i]
|
infilesSmallToBigFullMap[infilesSmallToBigFull[i]] = infilesSmallToBig[i]
|
||||||
i++
|
i++
|
||||||
}
|
}
|
||||||
|
close(cmdline)
|
||||||
in_count = i
|
in_count = i
|
||||||
|
|
||||||
first_file = infilesSmallToBigFull[0]
|
first_file = infilesSmallToBigFull[0]
|
||||||
@ -468,6 +478,7 @@ BEGIN {
|
|||||||
while ((getline < runtest) > 0) {
|
while ((getline < runtest) > 0) {
|
||||||
++first_count
|
++first_count
|
||||||
}
|
}
|
||||||
|
close(runtest)
|
||||||
|
|
||||||
if (first_count) {
|
if (first_count) {
|
||||||
print "[+] OK, "first_count" tuples recorded."
|
print "[+] OK, "first_count" tuples recorded."
|
||||||
@ -480,6 +491,11 @@ BEGIN {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (in_count < threads) {
|
||||||
|
threads = in_count
|
||||||
|
print "[!] WARNING: less inputs than threads, reducing threads to "threads" and likely the overhead of threading makes things slower..."
|
||||||
|
}
|
||||||
|
|
||||||
# Let's roll!
|
# Let's roll!
|
||||||
|
|
||||||
#############################
|
#############################
|
||||||
@ -488,7 +504,7 @@ BEGIN {
|
|||||||
|
|
||||||
if (threads) {
|
if (threads) {
|
||||||
|
|
||||||
inputsperfile = in_count / threads
|
inputsperfile = int(in_count / threads)
|
||||||
if (in_count % threads) {
|
if (in_count % threads) {
|
||||||
inputsperfile++;
|
inputsperfile++;
|
||||||
}
|
}
|
||||||
@ -513,7 +529,7 @@ BEGIN {
|
|||||||
|
|
||||||
if (threads > 1) {
|
if (threads > 1) {
|
||||||
|
|
||||||
print "[*] Creating " threads " parallel tasks with about " inputsperfile " each."
|
print "[*] Creating " threads " parallel tasks with about " inputsperfile " items each."
|
||||||
for (i = 1; i <= threads; i++) {
|
for (i = 1; i <= threads; i++) {
|
||||||
|
|
||||||
if (!stdin_file) {
|
if (!stdin_file) {
|
||||||
@ -582,6 +598,15 @@ BEGIN {
|
|||||||
else { print " Processing file "cur"/"in_count }
|
else { print " Processing file "cur"/"in_count }
|
||||||
# create path for the trace file from afl-showmap
|
# create path for the trace file from afl-showmap
|
||||||
tracefile_path = trace_dir"/"fn
|
tracefile_path = trace_dir"/"fn
|
||||||
|
# ensure the file size is not zero
|
||||||
|
cmd = "du -b "tracefile_path
|
||||||
|
"ls -l "tracefile_path
|
||||||
|
cmd | getline output
|
||||||
|
close(cmd)
|
||||||
|
split(output, result, "\t")
|
||||||
|
if (result[1] == 0) {
|
||||||
|
print "[!] WARNING: file "fn" is crashing the target, ignoring..."
|
||||||
|
}
|
||||||
# gather all keys, and count them
|
# gather all keys, and count them
|
||||||
while ((getline line < tracefile_path) > 0) {
|
while ((getline line < tracefile_path) > 0) {
|
||||||
key = line
|
key = line
|
||||||
@ -643,6 +668,7 @@ BEGIN {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
close(sortedKeys)
|
close(sortedKeys)
|
||||||
|
print ""
|
||||||
print "[+] Found "tuple_count" unique tuples across "in_count" files."
|
print "[+] Found "tuple_count" unique tuples across "in_count" files."
|
||||||
|
|
||||||
if (out_count == 1) {
|
if (out_count == 1) {
|
||||||
|
@ -167,29 +167,28 @@ fi
|
|||||||
# Do a sanity check to discourage the use of /tmp, since we can't really
|
# Do a sanity check to discourage the use of /tmp, since we can't really
|
||||||
# handle this safely from a shell script.
|
# handle this safely from a shell script.
|
||||||
|
|
||||||
#if [ "$AFL_ALLOW_TMP" = "" ]; then
|
if [ "$AFL_ALLOW_TMP" = "" ]; then
|
||||||
#
|
|
||||||
# echo "$IN_DIR" | grep -qE '^(/var)?/tmp/'
|
echo "$IN_DIR" | grep -qE '^(/var)?/tmp/'
|
||||||
# T1="$?"
|
T1="$?"
|
||||||
#
|
|
||||||
# echo "$TARGET_BIN" | grep -qE '^(/var)?/tmp/'
|
echo "$TARGET_BIN" | grep -qE '^(/var)?/tmp/'
|
||||||
# T2="$?"
|
T2="$?"
|
||||||
#
|
|
||||||
# echo "$OUT_DIR" | grep -qE '^(/var)?/tmp/'
|
echo "$OUT_DIR" | grep -qE '^(/var)?/tmp/'
|
||||||
# T3="$?"
|
T3="$?"
|
||||||
#
|
|
||||||
# echo "$STDIN_FILE" | grep -qE '^(/var)?/tmp/'
|
echo "$STDIN_FILE" | grep -qE '^(/var)?/tmp/'
|
||||||
# T4="$?"
|
T4="$?"
|
||||||
#
|
|
||||||
# echo "$PWD" | grep -qE '^(/var)?/tmp/'
|
echo "$PWD" | grep -qE '^(/var)?/tmp/'
|
||||||
# T5="$?"
|
T5="$?"
|
||||||
#
|
|
||||||
# if [ "$T1" = "0" -o "$T2" = "0" -o "$T3" = "0" -o "$T4" = "0" -o "$T5" = "0" ]; then
|
if [ "$T1" = "0" -o "$T2" = "0" -o "$T3" = "0" -o "$T4" = "0" -o "$T5" = "0" ]; then
|
||||||
# echo "[-] Error: do not use this script in /tmp or /var/tmp." 1>&2
|
echo "[-] Warning: do not use this script in /tmp or /var/tmp for security reasons." 1>&2
|
||||||
# exit 1
|
fi
|
||||||
# fi
|
|
||||||
#
|
fi
|
||||||
#fi
|
|
||||||
|
|
||||||
# If @@ is specified, but there's no -f, let's come up with a temporary input
|
# If @@ is specified, but there's no -f, let's come up with a temporary input
|
||||||
# file name.
|
# file name.
|
||||||
@ -339,6 +338,13 @@ fi
|
|||||||
echo "[*] Are you aware that afl-cmin is faster than this afl-cmin.bash script?"
|
echo "[*] Are you aware that afl-cmin is faster than this afl-cmin.bash script?"
|
||||||
echo "[+] Found $IN_COUNT files for minimizing."
|
echo "[+] Found $IN_COUNT files for minimizing."
|
||||||
|
|
||||||
|
if [ -n "$THREADS" ]; then
|
||||||
|
if [ "$IN_COUNT" -lt "$THREADS" ]; then
|
||||||
|
THREADS=$IN_COUNT
|
||||||
|
echo "[!] WARNING: less inputs than threads, reducing threads to $THREADS and likely the overhead of threading makes things slower..."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
FIRST_FILE=`ls "$IN_DIR" | head -1`
|
FIRST_FILE=`ls "$IN_DIR" | head -1`
|
||||||
|
|
||||||
# Make sure that we're not dealing with a directory.
|
# Make sure that we're not dealing with a directory.
|
||||||
@ -416,10 +422,14 @@ if [ "$THREADS" = "" ]; then
|
|||||||
|
|
||||||
ls "$IN_DIR" | while read -r fn; do
|
ls "$IN_DIR" | while read -r fn; do
|
||||||
|
|
||||||
CUR=$((CUR+1))
|
if [ -s "$IN_DIR/$fn" ]; then
|
||||||
printf "\\r Processing file $CUR/$IN_COUNT... "
|
|
||||||
|
|
||||||
"$SHOWMAP" -m "$MEM_LIMIT" -t "$TIMEOUT" -o "$TRACE_DIR/$fn" -Z $EXTRA_PAR -- "$@" <"$IN_DIR/$fn"
|
CUR=$((CUR+1))
|
||||||
|
printf "\\r Processing file $CUR/$IN_COUNT... "
|
||||||
|
|
||||||
|
"$SHOWMAP" -m "$MEM_LIMIT" -t "$TIMEOUT" -o "$TRACE_DIR/$fn" -Z $EXTRA_PAR -- "$@" <"$IN_DIR/$fn"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
@ -427,11 +437,15 @@ if [ "$THREADS" = "" ]; then
|
|||||||
|
|
||||||
ls "$IN_DIR" | while read -r fn; do
|
ls "$IN_DIR" | while read -r fn; do
|
||||||
|
|
||||||
CUR=$((CUR+1))
|
if [ -s "$IN_DIR/$fn" ]; then
|
||||||
printf "\\r Processing file $CUR/$IN_COUNT... "
|
|
||||||
|
|
||||||
cp "$IN_DIR/$fn" "$STDIN_FILE"
|
CUR=$((CUR+1))
|
||||||
"$SHOWMAP" -m "$MEM_LIMIT" -t "$TIMEOUT" -o "$TRACE_DIR/$fn" -Z $EXTRA_PAR -H "$STDIN_FILE" -- "$@" </dev/null
|
printf "\\r Processing file $CUR/$IN_COUNT... "
|
||||||
|
|
||||||
|
cp "$IN_DIR/$fn" "$STDIN_FILE"
|
||||||
|
"$SHOWMAP" -m "$MEM_LIMIT" -t "$TIMEOUT" -o "$TRACE_DIR/$fn" -Z $EXTRA_PAR -H "$STDIN_FILE" -- "$@" </dev/null
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
@ -453,19 +467,26 @@ else
|
|||||||
|
|
||||||
cat $inputs | while read -r fn; do
|
cat $inputs | while read -r fn; do
|
||||||
|
|
||||||
"$SHOWMAP" -m "$MEM_LIMIT" -t "$TIMEOUT" -o "$TRACE_DIR/$fn" -Z $EXTRA_PAR -- "$@" <"$IN_DIR/$fn"
|
if [ -s "$IN_DIR/$fn" ]; then
|
||||||
|
|
||||||
|
"$SHOWMAP" -m "$MEM_LIMIT" -t "$TIMEOUT" -o "$TRACE_DIR/$fn" -Z $EXTRA_PAR -- "$@" <"$IN_DIR/$fn"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
STDIN_FILE="$inputs.$$"
|
if [ -s "$IN_DIR/$fn" ]; then
|
||||||
cat $inputs | while read -r fn; do
|
STDIN_FILE="$inputs.$$"
|
||||||
|
cat $inputs | while read -r fn; do
|
||||||
|
|
||||||
cp "$IN_DIR/$fn" "$STDIN_FILE"
|
cp "$IN_DIR/$fn" "$STDIN_FILE"
|
||||||
"$SHOWMAP" -m "$MEM_LIMIT" -t "$TIMEOUT" -o "$TRACE_DIR/$fn" -Z $EXTRA_PAR -H "$STDIN_FILE" -- "$@" </dev/null
|
"$SHOWMAP" -m "$MEM_LIMIT" -t "$TIMEOUT" -o "$TRACE_DIR/$fn" -Z $EXTRA_PAR -H "$STDIN_FILE" -- "$@" </dev/null
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -479,7 +500,7 @@ else
|
|||||||
echo "[+] all $THREADS running tasks completed."
|
echo "[+] all $THREADS running tasks completed."
|
||||||
rm -f ${TMPFILE}*
|
rm -f ${TMPFILE}*
|
||||||
|
|
||||||
echo trace dir files: $(ls $TRACE_DIR/*|wc -l)
|
#echo trace dir files: $(ls $TRACE_DIR/*|wc -l)
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -523,6 +544,8 @@ ls -rS "$IN_DIR" | while read -r fn; do
|
|||||||
|
|
||||||
sed "s#\$# $fn#" "$TRACE_DIR/$fn" >>"$TRACE_DIR/.candidate_list"
|
sed "s#\$# $fn#" "$TRACE_DIR/$fn" >>"$TRACE_DIR/.candidate_list"
|
||||||
|
|
||||||
|
test -s "$TRACE_DIR/$fn" || echo Warning: $fn is ignored because of crashing the target
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
echo
|
echo
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# written by jhertz
|
# written by jhertz
|
||||||
#
|
#
|
||||||
|
|
||||||
test "$1" = "-h" -o "$1" = "-hh" && {
|
test "$1" = "-h" -o "$1" = "-hh" -o "$1" = "--help" && {
|
||||||
echo 'afl-persistent-config'
|
echo 'afl-persistent-config'
|
||||||
echo
|
echo
|
||||||
echo $0
|
echo $0
|
||||||
@ -17,6 +17,11 @@ test "$1" = "-h" -o "$1" = "-hh" && {
|
|||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if [ $# -ne 0 ]; then
|
||||||
|
echo "ERROR: Unknown option(s): $@"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "WARNING: This scripts makes permanent configuration changes to the system to"
|
echo "WARNING: This scripts makes permanent configuration changes to the system to"
|
||||||
echo " increase the performance for fuzzing. As a result, the system also"
|
echo " increase the performance for fuzzing. As a result, the system also"
|
||||||
@ -98,9 +103,9 @@ if [[ "$PLATFORM" = "Linux" ]] ; then
|
|||||||
echo "Checks passed."
|
echo "Checks passed."
|
||||||
|
|
||||||
test -d /etc/sysctl.d || echo Error: /etc/sysctl.d directory not found, cannot install shmem config
|
test -d /etc/sysctl.d || echo Error: /etc/sysctl.d directory not found, cannot install shmem config
|
||||||
test -d /etc/sysctl.d -a '!' -e /etc/sysctl.d/99-fuzzing && {
|
test -d /etc/sysctl.d -a '!' -e /etc/sysctl.d/99-fuzzing.conf && {
|
||||||
echo "Installing /etc/sysctl.d/99-fuzzing"
|
echo "Installing /etc/sysctl.d/99-fuzzing.conf"
|
||||||
cat << EOF > /etc/sysctl.d/99-fuzzing
|
cat << EOF > /etc/sysctl.d/99-fuzzing.conf
|
||||||
kernel.core_uses_pid=0
|
kernel.core_uses_pid=0
|
||||||
kernel.core_pattern=core
|
kernel.core_pattern=core
|
||||||
kernel.randomize_va_space=0
|
kernel.randomize_va_space=0
|
||||||
|
15
afl-plot
15
afl-plot
@ -75,8 +75,17 @@ outputdir=`get_abs_path "$2"`
|
|||||||
|
|
||||||
if [ ! -f "$inputdir/plot_data" ]; then
|
if [ ! -f "$inputdir/plot_data" ]; then
|
||||||
|
|
||||||
echo "[-] Error: input directory is not valid (missing 'plot_data')." 1>&2
|
if [ -f "$inputdir/default/plot_data" ]; then
|
||||||
exit 1
|
|
||||||
|
echo "[-] Error: input directory is not valid (missing 'plot_data'), likely you mean $inputdir/default?" 1>&2
|
||||||
|
exit 1
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
echo "[-] Error: input directory is not valid (missing 'plot_data')." 1>&2
|
||||||
|
exit 1
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -141,7 +150,7 @@ set output '$outputdir/high_freq.png'
|
|||||||
$GNUPLOT_SETUP
|
$GNUPLOT_SETUP
|
||||||
|
|
||||||
plot '$inputdir/plot_data' using 1:4 with filledcurve x1 title 'corpus count' linecolor rgb '#000000' fillstyle transparent solid 0.2 noborder, \\
|
plot '$inputdir/plot_data' using 1:4 with filledcurve x1 title 'corpus count' linecolor rgb '#000000' fillstyle transparent solid 0.2 noborder, \\
|
||||||
'' using 1:3 with filledcurve x1 title 'current fuzz item' linecolor rgb '#f0f0f0' fillstyle transparent solid 0.5 noborder, \\
|
'' using 1:3 with filledcurve x1 title 'current item' linecolor rgb '#f0f0f0' fillstyle transparent solid 0.5 noborder, \\
|
||||||
'' using 1:5 with lines title 'pending items' linecolor rgb '#0090ff' linewidth 3, \\
|
'' using 1:5 with lines title 'pending items' linecolor rgb '#0090ff' linewidth 3, \\
|
||||||
'' using 1:6 with lines title 'pending favs' linecolor rgb '#c00080' linewidth 3, \\
|
'' using 1:6 with lines title 'pending favs' linecolor rgb '#c00080' linewidth 3, \\
|
||||||
'' using 1:2 with lines title 'cycles done' linecolor rgb '#c000f0' linewidth 3
|
'' using 1:2 with lines title 'cycles done' linecolor rgb '#c000f0' linewidth 3
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
test "$1" = "-h" -o "$1" = "-hh" && {
|
test "$1" = "-h" -o "$1" = "-hh" -o "$1" = "--help" && {
|
||||||
echo 'afl-system-config by Marc Heuse <mh@mh-sec.de>'
|
echo 'afl-system-config by Marc Heuse <mh@mh-sec.de>'
|
||||||
echo
|
echo
|
||||||
echo $0
|
echo $0
|
||||||
@ -13,6 +13,10 @@ test "$1" = "-h" -o "$1" = "-hh" && {
|
|||||||
echo configuration options.
|
echo configuration options.
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
if [ $# -ne 0 ]; then
|
||||||
|
echo "ERROR: Unknown option(s): $@"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
DONE=
|
DONE=
|
||||||
PLATFORM=`uname -s`
|
PLATFORM=`uname -s`
|
||||||
@ -110,12 +114,12 @@ if [ "$PLATFORM" = "Darwin" ] ; then
|
|||||||
sysctl kern.sysv.shmall=131072000
|
sysctl kern.sysv.shmall=131072000
|
||||||
echo Settings applied.
|
echo Settings applied.
|
||||||
echo
|
echo
|
||||||
if $(launchctl list 2>/dev/null | grep -q '\.ReportCrash$') ; then
|
if $(launchctl list 2>/dev/null | grep -q '\.ReportCrash\>') ; then
|
||||||
echo
|
echo
|
||||||
echo Unloading the default crash reporter
|
echo Unloading the default crash reporter
|
||||||
SL=/System/Library; PL=com.apple.ReportCrash
|
SL=/System/Library; PL=com.apple.ReportCrash
|
||||||
launchctl unload -w ${SL}/LaunchAgents/${PL}.plist >/dev/null 2>&1
|
sudo -u "$SUDO_USER" launchctl unload -w ${SL}/LaunchAgents/${PL}.plist
|
||||||
sudo launchctl unload -w ${SL}/LaunchDaemons/${PL}.Root.plist >/dev/null 2>&1
|
launchctl unload -w ${SL}/LaunchDaemons/${PL}.Root.plist
|
||||||
echo
|
echo
|
||||||
fi
|
fi
|
||||||
echo It is recommended to disable System Integrity Protection for increased performance.
|
echo It is recommended to disable System Integrity Protection for increased performance.
|
||||||
|
415
afl-whatsup
415
afl-whatsup
@ -18,64 +18,98 @@
|
|||||||
# instances of afl-fuzz.
|
# instances of afl-fuzz.
|
||||||
#
|
#
|
||||||
|
|
||||||
echo "$0 status check tool for afl-fuzz by Michal Zalewski"
|
|
||||||
echo
|
|
||||||
test "$1" = "-h" -o "$1" = "-hh" && {
|
test "$1" = "-h" -o "$1" = "-hh" && {
|
||||||
|
echo "$0 status check tool for afl-fuzz by Michal Zalewski"
|
||||||
|
echo
|
||||||
echo "Usage: $0 [-s] [-d] afl_output_directory"
|
echo "Usage: $0 [-s] [-d] afl_output_directory"
|
||||||
echo
|
echo
|
||||||
echo Options:
|
echo Options:
|
||||||
echo " -s - skip details and output summary results only"
|
|
||||||
echo " -d - include dead fuzzer stats"
|
echo " -d - include dead fuzzer stats"
|
||||||
|
echo " -m - just show minimal stats"
|
||||||
|
echo " -n - no color output"
|
||||||
|
echo " -s - skip details and output summary results only"
|
||||||
echo
|
echo
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
unset SUMMARY_ONLY
|
unset MINIMAL_ONLY
|
||||||
|
unset NO_COLOR
|
||||||
unset PROCESS_DEAD
|
unset PROCESS_DEAD
|
||||||
|
unset SUMMARY_ONLY
|
||||||
|
unset RED
|
||||||
|
unset GREEN
|
||||||
|
unset YELLOW
|
||||||
|
unset BLUE
|
||||||
|
unset NC
|
||||||
|
unset RESET
|
||||||
|
|
||||||
while [ "$1" = "-s" -o "$1" = "-d" ]; do
|
if [ -z "$TERM" ]; then export TERM=vt220; fi
|
||||||
|
|
||||||
if [ "$1" = "-s" ]; then
|
|
||||||
SUMMARY_ONLY=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
while [ "$1" = "-d" -o "$1" = "-m" -o "$1" = "-n" -o "$1" = "-s" ]; do
|
||||||
|
|
||||||
if [ "$1" = "-d" ]; then
|
if [ "$1" = "-d" ]; then
|
||||||
PROCESS_DEAD=1
|
PROCESS_DEAD=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = "-m" ]; then
|
||||||
|
MINIMAL_ONLY=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = "-n" ]; then
|
||||||
|
NO_COLOR=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = "-s" ]; then
|
||||||
|
SUMMARY_ONLY=1
|
||||||
|
fi
|
||||||
|
|
||||||
shift
|
shift
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
DIR="$1"
|
DIR="$1"
|
||||||
|
|
||||||
if [ "$DIR" = "" ]; then
|
if [ "$DIR" = "" -o "$DIR" = "-h" -o "$DIR" = "--help" ]; then
|
||||||
|
|
||||||
echo "Usage: $0 [-s] [-d] afl_output_directory" 1>&2
|
echo "$0 status check tool for afl-fuzz by Michal Zalewski" 1>&2
|
||||||
|
echo 1>&2
|
||||||
|
echo "Usage: $0 [-d] [-m] [-n] [-s] afl_output_directory" 1>&2
|
||||||
echo 1>&2
|
echo 1>&2
|
||||||
echo Options: 1>&2
|
echo Options: 1>&2
|
||||||
echo " -s - skip details and output summary results only" 1>&2
|
|
||||||
echo " -d - include dead fuzzer stats" 1>&2
|
echo " -d - include dead fuzzer stats" 1>&2
|
||||||
|
echo " -m - just show minimal stats" 1>&2
|
||||||
|
echo " -n - no color output" 1>&2
|
||||||
|
echo " -s - skip details and output summary results only" 1>&2
|
||||||
echo 1>&2
|
echo 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$MINIMAL_ONLY" ]; then
|
||||||
|
echo "$0 status check tool for afl-fuzz by Michal Zalewski"
|
||||||
|
echo
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd "$DIR" || exit 1
|
cd "$DIR" || exit 1
|
||||||
|
|
||||||
if [ -d queue ]; then
|
if [ -d queue ]; then
|
||||||
|
|
||||||
echo "[-] Error: parameter is an individual output directory, not a sync dir." 1>&2
|
echo "[-] Error: parameter is an individual output directory, not a sync dir." 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RED=`tput setaf 9 1 1 2>/dev/null`
|
BC=`which bc 2>/dev/null`
|
||||||
GREEN=`tput setaf 2 1 1 2>/dev/null`
|
FUSER=`which fuser 2>/dev/null`
|
||||||
BLUE=`tput setaf 4 1 1 2>/dev/null`
|
|
||||||
YELLOW=`tput setaf 11 1 1 2>/dev/null`
|
if [ -z "$NO_COLOR" ]; then
|
||||||
NC=`tput sgr0`
|
RED=`tput setaf 9 1 1 2>/dev/null`
|
||||||
RESET="$NC"
|
GREEN=`tput setaf 2 1 1 2>/dev/null`
|
||||||
|
BLUE=`tput setaf 4 1 1 2>/dev/null`
|
||||||
|
YELLOW=`tput setaf 11 1 1 2>/dev/null`
|
||||||
|
NC=`tput sgr0`
|
||||||
|
RESET="$NC"
|
||||||
|
fi
|
||||||
|
|
||||||
CUR_TIME=`date +%s`
|
CUR_TIME=`date +%s`
|
||||||
|
|
||||||
@ -83,6 +117,7 @@ TMP=`mktemp -t .afl-whatsup-XXXXXXXX` || TMP=`mktemp -p /data/local/tmp .afl-wha
|
|||||||
|
|
||||||
ALIVE_CNT=0
|
ALIVE_CNT=0
|
||||||
DEAD_CNT=0
|
DEAD_CNT=0
|
||||||
|
START_CNT=0
|
||||||
|
|
||||||
TOTAL_TIME=0
|
TOTAL_TIME=0
|
||||||
TOTAL_EXECS=0
|
TOTAL_EXECS=0
|
||||||
@ -91,6 +126,7 @@ TOTAL_CRASHES=0
|
|||||||
TOTAL_HANGS=0
|
TOTAL_HANGS=0
|
||||||
TOTAL_PFAV=0
|
TOTAL_PFAV=0
|
||||||
TOTAL_PENDING=0
|
TOTAL_PENDING=0
|
||||||
|
TOTAL_COVERAGE=
|
||||||
|
|
||||||
# Time since last find / crash / hang, formatted as string
|
# Time since last find / crash / hang, formatted as string
|
||||||
FMT_TIME="0 days 0 hours"
|
FMT_TIME="0 days 0 hours"
|
||||||
@ -99,11 +135,11 @@ FMT_CRASH="none seen yet"
|
|||||||
FMT_HANG="none seen yet"
|
FMT_HANG="none seen yet"
|
||||||
|
|
||||||
if [ "$SUMMARY_ONLY" = "" ]; then
|
if [ "$SUMMARY_ONLY" = "" ]; then
|
||||||
|
|
||||||
echo "Individual fuzzers"
|
echo "Individual fuzzers"
|
||||||
echo "=================="
|
echo "=================="
|
||||||
echo
|
echo
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fmt_duration()
|
fmt_duration()
|
||||||
@ -112,22 +148,22 @@ fmt_duration()
|
|||||||
if [ $1 -le 0 ]; then
|
if [ $1 -le 0 ]; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local duration=$((CUR_TIME - $1))
|
local duration=$((CUR_TIME - $1))
|
||||||
local days=$((duration / 60 / 60 / 24))
|
local days=$((duration / 60 / 60 / 24))
|
||||||
local hours=$(((duration / 60 / 60) % 24))
|
local hours=$(((duration / 60 / 60) % 24))
|
||||||
local minutes=$(((duration / 60) % 60))
|
local minutes=$(((duration / 60) % 60))
|
||||||
local seconds=$((duration % 60))
|
local seconds=$((duration % 60))
|
||||||
|
|
||||||
if [ $duration -le 0 ]; then
|
if [ $duration -le 0 ]; then
|
||||||
DUR_STRING="0 seconds"
|
DUR_STRING="0 seconds"
|
||||||
elif [ $duration -eq 1 ]; then
|
elif [ $duration -eq 1 ]; then
|
||||||
DUR_STRING="1 second"
|
DUR_STRING="1 second"
|
||||||
elif [ $days -gt 0 ]; then
|
elif [ $days -gt 0 ]; then
|
||||||
DUR_STRING="$days days, $hours hours"
|
DUR_STRING="$days days, $hours hours"
|
||||||
elif [ $hours -gt 0 ]; then
|
elif [ $hours -gt 0 ]; then
|
||||||
DUR_STRING="$hours hours, $minutes minutes"
|
DUR_STRING="$hours hours, $minutes minutes"
|
||||||
elif [ $minutes -gt 0 ]; then
|
elif [ $minutes -gt 0 ]; then
|
||||||
DUR_STRING="$minutes minutes, $seconds seconds"
|
DUR_STRING="$minutes minutes, $seconds seconds"
|
||||||
else
|
else
|
||||||
DUR_STRING="$seconds seconds"
|
DUR_STRING="$seconds seconds"
|
||||||
@ -138,112 +174,187 @@ FIRST=true
|
|||||||
TOTAL_WCOP=
|
TOTAL_WCOP=
|
||||||
TOTAL_LAST_FIND=0
|
TOTAL_LAST_FIND=0
|
||||||
|
|
||||||
for i in `find . -maxdepth 2 -iname fuzzer_stats | sort`; do
|
for j in `find . -maxdepth 2 -iname fuzzer_setup | sort`; do
|
||||||
|
|
||||||
sed 's/^command_line.*$/_skip:1/;s/[ ]*:[ ]*/="/;s/$/"/' "$i" >"$TMP"
|
DIR=$(dirname "$j")
|
||||||
. "$TMP"
|
i=$DIR/fuzzer_stats
|
||||||
DIR=$(dirname "$i")
|
|
||||||
DIR=${DIR##*/}
|
if [ -f "$i" ]; then
|
||||||
RUN_UNIX=$run_time
|
|
||||||
RUN_DAYS=$((RUN_UNIX / 60 / 60 / 24))
|
sed 's/^command_line.*$/_skip:1/;s/[ ]*:[ ]*/="/;s/$/"/' "$i" >"$TMP"
|
||||||
RUN_HRS=$(((RUN_UNIX / 60 / 60) % 24))
|
. "$TMP"
|
||||||
|
DIRECTORY=$DIR
|
||||||
test -n "$cycles_wo_finds" && {
|
DIR=${DIR##*/}
|
||||||
test -z "$FIRST" && TOTAL_WCOP="${TOTAL_WCOP}/"
|
RUN_UNIX=$run_time
|
||||||
TOTAL_WCOP="${TOTAL_WCOP}${cycles_wo_finds}"
|
RUN_DAYS=$((RUN_UNIX / 60 / 60 / 24))
|
||||||
FIRST=
|
RUN_HRS=$(((RUN_UNIX / 60 / 60) % 24))
|
||||||
}
|
COVERAGE=$(echo $bitmap_cvg|tr -d %)
|
||||||
|
if [ -n "$TOTAL_COVERAGE" -a -n "$COVERAGE" -a -n "$BC" ]; then
|
||||||
if [ "$SUMMARY_ONLY" = "" ]; then
|
if [ "$(echo "$TOTAL_COVERAGE < $COVERAGE" | bc)" -eq 1 ]; then
|
||||||
|
TOTAL_COVERAGE=$COVERAGE
|
||||||
echo ">>> $afl_banner instance: $DIR ($RUN_DAYS days, $RUN_HRS hrs) fuzzer PID: $fuzzer_pid <<<"
|
fi
|
||||||
echo
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! kill -0 "$fuzzer_pid" 2>/dev/null; then
|
|
||||||
|
|
||||||
if [ "$SUMMARY_ONLY" = "" ]; then
|
|
||||||
|
|
||||||
echo " Instance is dead or running remotely, skipping."
|
|
||||||
echo
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
if [ -z "$TOTAL_COVERAGE" ]; then TOTAL_COVERAGE=$COVERAGE ; fi
|
||||||
DEAD_CNT=$((DEAD_CNT + 1))
|
|
||||||
last_find=0
|
|
||||||
|
|
||||||
if [ "$PROCESS_DEAD" = "" ]; then
|
|
||||||
|
|
||||||
continue
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
ALIVE_CNT=$((ALIVE_CNT + 1))
|
|
||||||
|
|
||||||
EXEC_SEC=0
|
|
||||||
test -z "$RUN_UNIX" -o "$RUN_UNIX" = 0 || EXEC_SEC=$((execs_done / RUN_UNIX))
|
|
||||||
PATH_PERC=$((cur_item * 100 / corpus_count))
|
|
||||||
|
|
||||||
TOTAL_TIME=$((TOTAL_TIME + RUN_UNIX))
|
|
||||||
TOTAL_EPS=$((TOTAL_EPS + EXEC_SEC))
|
|
||||||
TOTAL_EXECS=$((TOTAL_EXECS + execs_done))
|
|
||||||
TOTAL_CRASHES=$((TOTAL_CRASHES + saved_crashes))
|
|
||||||
TOTAL_HANGS=$((TOTAL_HANGS + saved_hangs))
|
|
||||||
TOTAL_PENDING=$((TOTAL_PENDING + pending_total))
|
|
||||||
TOTAL_PFAV=$((TOTAL_PFAV + pending_favs))
|
|
||||||
|
|
||||||
if [ "$last_find" -gt "$TOTAL_LAST_FIND" ]; then
|
|
||||||
TOTAL_LAST_FIND=$last_find
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$SUMMARY_ONLY" = "" ]; then
|
|
||||||
|
|
||||||
# Warnings in red
|
|
||||||
TIMEOUT_PERC=$((exec_timeout * 100 / execs_done))
|
|
||||||
if [ $TIMEOUT_PERC -ge 10 ]; then
|
|
||||||
echo " ${RED}timeout_ratio $TIMEOUT_PERC%${NC}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $EXEC_SEC -eq 0 ]; then
|
|
||||||
echo " ${YELLOW}no data yet, 0 execs/sec${NC}"
|
|
||||||
elif [ $EXEC_SEC -lt 100 ]; then
|
|
||||||
echo " ${RED}slow execution, $EXEC_SEC execs/sec${NC}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
fmt_duration $last_find && FMT_FIND=$DUR_STRING
|
|
||||||
fmt_duration $last_crash && FMT_CRASH=$DUR_STRING
|
|
||||||
fmt_duration $last_hang && FMT_HANG=$DUR_STRING
|
|
||||||
FMT_CWOP="not available"
|
|
||||||
test -n "$cycles_wo_finds" && {
|
test -n "$cycles_wo_finds" && {
|
||||||
test "$cycles_wo_finds" = 0 && FMT_CWOP="$cycles_wo_finds"
|
test -z "$FIRST" && TOTAL_WCOP="${TOTAL_WCOP}/"
|
||||||
test "$cycles_wo_finds" -gt 10 && FMT_CWOP="${YELLOW}$cycles_wo_finds${NC}"
|
TOTAL_WCOP="${TOTAL_WCOP}${cycles_wo_finds}"
|
||||||
test "$cycles_wo_finds" -gt 50 && FMT_CWOP="${RED}$cycles_wo_finds${NC}"
|
FIRST=
|
||||||
}
|
}
|
||||||
|
|
||||||
echo " last_find : $FMT_FIND"
|
if [ "$SUMMARY_ONLY" = "" ]; then
|
||||||
echo " last_crash : $FMT_CRASH"
|
|
||||||
echo " last_hang : $FMT_HANG"
|
echo ">>> $afl_banner instance: $DIR ($RUN_DAYS days, $RUN_HRS hrs) fuzzer PID: $fuzzer_pid <<<"
|
||||||
echo " cycles_wo_finds : $FMT_CWOP"
|
echo
|
||||||
|
|
||||||
CPU_USAGE=$(ps aux | grep $fuzzer_pid | grep -v grep | awk '{print $3}')
|
fi
|
||||||
MEM_USAGE=$(ps aux | grep $fuzzer_pid | grep -v grep | awk '{print $4}')
|
|
||||||
|
if ! kill -0 "$fuzzer_pid" 2>/dev/null; then
|
||||||
echo " cpu usage $CPU_USAGE%, memory usage $MEM_USAGE%"
|
|
||||||
echo " cycles $((cycles_done + 1)), lifetime speed $EXEC_SEC execs/sec, items $cur_item/$corpus_count (${PATH_PERC}%)"
|
IS_STARTING=
|
||||||
|
IS_DEAD=
|
||||||
if [ "$saved_crashes" = "0" ]; then
|
|
||||||
echo " pending $pending_favs/$pending_total, coverage $bitmap_cvg, no crashes yet"
|
if [ -e "$i" ] && [ -e "$j" ] && [ -n "$FUSER" ]; then
|
||||||
else
|
|
||||||
echo " pending $pending_favs/$pending_total, coverage $bitmap_cvg, crashes saved $saved_crashes (!)"
|
if [ "$i" -ot "$j" ]; then
|
||||||
|
|
||||||
|
# fuzzer_setup is newer than fuzzer_stats, maybe the instance is starting?
|
||||||
|
TMP_PID=`fuser -v "$DIRECTORY" 2>&1 | grep afl-fuzz`
|
||||||
|
|
||||||
|
if [ -n "$TMP_PID" ]; then
|
||||||
|
|
||||||
|
if [ "$SUMMARY_ONLY" = "" ]; then
|
||||||
|
|
||||||
|
echo " Instance is still starting up, skipping."
|
||||||
|
echo
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
START_CNT=$((START_CNT + 1))
|
||||||
|
last_find=0
|
||||||
|
IS_STARTING=1
|
||||||
|
|
||||||
|
if [ "$PROCESS_DEAD" = "" ]; then
|
||||||
|
|
||||||
|
continue
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$IS_STARTING" ]; then
|
||||||
|
|
||||||
|
if [ "$SUMMARY_ONLY" = "" ]; then
|
||||||
|
|
||||||
|
echo " Instance is dead or running remotely, skipping."
|
||||||
|
echo
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
DEAD_CNT=$((DEAD_CNT + 1))
|
||||||
|
IS_DEAD=1
|
||||||
|
last_find=0
|
||||||
|
|
||||||
|
if [ "$PROCESS_DEAD" = "" ]; then
|
||||||
|
|
||||||
|
continue
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
ALIVE_CNT=$((ALIVE_CNT + 1))
|
||||||
|
|
||||||
|
EXEC_SEC=0
|
||||||
|
test -z "$RUN_UNIX" -o "$RUN_UNIX" = 0 || EXEC_SEC=$((execs_done / RUN_UNIX))
|
||||||
|
PATH_PERC=$((cur_item * 100 / corpus_count))
|
||||||
|
|
||||||
|
TOTAL_TIME=$((TOTAL_TIME + RUN_UNIX))
|
||||||
|
TOTAL_EPS=$((TOTAL_EPS + EXEC_SEC))
|
||||||
|
TOTAL_EXECS=$((TOTAL_EXECS + execs_done))
|
||||||
|
TOTAL_CRASHES=$((TOTAL_CRASHES + saved_crashes))
|
||||||
|
TOTAL_HANGS=$((TOTAL_HANGS + saved_hangs))
|
||||||
|
TOTAL_PENDING=$((TOTAL_PENDING + pending_total))
|
||||||
|
TOTAL_PFAV=$((TOTAL_PFAV + pending_favs))
|
||||||
|
|
||||||
|
if [ "$last_find" -gt "$TOTAL_LAST_FIND" ]; then
|
||||||
|
TOTAL_LAST_FIND=$last_find
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$SUMMARY_ONLY" = "" ]; then
|
||||||
|
|
||||||
|
# Warnings in red
|
||||||
|
TIMEOUT_PERC=$((exec_timeout * 100 / execs_done))
|
||||||
|
if [ $TIMEOUT_PERC -ge 10 ]; then
|
||||||
|
echo " ${RED}timeout_ratio $TIMEOUT_PERC%${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $EXEC_SEC -eq 0 ]; then
|
||||||
|
echo " ${YELLOW}no data yet, 0 execs/sec${NC}"
|
||||||
|
elif [ $EXEC_SEC -lt 100 ]; then
|
||||||
|
echo " ${RED}slow execution, $EXEC_SEC execs/sec${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
fmt_duration $last_find && FMT_FIND=$DUR_STRING
|
||||||
|
fmt_duration $last_crash && FMT_CRASH=$DUR_STRING
|
||||||
|
fmt_duration $last_hang && FMT_HANG=$DUR_STRING
|
||||||
|
FMT_CWOP="not available"
|
||||||
|
test -n "$cycles_wo_finds" && {
|
||||||
|
test "$cycles_wo_finds" = 0 && FMT_CWOP="$cycles_wo_finds"
|
||||||
|
test "$cycles_wo_finds" -gt 10 && FMT_CWOP="${YELLOW}$cycles_wo_finds${NC}"
|
||||||
|
test "$cycles_wo_finds" -gt 50 && FMT_CWOP="${RED}$cycles_wo_finds${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
echo " last_find : $FMT_FIND"
|
||||||
|
echo " last_crash : $FMT_CRASH"
|
||||||
|
if [ -z "$MINIMAL_ONLY" ]; then
|
||||||
|
echo " last_hang : $FMT_HANG"
|
||||||
|
echo " cycles_wo_finds : $FMT_CWOP"
|
||||||
|
fi
|
||||||
|
echo " coverage : $COVERAGE%"
|
||||||
|
|
||||||
|
if [ -z "$MINIMAL_ONLY" ]; then
|
||||||
|
|
||||||
|
CPU_USAGE=$(ps aux | grep -w $fuzzer_pid | grep -v grep | awk '{print $3}')
|
||||||
|
MEM_USAGE=$(ps aux | grep -w $fuzzer_pid | grep -v grep | awk '{print $4}')
|
||||||
|
|
||||||
|
echo " cpu usage $CPU_USAGE%, memory usage $MEM_USAGE%"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " cycles $((cycles_done + 1)), lifetime speed $EXEC_SEC execs/sec, items $cur_item/$corpus_count (${PATH_PERC}%)"
|
||||||
|
|
||||||
|
if [ "$saved_crashes" = "0" ]; then
|
||||||
|
echo " pending $pending_favs/$pending_total, coverage $bitmap_cvg, no crashes yet"
|
||||||
|
else
|
||||||
|
echo " pending $pending_favs/$pending_total, coverage $bitmap_cvg, crashes saved $saved_crashes (!)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo
|
else
|
||||||
|
|
||||||
|
if [ ! -e "$i" -a -e "$j" ]; then
|
||||||
|
|
||||||
|
if [ '!' "$PROCESS_DEAD" = "" ]; then
|
||||||
|
ALIVE_CNT=$((ALIVE_CNT + 1))
|
||||||
|
fi
|
||||||
|
START_CNT=$((START_CNT + 1))
|
||||||
|
last_find=0
|
||||||
|
IS_STARTING=1
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
# Formatting for total time, time since last find, crash, and hang
|
# Formatting for total time, time since last find, crash, and hang
|
||||||
@ -254,7 +365,7 @@ EXECS_MILLION=$((TOTAL_EXECS / 1000 / 1000))
|
|||||||
EXECS_THOUSAND=$((TOTAL_EXECS / 1000 % 1000))
|
EXECS_THOUSAND=$((TOTAL_EXECS / 1000 % 1000))
|
||||||
if [ $EXECS_MILLION -gt 9 ]; then
|
if [ $EXECS_MILLION -gt 9 ]; then
|
||||||
FMT_EXECS="$EXECS_MILLION millions"
|
FMT_EXECS="$EXECS_MILLION millions"
|
||||||
elif [ $EXECS_MILLION -gt 0 ]; then
|
elif [ $EXECS_MILLION -gt 0 ]; then
|
||||||
FMT_EXECS="$EXECS_MILLION millions, $EXECS_THOUSAND thousands"
|
FMT_EXECS="$EXECS_MILLION millions, $EXECS_THOUSAND thousands"
|
||||||
else
|
else
|
||||||
FMT_EXECS="$EXECS_THOUSAND thousands"
|
FMT_EXECS="$EXECS_THOUSAND thousands"
|
||||||
@ -271,40 +382,56 @@ fmt_duration $TOTAL_LAST_FIND && TOTAL_LAST_FIND=$DUR_STRING
|
|||||||
test "$TOTAL_TIME" = "0" && TOTAL_TIME=1
|
test "$TOTAL_TIME" = "0" && TOTAL_TIME=1
|
||||||
|
|
||||||
if [ "$PROCESS_DEAD" = "" ]; then
|
if [ "$PROCESS_DEAD" = "" ]; then
|
||||||
|
|
||||||
TXT="excluded from stats"
|
TXT="excluded from stats"
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
TXT="included in stats"
|
TXT="included in stats"
|
||||||
ALIVE_CNT=$(($ALIVE_CNT - $DEAD_CNT))
|
ALIVE_CNT=$(($ALIVE_CNT - $DEAD_CNT - $START_CNT))
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Summary stats"
|
echo "Summary stats"
|
||||||
echo "============="
|
echo "============="
|
||||||
echo
|
if [ -z "$SUMMARY_ONLY" -o -z "$MINIMAL_ONLY" ]; then
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
|
||||||
echo " Fuzzers alive : $ALIVE_CNT"
|
echo " Fuzzers alive : $ALIVE_CNT"
|
||||||
|
|
||||||
|
if [ ! "$START_CNT" = "0" ]; then
|
||||||
|
echo " Starting up : $START_CNT ($TXT)"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ ! "$DEAD_CNT" = "0" ]; then
|
if [ ! "$DEAD_CNT" = "0" ]; then
|
||||||
echo " Dead or remote : $DEAD_CNT ($TXT)"
|
echo " Dead or remote : $DEAD_CNT ($TXT)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo " Total run time : $FMT_TIME"
|
echo " Total run time : $FMT_TIME"
|
||||||
echo " Total execs : $FMT_EXECS"
|
if [ -z "$MINIMAL_ONLY" ]; then
|
||||||
echo " Cumulative speed : $TOTAL_EPS execs/sec"
|
echo " Total execs : $FMT_EXECS"
|
||||||
|
echo " Cumulative speed : $TOTAL_EPS execs/sec"
|
||||||
|
fi
|
||||||
if [ "$ALIVE_CNT" -gt "0" ]; then
|
if [ "$ALIVE_CNT" -gt "0" ]; then
|
||||||
echo " Average speed : $((TOTAL_EPS / ALIVE_CNT)) execs/sec"
|
echo " Average speed : $((TOTAL_EPS / ALIVE_CNT)) execs/sec"
|
||||||
fi
|
fi
|
||||||
echo " Pending items : $TOTAL_PFAV faves, $TOTAL_PENDING total"
|
if [ -z "$MINIMAL_ONLY" ]; then
|
||||||
|
echo " Pending items : $TOTAL_PFAV faves, $TOTAL_PENDING total"
|
||||||
if [ "$ALIVE_CNT" -gt "1" ]; then
|
|
||||||
echo " Pending per fuzzer : $((TOTAL_PFAV/ALIVE_CNT)) faves, $((TOTAL_PENDING/ALIVE_CNT)) total (on average)"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$ALIVE_CNT" -gt "1" -o -n "$MINIMAL_ONLY" ]; then
|
||||||
|
if [ "$ALIVE_CNT" -gt "0" ]; then
|
||||||
|
echo " Pending per fuzzer : $((TOTAL_PFAV/ALIVE_CNT)) faves, $((TOTAL_PENDING/ALIVE_CNT)) total (on average)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " Coverage reached : ${TOTAL_COVERAGE}%"
|
||||||
echo " Crashes saved : $TOTAL_CRASHES"
|
echo " Crashes saved : $TOTAL_CRASHES"
|
||||||
echo " Hangs saved : $TOTAL_HANGS"
|
if [ -z "$MINIMAL_ONLY" ]; then
|
||||||
echo "Cycles without finds : $TOTAL_WCOP"
|
echo " Hangs saved : $TOTAL_HANGS"
|
||||||
|
echo "Cycles without finds : $TOTAL_WCOP"
|
||||||
|
fi
|
||||||
echo " Time without finds : $TOTAL_LAST_FIND"
|
echo " Time without finds : $TOTAL_LAST_FIND"
|
||||||
echo
|
echo
|
||||||
|
|
||||||
|
9
benchmark/COMPARISON.md
Normal file
9
benchmark/COMPARISON.md
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
CPU | MHz | threads | singlecore | multicore | afl-*-config |
|
||||||
|
====================================================|=======|=========|============|===========|==============|
|
||||||
|
Raspberry Pi 5 | 2400 | 4 | 25786 | 101114 | both |
|
||||||
|
AMD EPYC 7282 16-Core Processor | 3194 | 32 | 87199 | 769001 | both |
|
||||||
|
AMD Ryzen 5 PRO 4650G with Radeon Graphics | 3700 | 12 | 95356 | 704840 | both |
|
||||||
|
Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz | 4995 | 16 | 120064 | 1168943 | both |
|
||||||
|
12th Gen Intel(R) Core(TM) i7-1270P | 4761 | 16 | 149778 | 641219 | both |
|
||||||
|
AMD Ryzen 9 5950X 16-Core Processor | 4792 | 32 | 161690 | 2339763 | both |
|
||||||
|
Apple Mac Studio M2 Ultra 2023, Linux VM guest | 3500 | 16 | 163570 | 1157465 | both |
|
59
benchmark/README.md
Normal file
59
benchmark/README.md
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
# American Fuzzy Lop plus plus (AFL++)
|
||||||
|
|
||||||
|
## benchmarking
|
||||||
|
|
||||||
|
This directory contains benchmarking tools that allow you to compare one machine
|
||||||
|
with another in terms of raw ability to execute a fuzzing target repeatedly.
|
||||||
|
|
||||||
|
To achieve this, we use a sample program ("test-instr.c") where each path is
|
||||||
|
equally likely, supply it a single seed, and tell AFL to exit after one run of
|
||||||
|
deterministic mutations against that seed.
|
||||||
|
|
||||||
|
**Note that this is not a real-world scenario!**
|
||||||
|
Because the target does basically nothing this is rather a stress test on
|
||||||
|
Kernel I/O / context switching.
|
||||||
|
For this reason you will not see a difference if you run the multicore test
|
||||||
|
with 20 or 40 threads - or even see the performance decline the more threads
|
||||||
|
(`-f` parameter) you use. In a real-world scenario you can expect to gain
|
||||||
|
exec/s until 40-60 threads (if you have that many available on your CPU).
|
||||||
|
|
||||||
|
Usage example:
|
||||||
|
|
||||||
|
```
|
||||||
|
cd aflplusplus/benchmark
|
||||||
|
python3 benchmark.py
|
||||||
|
[*] Ready, starting benchmark...
|
||||||
|
[*] Compiling the test-instr-persist-shmem fuzzing harness for the benchmark to use.
|
||||||
|
[*] singlecore test-instr-persist-shmem run 1 of 2, execs/s: 124883.62
|
||||||
|
[*] singlecore test-instr-persist-shmem run 2 of 2, execs/s: 126704.93
|
||||||
|
[*] Average execs/sec for this test across all runs was: 125794.28
|
||||||
|
[*] Using 16 fuzzers for multicore fuzzing (use --fuzzers to override).
|
||||||
|
[*] multicore test-instr-persist-shmem run 1 of 2, execs/s: 1179822.66
|
||||||
|
[*] multicore test-instr-persist-shmem run 2 of 2, execs/s: 1175584.09
|
||||||
|
[*] Average execs/sec for this test across all runs was: 1177703.38
|
||||||
|
[*] Results have been written to the benchmark-results.jsonl file.
|
||||||
|
[*] Results have been written to the COMPARISON.md file.
|
||||||
|
```
|
||||||
|
|
||||||
|
By default, the script will use a number of parallel fuzzers equal to your
|
||||||
|
available CPUs/threads (change with `--fuzzers`), and will perform each test
|
||||||
|
three times and average the result (change with `--runs`).
|
||||||
|
|
||||||
|
The script will use multicore fuzzing instead of singlecore by default (change
|
||||||
|
with `--mode singlecore`) and use a persistent-mode shared memory harness for
|
||||||
|
optimal speed (change with `--target test-instr`).
|
||||||
|
|
||||||
|
Feel free to submit the resulting line for your CPU added to the COMPARISON.md
|
||||||
|
and benchmark-results.jsonl files back to AFL++ in a pull request.
|
||||||
|
|
||||||
|
Each run writes results to [benchmark-results.jsonl](benchmark-results.jsonl)
|
||||||
|
in [JSON Lines](https://jsonlines.org/) format, ready to be pulled in to other
|
||||||
|
tools such as [jq -cs](https://jqlang.github.io/jq/) or
|
||||||
|
[pandas](https://pandas.pydata.org/) for analysis.
|
||||||
|
|
||||||
|
## Data analysis
|
||||||
|
|
||||||
|
There is sample data in [benchmark-results.jsonl](benchmark-results.jsonl), and
|
||||||
|
a Jupyter notebook for exploring the results and suggesting their meaning at
|
||||||
|
[benchmark.ipynb](benchmark.ipynb).
|
||||||
|
|
420
benchmark/benchmark-results.jsonl
Normal file
420
benchmark/benchmark-results.jsonl
Normal file
@ -0,0 +1,420 @@
|
|||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4788.77, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"singlecore": {"execs_per_sec": 9845.64, "execs_total": 98545, "fuzzers_used": 1}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4989.281, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"singlecore": {"execs_per_sec": 125682.73, "execs_total": 1257330, "fuzzers_used": 1}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4799.415, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 120293.77, "execs_total": 1203058, "fuzzers_used": 1}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4703.293, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 231429.96, "execs_total": 2314531, "fuzzers_used": 2}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4800.375, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 346759.33, "execs_total": 3468290, "fuzzers_used": 3}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4915.27, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 455340.06, "execs_total": 4554427, "fuzzers_used": 4}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4701.051, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 568405.15, "execs_total": 5685076, "fuzzers_used": 5}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4704.999, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 678030.96, "execs_total": 6781781, "fuzzers_used": 6}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4800.438, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 782585.04, "execs_total": 7827974, "fuzzers_used": 7}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4794.851, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 893618.35, "execs_total": 8938405, "fuzzers_used": 8}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.383, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 956026.15, "execs_total": 9562791, "fuzzers_used": 9}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.352, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 984942.13, "execs_total": 9853724, "fuzzers_used": 10}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4987.681, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1016758.62, "execs_total": 10172892, "fuzzers_used": 11}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.196, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1053087.9, "execs_total": 10536439, "fuzzers_used": 12}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4995.211, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1085797.87, "execs_total": 10865305, "fuzzers_used": 13}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.577, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1110640.2, "execs_total": 11114033, "fuzzers_used": 14}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4799.955, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1138984.22, "execs_total": 11397389, "fuzzers_used": 15}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.247, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1168943.19, "execs_total": 11699439, "fuzzers_used": 16}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4994.207, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1135093.91, "execs_total": 11360219, "fuzzers_used": 17}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4994.47, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1160430.45, "execs_total": 11614570, "fuzzers_used": 18}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4991.188, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1155769.97, "execs_total": 11569540, "fuzzers_used": 19}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.63, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1150156.26, "execs_total": 11509407, "fuzzers_used": 20}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.227, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1136873.58, "execs_total": 11377110, "fuzzers_used": 21}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.317, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1112404.25, "execs_total": 11134086, "fuzzers_used": 22}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 5000.851, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1143131.72, "execs_total": 11440024, "fuzzers_used": 23}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.261, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1143931.38, "execs_total": 11448786, "fuzzers_used": 24}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.259, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1102090.61, "execs_total": 11028561, "fuzzers_used": 25}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.149, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1116518.7, "execs_total": 11172681, "fuzzers_used": 26}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4801.01, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1099224.19, "execs_total": 11000537, "fuzzers_used": 27}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.448, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1114945.37, "execs_total": 11158802, "fuzzers_used": 28}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.663, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1110889.91, "execs_total": 11118113, "fuzzers_used": 29}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.741, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1058548.28, "execs_total": 10595540, "fuzzers_used": 30}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.852, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1119804.85, "execs_total": 11208645, "fuzzers_used": 31}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.417, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1118828.99, "execs_total": 11197813, "fuzzers_used": 32}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 5000.682, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1093426.61, "execs_total": 10942324, "fuzzers_used": 33}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.248, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1108123.59, "execs_total": 11090315, "fuzzers_used": 34}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.053, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1041486.52, "execs_total": 10422413, "fuzzers_used": 35}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.299, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1092395.61, "execs_total": 10932107, "fuzzers_used": 36}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.081, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"singlecore": {"execs_per_sec": 8278.64, "execs_total": 82894, "fuzzers_used": 1}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4994.118, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 90641.62, "execs_total": 906960, "fuzzers_used": 1}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.588, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 178184.19, "execs_total": 1782109, "fuzzers_used": 2}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.204, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 262652.86, "execs_total": 2627228, "fuzzers_used": 3}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.829, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 339119.32, "execs_total": 3391956, "fuzzers_used": 4}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.205, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 420239.94, "execs_total": 4202989, "fuzzers_used": 5}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.0, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 498062.02, "execs_total": 4981367, "fuzzers_used": 6}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 5000.407, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 578495.44, "execs_total": 5786691, "fuzzers_used": 7}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 5002.997, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 661836.22, "execs_total": 6620265, "fuzzers_used": 8}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.952, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 684808.49, "execs_total": 6850000, "fuzzers_used": 9}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.99, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 707094.65, "execs_total": 7074048, "fuzzers_used": 10}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.003, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 732106.17, "execs_total": 7325352, "fuzzers_used": 11}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.488, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 752910.17, "execs_total": 7533775, "fuzzers_used": 12}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 5003.679, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 776179.85, "execs_total": 7767507, "fuzzers_used": 13}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4995.45, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 797520.58, "execs_total": 7981534, "fuzzers_used": 14}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.313, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 822235.41, "execs_total": 8228941, "fuzzers_used": 15}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.723, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 843897.51, "execs_total": 8445693, "fuzzers_used": 16}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.488, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 843177.15, "execs_total": 8438493, "fuzzers_used": 17}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.299, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 844779.09, "execs_total": 8456834, "fuzzers_used": 18}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.662, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 846060.74, "execs_total": 8465728, "fuzzers_used": 19}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.922, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 847556.23, "execs_total": 8482537, "fuzzers_used": 20}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.098, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 844022.97, "execs_total": 8447616, "fuzzers_used": 21}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.352, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 845818.7, "execs_total": 8464237, "fuzzers_used": 22}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4995.457, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 844118.27, "execs_total": 8448858, "fuzzers_used": 23}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.019, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 837189.02, "execs_total": 8379746, "fuzzers_used": 24}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4995.513, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 834712.31, "execs_total": 8354719, "fuzzers_used": 25}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.891, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 836344.12, "execs_total": 8370166, "fuzzers_used": 26}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.494, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 827784.91, "execs_total": 8283782, "fuzzers_used": 27}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.761, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 828641.27, "execs_total": 8293602, "fuzzers_used": 28}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.115, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 826123.67, "execs_total": 8268211, "fuzzers_used": 29}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4993.515, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 817765.77, "execs_total": 8184720, "fuzzers_used": 30}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.555, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 816556.66, "execs_total": 8171816, "fuzzers_used": 31}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.999, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 812661.77, "execs_total": 8132767, "fuzzers_used": 32}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4995.561, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 805352.16, "execs_total": 8060482, "fuzzers_used": 33}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.938, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 815888.26, "execs_total": 8164454, "fuzzers_used": 34}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.951, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 812348.56, "execs_total": 8129441, "fuzzers_used": 35}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4999.444, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 817278.03, "execs_total": 8178918, "fuzzers_used": 36}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.133, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 91247.98, "execs_total": 912571, "fuzzers_used": 1}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.029, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 177503.74, "execs_total": 1775569, "fuzzers_used": 2}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.516, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 263559.94, "execs_total": 2635863, "fuzzers_used": 3}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.946, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 339880.84, "execs_total": 3399660, "fuzzers_used": 4}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.539, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 418569.46, "execs_total": 4186780, "fuzzers_used": 5}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4995.53, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 496208.2, "execs_total": 4962992, "fuzzers_used": 6}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.015, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 580870.62, "execs_total": 5809953, "fuzzers_used": 7}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.662, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 662910.24, "execs_total": 6631172, "fuzzers_used": 8}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.8, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 683654.43, "execs_total": 6838092, "fuzzers_used": 9}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.849, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 707555.71, "execs_total": 7078261, "fuzzers_used": 10}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 5007.628, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 732211.35, "execs_total": 7325661, "fuzzers_used": 11}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4981.601, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 756121.92, "execs_total": 7565074, "fuzzers_used": 12}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.041, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 774101.97, "execs_total": 7745053, "fuzzers_used": 13}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 5004.554, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 796439.54, "execs_total": 7972225, "fuzzers_used": 14}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.433, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 822652.36, "execs_total": 8232836, "fuzzers_used": 15}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.063, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 846458.67, "execs_total": 8473949, "fuzzers_used": 16}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.85, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 847285.31, "execs_total": 8479183, "fuzzers_used": 17}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.627, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 847278.34, "execs_total": 8481577, "fuzzers_used": 18}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 5002.007, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 849345.2, "execs_total": 8500890, "fuzzers_used": 19}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.497, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 848498.04, "execs_total": 8491840, "fuzzers_used": 20}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.084, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 848737.28, "execs_total": 8494747, "fuzzers_used": 21}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4995.872, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 847610.49, "execs_total": 8484864, "fuzzers_used": 22}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.036, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 846329.82, "execs_total": 8471670, "fuzzers_used": 23}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4995.731, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 839140.26, "execs_total": 8397496, "fuzzers_used": 24}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4988.743, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 843648.98, "execs_total": 8444091, "fuzzers_used": 25}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 5004.084, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 835215.19, "execs_total": 8359949, "fuzzers_used": 26}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.828, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 833416.5, "execs_total": 8340275, "fuzzers_used": 27}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4995.795, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 826512.71, "execs_total": 8272574, "fuzzers_used": 28}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.022, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 828656.04, "execs_total": 8292856, "fuzzers_used": 29}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.939, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 823292.55, "execs_total": 8239885, "fuzzers_used": 30}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4995.233, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 824657.95, "execs_total": 8252812, "fuzzers_used": 31}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4995.909, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 817807.44, "execs_total": 8183838, "fuzzers_used": 32}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4995.834, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 815344.89, "execs_total": 8160193, "fuzzers_used": 33}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.968, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 814327.97, "execs_total": 8149984, "fuzzers_used": 34}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.625, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 819612.64, "execs_total": 8202605, "fuzzers_used": 35}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.404, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 813155.19, "execs_total": 8137546, "fuzzers_used": 36}}}}
|
||||||
|
{"config": {"afl_persistent_config": false, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 5001.911, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"singlecore": {"execs_per_sec": 8391.52, "execs_total": 83932, "fuzzers_used": 1}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4980.444, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"singlecore": {"execs_per_sec": 10754.79, "execs_total": 107720, "fuzzers_used": 1}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 5000.011, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 126201.28, "execs_total": 1262139, "fuzzers_used": 1}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4993.941, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 245701.79, "execs_total": 2457750, "fuzzers_used": 2}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4983.297, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 361167.18, "execs_total": 3612273, "fuzzers_used": 3}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4994.008, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 475221.97, "execs_total": 4752815, "fuzzers_used": 4}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.977, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 586393.43, "execs_total": 5865460, "fuzzers_used": 5}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.97, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 690946.36, "execs_total": 6910846, "fuzzers_used": 6}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.017, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 801029.31, "execs_total": 8011774, "fuzzers_used": 7}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.617, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 913876.89, "execs_total": 9140715, "fuzzers_used": 8}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.997, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 946293.38, "execs_total": 9464848, "fuzzers_used": 9}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.162, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 980031.45, "execs_total": 9803628, "fuzzers_used": 10}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4994.223, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1015241.63, "execs_total": 10157948, "fuzzers_used": 11}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4994.761, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1042290.69, "execs_total": 10427527, "fuzzers_used": 12}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.045, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1073567.99, "execs_total": 10739590, "fuzzers_used": 13}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4995.484, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1119312.88, "execs_total": 11199130, "fuzzers_used": 14}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4994.729, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1156363.75, "execs_total": 11573213, "fuzzers_used": 15}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.146, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1183713.3, "execs_total": 11848245, "fuzzers_used": 16}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.048, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1187603.56, "execs_total": 11886825, "fuzzers_used": 17}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4986.845, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1190369.21, "execs_total": 11914954, "fuzzers_used": 18}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4985.364, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1188828.6, "execs_total": 11902947, "fuzzers_used": 19}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.108, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1187617.46, "execs_total": 11887934, "fuzzers_used": 20}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.754, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1188490.16, "execs_total": 11894967, "fuzzers_used": 21}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.129, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1184138.92, "execs_total": 11850653, "fuzzers_used": 22}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.048, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1189374.23, "execs_total": 11903803, "fuzzers_used": 23}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.261, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1178947.43, "execs_total": 11800850, "fuzzers_used": 24}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.422, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1173540.28, "execs_total": 11743120, "fuzzers_used": 25}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.909, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1168471.78, "execs_total": 11696401, "fuzzers_used": 26}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4966.966, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1169320.61, "execs_total": 11703900, "fuzzers_used": 27}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.207, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1165434.17, "execs_total": 11661131, "fuzzers_used": 28}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4999.554, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1161113.26, "execs_total": 11619771, "fuzzers_used": 29}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4994.822, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1155066.44, "execs_total": 11560147, "fuzzers_used": 30}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.061, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1145196.35, "execs_total": 11461349, "fuzzers_used": 31}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.006, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1151794.28, "execs_total": 11526764, "fuzzers_used": 32}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4995.939, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1151652.84, "execs_total": 11526720, "fuzzers_used": 33}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.002, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1153215.56, "execs_total": 11539780, "fuzzers_used": 34}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.456, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1146882.5, "execs_total": 11478112, "fuzzers_used": 35}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": false, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.183, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1155253.95, "execs_total": 11561694, "fuzzers_used": 36}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4848.974, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 10714.79, "execs_total": 107180, "fuzzers_used": 1}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.353, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 20493.07, "execs_total": 205279, "fuzzers_used": 2}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.198, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 29660.06, "execs_total": 297006, "fuzzers_used": 3}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.015, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 37875.57, "execs_total": 379078, "fuzzers_used": 4}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.975, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 46326.75, "execs_total": 463731, "fuzzers_used": 5}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.579, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 54595.48, "execs_total": 546283, "fuzzers_used": 6}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4983.814, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 62720.98, "execs_total": 628151, "fuzzers_used": 7}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.617, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 70777.99, "execs_total": 708505, "fuzzers_used": 8}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.286, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 74236.02, "execs_total": 743157, "fuzzers_used": 9}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4799.516, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 78134.94, "execs_total": 782272, "fuzzers_used": 10}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4911.536, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 81886.33, "execs_total": 819649, "fuzzers_used": 11}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.199, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 85923.44, "execs_total": 860033, "fuzzers_used": 12}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.447, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 89696.95, "execs_total": 897746, "fuzzers_used": 13}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.496, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 93540.52, "execs_total": 936217, "fuzzers_used": 14}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.936, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 97641.51, "execs_total": 977546, "fuzzers_used": 15}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4991.829, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 101692.65, "execs_total": 1017683, "fuzzers_used": 16}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.489, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 101236.75, "execs_total": 1013188, "fuzzers_used": 17}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.352, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 101006.28, "execs_total": 1011004, "fuzzers_used": 18}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4999.894, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 99952.26, "execs_total": 1000431, "fuzzers_used": 19}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4942.12, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 99798.64, "execs_total": 998795, "fuzzers_used": 20}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.686, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 99018.86, "execs_total": 991012, "fuzzers_used": 21}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.308, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 98600.87, "execs_total": 986643, "fuzzers_used": 22}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.683, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 98634.02, "execs_total": 987082, "fuzzers_used": 23}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.457, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 98352.9, "execs_total": 984071, "fuzzers_used": 24}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.733, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 98118.63, "execs_total": 981865, "fuzzers_used": 25}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4994.474, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 97752.45, "execs_total": 978192, "fuzzers_used": 26}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4853.378, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 97864.07, "execs_total": 979334, "fuzzers_used": 27}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.484, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 97821.8, "execs_total": 978814, "fuzzers_used": 28}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4996.738, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 97564.87, "execs_total": 976335, "fuzzers_used": 29}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.341, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 98508.1, "execs_total": 985853, "fuzzers_used": 30}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.773, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 98238.96, "execs_total": 983062, "fuzzers_used": 31}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.037, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 98363.93, "execs_total": 984411, "fuzzers_used": 32}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.448, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 96758.69, "execs_total": 968157, "fuzzers_used": 33}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.238, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 96327.0, "execs_total": 964046, "fuzzers_used": 34}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4997.619, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 95913.98, "execs_total": 959817, "fuzzers_used": 35}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "i9-9900k, 16GB DDR4-3000, Arch Linux", "compiler": "clang version 16.0.6", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4998.076, "cpu_model": "Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz", "cpu_threads": 16}, "targets": {"test-instr": {"multicore": {"execs_per_sec": 95871.39, "execs_total": 959318, "fuzzers_used": 36}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr": {"singlecore": {"execs_per_sec": 5741.89, "execs_total": 57505, "fuzzers_used": 1}}, "test-instr-persist-shmem": {"singlecore": {"execs_per_sec": 163570.34, "execs_total": 1635867, "fuzzers_used": 1}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 164224.43, "execs_total": 1642737, "fuzzers_used": 1}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 167222.58, "execs_total": 1672393, "fuzzers_used": 1}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 306547.24, "execs_total": 3065934, "fuzzers_used": 2}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 436010.2, "execs_total": 4360827, "fuzzers_used": 3}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 536415.92, "execs_total": 5365101, "fuzzers_used": 4}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 622104.43, "execs_total": 6222784, "fuzzers_used": 5}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 729436.2, "execs_total": 7295214, "fuzzers_used": 6}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 820258.88, "execs_total": 8203409, "fuzzers_used": 7}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 884746.31, "execs_total": 8848458, "fuzzers_used": 8}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 947308.55, "execs_total": 9474351, "fuzzers_used": 9}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 985953.62, "execs_total": 9860922, "fuzzers_used": 10}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1009716.71, "execs_total": 10098454, "fuzzers_used": 11}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1041437.1, "execs_total": 10415844, "fuzzers_used": 12}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1068180.17, "execs_total": 10683116, "fuzzers_used": 13}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1108873.82, "execs_total": 11089926, "fuzzers_used": 14}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1134135.0, "execs_total": 11354464, "fuzzers_used": 15}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1157465.79, "execs_total": 11582583, "fuzzers_used": 16}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1122785.14, "execs_total": 11235138, "fuzzers_used": 17}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1094132.3, "execs_total": 10950326, "fuzzers_used": 18}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1041102.04, "execs_total": 10420102, "fuzzers_used": 19}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1022474.0, "execs_total": 10236560, "fuzzers_used": 20}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 960681.48, "execs_total": 9618077, "fuzzers_used": 21}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 853680.22, "execs_total": 8545665, "fuzzers_used": 22}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 799719.75, "execs_total": 8005071, "fuzzers_used": 23}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 797512.71, "execs_total": 7983371, "fuzzers_used": 24}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 659476.15, "execs_total": 6601599, "fuzzers_used": 25}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 560625.96, "execs_total": 5612503, "fuzzers_used": 26}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 537839.62, "execs_total": 5381649, "fuzzers_used": 27}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 510072.53, "execs_total": 5106056, "fuzzers_used": 28}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 408667.49, "execs_total": 4091795, "fuzzers_used": 29}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 453849.79, "execs_total": 4542311, "fuzzers_used": 30}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 405935.72, "execs_total": 4064268, "fuzzers_used": 31}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 579312.77, "execs_total": 5798912, "fuzzers_used": 32}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 470961.79, "execs_total": 4715503, "fuzzers_used": 33}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 436380.3, "execs_total": 4368099, "fuzzers_used": 34}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 439819.17, "execs_total": 4405705, "fuzzers_used": 35}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "Apple Mac Studio M2 Ultra 2023, Linux VM guest, 16 threads assigned to VM", "compiler": "Ubuntu clang version 16.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3500.0, "cpu_model": "Apple Mac Studio M2 Ultra 2023", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 407460.31, "execs_total": 4084528, "fuzzers_used": 36}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3514.326, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 119469.35, "execs_total": 1194813, "fuzzers_used": 1}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.748, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 237177.2, "execs_total": 2372250, "fuzzers_used": 2}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3455.647, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 358305.9, "execs_total": 3583655, "fuzzers_used": 3}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.67, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 475974.21, "execs_total": 4760218, "fuzzers_used": 4}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.813, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 594372.12, "execs_total": 5944793, "fuzzers_used": 5}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3584.545, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 711732.18, "execs_total": 7118626, "fuzzers_used": 6}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.377, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 824314.1, "execs_total": 8245020, "fuzzers_used": 7}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.535, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 936358.89, "execs_total": 9365349, "fuzzers_used": 8}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3469.977, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1010050.77, "execs_total": 10102421, "fuzzers_used": 9}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.644, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1087333.72, "execs_total": 10875294, "fuzzers_used": 10}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3473.935, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1180500.37, "execs_total": 11807345, "fuzzers_used": 11}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3334.193, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1284695.8, "execs_total": 12849848, "fuzzers_used": 12}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3436.186, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1377659.89, "execs_total": 13779252, "fuzzers_used": 13}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3597.27, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1471828.49, "execs_total": 14721973, "fuzzers_used": 14}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3466.893, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1557812.41, "execs_total": 15581135, "fuzzers_used": 15}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3561.127, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1634678.08, "execs_total": 16349952, "fuzzers_used": 16}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.848, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1518908.2, "execs_total": 15192488, "fuzzers_used": 17}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3591.34, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1470513.71, "execs_total": 14709207, "fuzzers_used": 18}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.619, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1414625.05, "execs_total": 14156400, "fuzzers_used": 19}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3597.99, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1355481.53, "execs_total": 13565462, "fuzzers_used": 20}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.232, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1292684.55, "execs_total": 12934801, "fuzzers_used": 21}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3442.34, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1234478.66, "execs_total": 12352256, "fuzzers_used": 22}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.796, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1174550.37, "execs_total": 11752094, "fuzzers_used": 23}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3494.124, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1125218.66, "execs_total": 11258330, "fuzzers_used": 24}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3350.261, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 1022021.81, "execs_total": 10226548, "fuzzers_used": 25}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.929, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 990339.75, "execs_total": 9908883, "fuzzers_used": 26}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3484.153, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 953861.38, "execs_total": 9543479, "fuzzers_used": 27}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3393.24, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 942151.65, "execs_total": 9426176, "fuzzers_used": 28}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3434.881, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 927072.1, "execs_total": 9275954, "fuzzers_used": 29}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3444.453, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 908669.71, "execs_total": 9092225, "fuzzers_used": 30}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3442.593, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 893432.26, "execs_total": 8938840, "fuzzers_used": 31}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3380.389, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 876618.01, "execs_total": 8770325, "fuzzers_used": 32}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3586.135, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 834676.33, "execs_total": 8350992, "fuzzers_used": 33}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3597.956, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 830200.25, "execs_total": 8306463, "fuzzers_used": 34}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3597.94, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 821667.96, "execs_total": 8220135, "fuzzers_used": 35}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3591.052, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 829075.87, "execs_total": 8294543, "fuzzers_used": 36}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3573.541, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 814422.62, "execs_total": 8148191, "fuzzers_used": 37}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.902, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 806770.85, "execs_total": 8071030, "fuzzers_used": 38}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3488.496, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 794433.8, "execs_total": 7947600, "fuzzers_used": 39}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3470.314, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 781022.61, "execs_total": 7813248, "fuzzers_used": 40}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.761, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 754394.26, "execs_total": 7546321, "fuzzers_used": 41}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.125, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 763116.33, "execs_total": 7634125, "fuzzers_used": 42}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.437, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 759323.54, "execs_total": 7596118, "fuzzers_used": 43}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.079, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 764198.14, "execs_total": 7644920, "fuzzers_used": 44}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.619, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 757777.51, "execs_total": 7580317, "fuzzers_used": 45}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3425.09, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 749357.06, "execs_total": 7496189, "fuzzers_used": 46}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.567, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 732083.87, "execs_total": 7323543, "fuzzers_used": 47}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.365, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 721133.28, "execs_total": 7214084, "fuzzers_used": 48}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.699, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 658925.82, "execs_total": 6591967, "fuzzers_used": 49}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3597.889, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 659890.97, "execs_total": 6601888, "fuzzers_used": 50}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3381.676, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 655176.63, "execs_total": 6554987, "fuzzers_used": 51}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3587.51, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 660889.12, "execs_total": 6612265, "fuzzers_used": 52}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3546.407, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 651803.54, "execs_total": 6520961, "fuzzers_used": 53}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3439.83, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 659012.17, "execs_total": 6593396, "fuzzers_used": 54}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3387.899, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 660016.18, "execs_total": 6603558, "fuzzers_used": 55}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3444.077, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 655931.36, "execs_total": 6561865, "fuzzers_used": 56}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3597.775, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 618906.23, "execs_total": 6192465, "fuzzers_used": 57}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.33, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 614008.28, "execs_total": 6143464, "fuzzers_used": 58}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.487, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 622400.85, "execs_total": 6227304, "fuzzers_used": 59}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.123, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 624883.06, "execs_total": 6251875, "fuzzers_used": 60}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3590.657, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 628668.94, "execs_total": 6289966, "fuzzers_used": 61}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.335, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 628892.17, "execs_total": 6292361, "fuzzers_used": 62}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.368, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 622065.07, "execs_total": 6224119, "fuzzers_used": 63}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3413.262, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 625528.06, "execs_total": 6258762, "fuzzers_used": 64}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.18, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 602248.19, "execs_total": 6025927, "fuzzers_used": 65}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3591.981, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 597615.89, "execs_total": 5979708, "fuzzers_used": 66}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3600.012, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 607270.98, "execs_total": 6076233, "fuzzers_used": 67}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3507.753, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 608945.09, "execs_total": 6092446, "fuzzers_used": 68}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.845, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 611736.03, "execs_total": 6121207, "fuzzers_used": 69}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3412.629, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 615031.23, "execs_total": 6153592, "fuzzers_used": 70}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3443.261, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 608202.64, "execs_total": 6084885, "fuzzers_used": 71}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.439, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 614339.09, "execs_total": 6146152, "fuzzers_used": 72}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3379.556, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 587046.59, "execs_total": 5873881, "fuzzers_used": 73}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.574, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 587238.27, "execs_total": 5875646, "fuzzers_used": 74}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.098, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 594097.56, "execs_total": 5944036, "fuzzers_used": 75}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3587.762, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 598450.35, "execs_total": 5987756, "fuzzers_used": 76}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.629, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 600430.29, "execs_total": 6007598, "fuzzers_used": 77}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3362.161, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 602014.19, "execs_total": 6023649, "fuzzers_used": 78}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3588.173, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 606146.9, "execs_total": 6065033, "fuzzers_used": 79}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3591.159, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 599360.46, "execs_total": 5997023, "fuzzers_used": 80}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3503.299, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 574792.78, "execs_total": 5751470, "fuzzers_used": 81}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3584.593, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 578265.29, "execs_total": 5785927, "fuzzers_used": 82}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3401.073, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 589985.07, "execs_total": 5903506, "fuzzers_used": 83}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3468.764, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 589281.87, "execs_total": 5895767, "fuzzers_used": 84}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3466.115, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 596581.77, "execs_total": 5969747, "fuzzers_used": 85}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3590.706, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 589017.68, "execs_total": 5893108, "fuzzers_used": 86}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3521.556, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 593403.75, "execs_total": 5937422, "fuzzers_used": 87}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.254, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 601611.06, "execs_total": 6019864, "fuzzers_used": 88}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.211, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 576056.15, "execs_total": 5763322, "fuzzers_used": 89}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.489, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 576151.97, "execs_total": 5764687, "fuzzers_used": 90}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.444, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 583769.1, "execs_total": 5841115, "fuzzers_used": 91}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3446.364, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 585285.47, "execs_total": 5856103, "fuzzers_used": 92}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3562.852, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 581524.67, "execs_total": 5818808, "fuzzers_used": 93}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3597.403, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 596383.31, "execs_total": 5967460, "fuzzers_used": 94}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3421.421, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 596239.29, "execs_total": 5965882, "fuzzers_used": 95}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3276.519, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 595382.67, "execs_total": 5957136, "fuzzers_used": 96}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.029, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 586144.68, "execs_total": 5865411, "fuzzers_used": 97}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3590.48, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 579467.06, "execs_total": 5798123, "fuzzers_used": 98}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3597.89, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 572801.45, "execs_total": 5731838, "fuzzers_used": 99}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.31, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 573916.1, "execs_total": 5742901, "fuzzers_used": 100}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3589.943, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 565823.06, "execs_total": 5660910, "fuzzers_used": 101}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3391.191, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 561854.84, "execs_total": 5621778, "fuzzers_used": 102}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3372.775, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 562717.02, "execs_total": 5630085, "fuzzers_used": 103}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3365.142, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 559273.67, "execs_total": 5596400, "fuzzers_used": 104}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3591.44, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 553209.58, "execs_total": 5535044, "fuzzers_used": 105}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3563.12, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 547678.42, "execs_total": 5480061, "fuzzers_used": 106}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3477.381, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 552316.36, "execs_total": 5526570, "fuzzers_used": 107}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.467, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 545257.97, "execs_total": 5455157, "fuzzers_used": 108}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3344.258, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 549190.03, "execs_total": 5495511, "fuzzers_used": 109}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3421.467, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 546845.0, "execs_total": 5472086, "fuzzers_used": 110}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.157, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 545239.46, "execs_total": 5455236, "fuzzers_used": 111}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.389, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 543139.24, "execs_total": 5434484, "fuzzers_used": 112}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3461.931, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 543252.43, "execs_total": 5435319, "fuzzers_used": 113}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3354.728, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 538720.77, "execs_total": 5390315, "fuzzers_used": 114}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.185, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 536681.55, "execs_total": 5369963, "fuzzers_used": 115}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.862, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 540956.43, "execs_total": 5412850, "fuzzers_used": 116}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.403, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 536348.84, "execs_total": 5367054, "fuzzers_used": 117}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.449, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 534734.41, "execs_total": 5350358, "fuzzers_used": 118}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.736, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 536060.28, "execs_total": 5363892, "fuzzers_used": 119}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3590.738, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 533480.83, "execs_total": 5338193, "fuzzers_used": 120}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.482, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 514271.98, "execs_total": 5145571, "fuzzers_used": 121}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.864, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 503271.79, "execs_total": 5035794, "fuzzers_used": 122}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3586.097, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 496011.52, "execs_total": 4963063, "fuzzers_used": 123}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3587.507, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 490784.42, "execs_total": 4910734, "fuzzers_used": 124}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.718, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 488441.09, "execs_total": 4887140, "fuzzers_used": 125}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.035, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 481281.33, "execs_total": 4815386, "fuzzers_used": 126}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.332, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 469294.96, "execs_total": 4695183, "fuzzers_used": 127}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3589.346, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 465563.78, "execs_total": 4657841, "fuzzers_used": 128}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.943, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 459922.67, "execs_total": 4601391, "fuzzers_used": 129}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3280.928, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 459384.3, "execs_total": 4596590, "fuzzers_used": 130}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.875, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 453310.58, "execs_total": 4535383, "fuzzers_used": 131}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3600.179, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 460246.7, "execs_total": 4604954, "fuzzers_used": 132}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3601.396, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 457201.82, "execs_total": 4574474, "fuzzers_used": 133}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3600.942, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 452487.43, "execs_total": 4527226, "fuzzers_used": 134}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3458.573, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 450514.18, "execs_total": 4507745, "fuzzers_used": 135}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.922, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 449479.52, "execs_total": 4496843, "fuzzers_used": 136}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.911, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 444691.06, "execs_total": 4449491, "fuzzers_used": 137}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.654, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 443497.81, "execs_total": 4437339, "fuzzers_used": 138}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.626, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 437981.1, "execs_total": 4382263, "fuzzers_used": 139}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.124, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 443055.68, "execs_total": 4432987, "fuzzers_used": 140}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3597.978, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 438908.41, "execs_total": 4391393, "fuzzers_used": 141}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3453.125, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 442841.02, "execs_total": 4430878, "fuzzers_used": 142}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3214.708, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 441891.92, "execs_total": 4421776, "fuzzers_used": 143}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3597.764, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 441860.76, "execs_total": 4421068, "fuzzers_used": 144}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3443.44, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 426935.73, "execs_total": 4272029, "fuzzers_used": 145}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3586.383, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 427322.41, "execs_total": 4275938, "fuzzers_used": 146}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3424.014, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 426914.69, "execs_total": 4271924, "fuzzers_used": 147}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.58, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 433246.64, "execs_total": 4335165, "fuzzers_used": 148}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.546, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 435016.77, "execs_total": 4352822, "fuzzers_used": 149}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.587, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 432197.7, "execs_total": 4324740, "fuzzers_used": 150}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3537.464, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 434928.88, "execs_total": 4351767, "fuzzers_used": 151}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.135, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 435174.29, "execs_total": 4354184, "fuzzers_used": 152}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3371.959, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 426852.22, "execs_total": 4271150, "fuzzers_used": 153}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3597.413, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 431241.89, "execs_total": 4315307, "fuzzers_used": 154}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3590.69, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 430842.14, "execs_total": 4311025, "fuzzers_used": 155}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3591.29, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 434156.3, "execs_total": 4344575, "fuzzers_used": 156}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3583.517, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 430896.1, "execs_total": 4311642, "fuzzers_used": 157}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.926, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 435704.89, "execs_total": 4360326, "fuzzers_used": 158}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.395, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 438155.8, "execs_total": 4384203, "fuzzers_used": 159}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3396.521, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 442883.53, "execs_total": 4432039, "fuzzers_used": 160}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3597.95, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 433993.37, "execs_total": 4342838, "fuzzers_used": 161}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.614, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 437174.96, "execs_total": 4374708, "fuzzers_used": 162}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.894, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 435745.93, "execs_total": 4360320, "fuzzers_used": 163}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.633, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 441564.58, "execs_total": 4418619, "fuzzers_used": 164}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.069, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 445500.18, "execs_total": 4457810, "fuzzers_used": 165}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3581.223, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 445887.53, "execs_total": 4461995, "fuzzers_used": 166}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.249, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 443509.97, "execs_total": 4438012, "fuzzers_used": 167}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.106, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 446851.67, "execs_total": 4471572, "fuzzers_used": 168}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3417.764, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 447685.22, "execs_total": 4479536, "fuzzers_used": 169}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3589.058, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 446730.72, "execs_total": 4470322, "fuzzers_used": 170}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.116, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 448668.48, "execs_total": 4489967, "fuzzers_used": 171}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3587.905, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 450972.11, "execs_total": 4513110, "fuzzers_used": 172}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.114, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 450615.23, "execs_total": 4509271, "fuzzers_used": 173}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.851, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 458016.89, "execs_total": 4583318, "fuzzers_used": 174}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.106, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 460677.5, "execs_total": 4609716, "fuzzers_used": 175}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3374.143, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 460763.9, "execs_total": 4610640, "fuzzers_used": 176}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.42, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 452298.55, "execs_total": 4526006, "fuzzers_used": 177}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.801, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 456748.89, "execs_total": 4570571, "fuzzers_used": 178}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.709, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 451289.94, "execs_total": 4516046, "fuzzers_used": 179}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.769, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 463235.15, "execs_total": 4635628, "fuzzers_used": 180}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3330.854, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 464366.11, "execs_total": 4646649, "fuzzers_used": 181}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.585, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 469453.17, "execs_total": 4697909, "fuzzers_used": 182}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.242, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 467300.47, "execs_total": 4676077, "fuzzers_used": 183}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3597.952, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 475115.57, "execs_total": 4754150, "fuzzers_used": 184}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3583.539, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 472179.98, "execs_total": 4724913, "fuzzers_used": 185}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3598.57, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 465528.62, "execs_total": 4658439, "fuzzers_used": 186}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3587.126, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 476194.69, "execs_total": 4765385, "fuzzers_used": 187}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3423.033, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 475886.86, "execs_total": 4762069, "fuzzers_used": 188}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.32, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 473599.91, "execs_total": 4739128, "fuzzers_used": 189}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3597.599, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 476949.52, "execs_total": 4772500, "fuzzers_used": 190}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3437.101, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 474259.76, "execs_total": 4745505, "fuzzers_used": 191}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "AWS EC2 r6a.48xlarge spot instance", "compiler": "clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1)", "target_arch": "x86_64-amazon-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3599.17, "cpu_model": "AMD EPYC 7R13 Processor", "cpu_threads": 192}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 479848.23, "execs_total": 4801111, "fuzzers_used": 192}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "", "compiler": "Debian clang version 17.0.4 (++20231031083102+309d55140c46-1~exp1~20231031083155.63)", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4761.063, "cpu_model": "12th Gen Intel(R) Core(TM) i7-1270P", "cpu_threads": 16}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 641219.02, "execs_total": 19251242, "fuzzers_used": 16}, "singlecore": {"execs_per_sec": 149778.22, "execs_total": 4493796, "fuzzers_used": 1}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "", "compiler": "Ubuntu clang version 17.0.2 (++20231003073128+b2417f51dbbd-1~exp1~20231003073233.51)", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3193.942, "cpu_model": "AMD EPYC 7282 16-Core Processor", "cpu_threads": 64}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 769000.8, "execs_total": 23084516, "fuzzers_used": 32}, "singlecore": {"execs_per_sec": 87198.85, "execs_total": 2616227, "fuzzers_used": 1}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.08a", "comment": "", "compiler": "Ubuntu clang version 14.0.0-1ubuntu1.1", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 3700.0, "cpu_model": "AMD Ryzen 5 PRO 4650G with Radeon Graphics", "cpu_threads": 12}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 704840.16, "execs_total": 21163992, "fuzzers_used": 12}, "singlecore": {"execs_per_sec": 95356.14, "execs_total": 2862114, "fuzzers_used": 1}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.09a", "comment": "", "compiler": "Debian clang version 14.0.6", "target_arch": "aarch64-unknown-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 2400.0, "cpu_model": "Raspberry Pi 5", "cpu_threads": 4}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 101114.23, "execs_total": 3036637, "fuzzers_used": 4}, "singlecore": {"execs_per_sec": 25786.11, "execs_total": 774460, "fuzzers_used": 1}}}}
|
||||||
|
{"config": {"afl_persistent_config": true, "afl_system_config": true, "afl_version": "++4.07a", "comment": "", "compiler": "Debian clang version 17.0.0 (++20230417071830+ae77aceba5ad-1~exp1~20230417071935.630)", "target_arch": "x86_64-pc-linux-gnu"}, "hardware": {"cpu_fastest_core_mhz": 4792.073, "cpu_model": "AMD Ryzen 9 5950X 16-Core Processor", "cpu_threads": 32}, "targets": {"test-instr-persist-shmem": {"multicore": {"execs_per_sec": 2339762.91, "execs_total": 70253164, "fuzzers_used": 32}, "singlecore": {"execs_per_sec": 161690.07, "execs_total": 4851838, "fuzzers_used": 1}}}}
|
1445
benchmark/benchmark.ipynb
Normal file
1445
benchmark/benchmark.ipynb
Normal file
File diff suppressed because one or more lines are too long
281
benchmark/benchmark.py
Executable file
281
benchmark/benchmark.py
Executable file
@ -0,0 +1,281 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# Part of the aflplusplus project, requires Python 3.8+.
|
||||||
|
# Author: Chris Ball <chris@printf.net>, ported from Marc "van Hauser" Heuse's "benchmark.sh".
|
||||||
|
import argparse, asyncio, json, multiprocessing, os, platform, re, shutil, sys
|
||||||
|
from dataclasses import asdict, dataclass
|
||||||
|
from decimal import Decimal
|
||||||
|
from enum import Enum, auto
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import Dict, List, Optional, Tuple
|
||||||
|
|
||||||
|
blue = lambda text: f"\033[1;94m{text}\033[0m"; gray = lambda text: f"\033[1;90m{text}\033[0m"
|
||||||
|
green = lambda text: f"\033[0;32m{text}\033[0m"; red = lambda text: f"\033[0;31m{text}\033[0m"
|
||||||
|
yellow = lambda text: f"\033[0;33m{text}\033[0m"
|
||||||
|
|
||||||
|
class Mode(Enum):
|
||||||
|
multicore = auto()
|
||||||
|
singlecore = auto()
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Target:
|
||||||
|
source: Path
|
||||||
|
binary: Path
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Run:
|
||||||
|
execs_per_sec: float
|
||||||
|
execs_total: float
|
||||||
|
fuzzers_used: int
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Config:
|
||||||
|
afl_persistent_config: bool
|
||||||
|
afl_system_config: bool
|
||||||
|
afl_version: Optional[str]
|
||||||
|
comment: str
|
||||||
|
compiler: str
|
||||||
|
target_arch: str
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Hardware:
|
||||||
|
cpu_fastest_core_mhz: float
|
||||||
|
cpu_model: str
|
||||||
|
cpu_threads: int
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Results:
|
||||||
|
config: Optional[Config]
|
||||||
|
hardware: Optional[Hardware]
|
||||||
|
targets: Dict[str, Dict[str, Optional[Run]]]
|
||||||
|
|
||||||
|
all_modes = [Mode.singlecore, Mode.multicore]
|
||||||
|
all_targets = [
|
||||||
|
Target(source=Path("../utils/persistent_mode/test-instr.c").resolve(), binary=Path("test-instr-persist-shmem")),
|
||||||
|
Target(source=Path("../test-instr.c").resolve(), binary=Path("test-instr"))
|
||||||
|
]
|
||||||
|
modes = [mode.name for mode in all_modes]
|
||||||
|
targets = [str(target.binary) for target in all_targets]
|
||||||
|
cpu_count = multiprocessing.cpu_count()
|
||||||
|
env_vars = {
|
||||||
|
"AFL_DISABLE_TRIM": "1", "AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES": "1", "AFL_FAST_CAL": "1",
|
||||||
|
"AFL_NO_UI": "1", "AFL_TRY_AFFINITY": "1", "PATH": f'{str(Path("../").resolve())}:{os.environ["PATH"]}',
|
||||||
|
}
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
||||||
|
parser.add_argument("-b", "--basedir", help="directory to use for temp files", type=str, default="/tmp/aflpp-benchmark")
|
||||||
|
parser.add_argument("-d", "--debug", help="show verbose debugging output", action="store_true")
|
||||||
|
parser.add_argument("-r", "--runs", help="how many runs to average results over", type=int, default=3)
|
||||||
|
parser.add_argument("-f", "--fuzzers", help="how many afl-fuzz workers to use", type=int, default=cpu_count)
|
||||||
|
parser.add_argument("-m", "--mode", help="pick modes", action="append", default=modes, choices=modes)
|
||||||
|
parser.add_argument("-c", "--comment", help="add a comment about your setup", type=str, default="")
|
||||||
|
parser.add_argument("--cpu", help="override the detected CPU model name", type=str, default="")
|
||||||
|
parser.add_argument("--mhz", help="override the detected CPU MHz", type=str, default="")
|
||||||
|
parser.add_argument(
|
||||||
|
"-t", "--target", help="pick targets", action="append", default=["test-instr-persist-shmem"], choices=targets
|
||||||
|
)
|
||||||
|
args = parser.parse_args()
|
||||||
|
# Really unsatisfying argparse behavior: we want a default and to allow multiple choices, but if there's a manual choice
|
||||||
|
# it should override the default. Seems like we have to remove the default to get that and have correct help text?
|
||||||
|
if len(args.target) > 1:
|
||||||
|
args.target = args.target[1:]
|
||||||
|
if len(args.mode) > 2:
|
||||||
|
args.mode = args.mode[2:]
|
||||||
|
|
||||||
|
chosen_modes = [mode for mode in all_modes if mode.name in args.mode]
|
||||||
|
chosen_targets = [target for target in all_targets if str(target.binary) in args.target]
|
||||||
|
results = Results(config=None, hardware=None, targets={
|
||||||
|
str(t.binary): {m.name: None for m in chosen_modes} for t in chosen_targets}
|
||||||
|
)
|
||||||
|
debug = lambda text: args.debug and print(blue(text))
|
||||||
|
|
||||||
|
async def clean_up_tempfiles() -> None:
|
||||||
|
shutil.rmtree(f"{args.basedir}/in")
|
||||||
|
for target in chosen_targets:
|
||||||
|
target.binary.unlink()
|
||||||
|
for mode in chosen_modes:
|
||||||
|
shutil.rmtree(f"{args.basedir}/out-{mode.name}-{str(target.binary)}")
|
||||||
|
|
||||||
|
async def check_afl_persistent() -> bool:
|
||||||
|
with open("/proc/cmdline", "r") as cmdline:
|
||||||
|
return "mitigations=off" in cmdline.read().strip().split(" ")
|
||||||
|
|
||||||
|
async def check_afl_system() -> bool:
|
||||||
|
sysctl = next((s for s in ["sysctl", "/sbin/sysctl"] if shutil.which(s)), None)
|
||||||
|
if sysctl:
|
||||||
|
(returncode, stdout, _) = await run_command([sysctl, "kernel.randomize_va_space"])
|
||||||
|
return returncode == 0 and stdout.decode().rstrip().split(" = ")[1] == "0"
|
||||||
|
return False
|
||||||
|
|
||||||
|
async def prep_env() -> None:
|
||||||
|
Path(f"{args.basedir}/in").mkdir(exist_ok=True, parents=True)
|
||||||
|
with open(f"{args.basedir}/in/in.txt", "wb") as seed:
|
||||||
|
seed.write(b"\x00" * 10240)
|
||||||
|
|
||||||
|
async def compile_target(source: Path, binary: Path) -> None:
|
||||||
|
print(f" [*] Compiling the {binary} fuzzing harness for the benchmark to use.")
|
||||||
|
(returncode, stdout, stderr) = await run_command(
|
||||||
|
[str(Path("../afl-clang-lto").resolve()), "-o", str(Path(binary.resolve())), str(Path(source).resolve())]
|
||||||
|
)
|
||||||
|
if returncode == 0:
|
||||||
|
return
|
||||||
|
print(yellow(f" [*] afl-clang-lto was unable to compile; falling back to afl-cc."))
|
||||||
|
(returncode, stdout, stderr) = await run_command(
|
||||||
|
[str(Path("../afl-cc").resolve()), "-o", str(Path(binary.resolve())), str(Path(source).resolve())]
|
||||||
|
)
|
||||||
|
if returncode != 0:
|
||||||
|
sys.exit(red(f" [*] Error: afl-cc is unable to compile: {stderr.decode()} {stdout.decode()}"))
|
||||||
|
|
||||||
|
async def run_command(cmd: List[str]) -> Tuple[Optional[int], bytes, bytes]:
|
||||||
|
debug(f"Launching command: {cmd} with env {env_vars}")
|
||||||
|
p = await asyncio.create_subprocess_exec(
|
||||||
|
*cmd, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE, env=env_vars
|
||||||
|
)
|
||||||
|
stdout, stderr = await p.communicate()
|
||||||
|
debug(f"Output: {stdout.decode()} {stderr.decode()}")
|
||||||
|
return (p.returncode, stdout, stderr)
|
||||||
|
|
||||||
|
async def check_deps() -> None:
|
||||||
|
if not (plat := platform.system()) == "Linux": sys.exit(red(f" [*] {plat} is not supported by this script yet."))
|
||||||
|
if not os.access(Path("../afl-fuzz").resolve(), os.X_OK) and os.access(Path("../afl-cc").resolve(), os.X_OK) and (
|
||||||
|
os.path.exists(Path("../SanitizerCoveragePCGUARD.so").resolve())):
|
||||||
|
sys.exit(red(" [*] Compile AFL++: we need afl-fuzz, afl-clang-fast and SanitizerCoveragePCGUARD.so built."))
|
||||||
|
|
||||||
|
(returncode, stdout, stderr) = await run_command([str(Path("../afl-cc").resolve()), "-v"])
|
||||||
|
if returncode != 0:
|
||||||
|
sys.exit(red(f" [*] Error: afl-cc -v returned: {stderr.decode()} {stdout.decode()}"))
|
||||||
|
compiler = ""
|
||||||
|
target_arch = ""
|
||||||
|
for line in stderr.decode().split("\n"):
|
||||||
|
if "clang version" in line:
|
||||||
|
compiler = line
|
||||||
|
elif m := re.match(r"^Target: (.*)", line):
|
||||||
|
target_arch = m.group(1)
|
||||||
|
|
||||||
|
# Pick some sample settings from afl-{persistent,system}-config to try to see whether they were run.
|
||||||
|
afl_pc = await check_afl_persistent()
|
||||||
|
afl_sc = await check_afl_system()
|
||||||
|
if not afl_pc:
|
||||||
|
print(yellow(f" [*] afl-persistent-config did not run; run it to improve performance (and decrease security)."))
|
||||||
|
if not afl_sc:
|
||||||
|
print(yellow(f" [*] afl-system-config did not run; run it to improve performance (and decrease security)."))
|
||||||
|
results.config = Config(afl_persistent_config=afl_pc, afl_system_config=afl_sc, afl_version="",
|
||||||
|
comment=args.comment, compiler=compiler, target_arch=target_arch)
|
||||||
|
|
||||||
|
async def colon_values(filename: str, searchKey: str) -> List[str]:
|
||||||
|
"""Return a colon-separated value given a key in a file, e.g. 'cpu MHz : 4976.109')"""
|
||||||
|
with open(filename, "r") as fh:
|
||||||
|
kv_pairs = (line.split(": ", 1) for line in fh if ": " in line)
|
||||||
|
v_list = [v.rstrip() for k, v in kv_pairs if k.rstrip() == searchKey]
|
||||||
|
return v_list
|
||||||
|
|
||||||
|
async def describe_afl_config() -> str:
|
||||||
|
if results.config is None:
|
||||||
|
return "unknown"
|
||||||
|
elif results.config.afl_persistent_config and results.config.afl_system_config:
|
||||||
|
return "both"
|
||||||
|
elif results.config.afl_persistent_config:
|
||||||
|
return "persistent"
|
||||||
|
elif results.config.afl_system_config:
|
||||||
|
return "system"
|
||||||
|
else:
|
||||||
|
return "none"
|
||||||
|
|
||||||
|
async def save_benchmark_results() -> None:
|
||||||
|
"""Append a single row to the benchmark results in JSON Lines format (which is simple to write and diff)."""
|
||||||
|
with open("benchmark-results.jsonl", "a") as jsonfile:
|
||||||
|
json.dump(asdict(results), jsonfile, sort_keys=True)
|
||||||
|
jsonfile.write("\n")
|
||||||
|
print(blue(f" [*] Results have been written to the {jsonfile.name} file."))
|
||||||
|
with open("COMPARISON.md", "r+") as comparisonfile:
|
||||||
|
described_config = await describe_afl_config()
|
||||||
|
aflconfig = described_config.ljust(12)
|
||||||
|
if results.hardware is None:
|
||||||
|
return
|
||||||
|
cpu_model = results.hardware.cpu_model.ljust(51)
|
||||||
|
if cpu_model in comparisonfile.read():
|
||||||
|
print(blue(f" [*] Results have not been written to the COMPARISON.md file; this CPU is already present."))
|
||||||
|
return
|
||||||
|
cpu_mhz = str(round(results.hardware.cpu_fastest_core_mhz)).ljust(5)
|
||||||
|
if not "test-instr-persist-shmem" in results.targets or \
|
||||||
|
not "multicore" in results.targets["test-instr-persist-shmem"] or \
|
||||||
|
not "singlecore" in results.targets["test-instr-persist-shmem"] or \
|
||||||
|
results.targets["test-instr-persist-shmem"]["singlecore"] is None or \
|
||||||
|
results.targets["test-instr-persist-shmem"]["multicore"] is None:
|
||||||
|
return
|
||||||
|
single = str(round(results.targets["test-instr-persist-shmem"]["singlecore"].execs_per_sec)).ljust(10)
|
||||||
|
multi = str(round(results.targets["test-instr-persist-shmem"]["multicore"].execs_per_sec)).ljust(9)
|
||||||
|
cores = str(args.fuzzers).ljust(7)
|
||||||
|
comparisonfile.write(f"{cpu_model} | {cpu_mhz} | {cores} | {single} | {multi} | {aflconfig} |\n")
|
||||||
|
print(blue(f" [*] Results have been written to the COMPARISON.md file."))
|
||||||
|
with open("COMPARISON.md", "r") as comparisonfile:
|
||||||
|
print(comparisonfile.read())
|
||||||
|
|
||||||
|
|
||||||
|
async def main() -> None:
|
||||||
|
try:
|
||||||
|
await clean_up_tempfiles()
|
||||||
|
except FileNotFoundError:
|
||||||
|
pass
|
||||||
|
await check_deps()
|
||||||
|
if args.mhz:
|
||||||
|
cpu_mhz = float(args.mhz)
|
||||||
|
else:
|
||||||
|
cpu_mhz_str = await colon_values("/proc/cpuinfo", "cpu MHz")
|
||||||
|
if len(cpu_mhz_str) == 0:
|
||||||
|
cpu_mhz_str.append("0")
|
||||||
|
cpu_mhz = max([float(c) for c in cpu_mhz_str]) # use the fastest CPU MHz for now
|
||||||
|
if args.cpu:
|
||||||
|
cpu_model = [args.cpu]
|
||||||
|
else:
|
||||||
|
cpu_model = await colon_values("/proc/cpuinfo", "model name") or [""]
|
||||||
|
results.hardware = Hardware(cpu_fastest_core_mhz=cpu_mhz, cpu_model=cpu_model[0], cpu_threads=cpu_count)
|
||||||
|
await prep_env()
|
||||||
|
print(f" [*] Ready, starting benchmark...")
|
||||||
|
for target in chosen_targets:
|
||||||
|
await compile_target(target.source, target.binary)
|
||||||
|
binary = str(target.binary)
|
||||||
|
for mode in chosen_modes:
|
||||||
|
if mode == Mode.multicore:
|
||||||
|
print(blue(f" [*] Using {args.fuzzers} fuzzers for multicore fuzzing "), end="")
|
||||||
|
print(blue("(use --fuzzers to override)." if args.fuzzers == cpu_count else f"(the default is {cpu_count})"))
|
||||||
|
execs_per_sec, execs_total = ([] for _ in range(2))
|
||||||
|
for run_idx in range(0, args.runs):
|
||||||
|
print(gray(f" [*] {mode.name} {binary} run {run_idx+1} of {args.runs}, execs/s: "), end="", flush=True)
|
||||||
|
fuzzers = range(0, args.fuzzers if mode == Mode.multicore else 1)
|
||||||
|
outdir = f"{args.basedir}/out-{mode.name}-{binary}"
|
||||||
|
cmds = []
|
||||||
|
for fuzzer_idx, afl in enumerate(fuzzers):
|
||||||
|
name = ["-o", outdir, "-M" if fuzzer_idx == 0 else "-S", str(afl)]
|
||||||
|
cmds.append(["afl-fuzz", "-i", f"{args.basedir}/in"] + name + ["-s", "123", "-V10", "-D", f"./{binary}"])
|
||||||
|
# Prepare the afl-fuzz tasks, and then block while waiting for them to finish.
|
||||||
|
fuzztasks = [run_command(cmds[cpu]) for cpu in fuzzers]
|
||||||
|
await asyncio.gather(*fuzztasks)
|
||||||
|
afl_versions = await colon_values(f"{outdir}/0/fuzzer_stats", "afl_version")
|
||||||
|
if results.config:
|
||||||
|
results.config.afl_version = afl_versions[0]
|
||||||
|
# Our score is the sum of all execs_per_sec entries in fuzzer_stats files for the run.
|
||||||
|
sectasks = [colon_values(f"{outdir}/{afl}/fuzzer_stats", "execs_per_sec") for afl in fuzzers]
|
||||||
|
all_execs_per_sec = await asyncio.gather(*sectasks)
|
||||||
|
execs = sum([Decimal(count[0]) for count in all_execs_per_sec])
|
||||||
|
print(green(execs))
|
||||||
|
execs_per_sec.append(execs)
|
||||||
|
# Also gather execs_total and total_run_time for this run.
|
||||||
|
exectasks = [colon_values(f"{outdir}/{afl}/fuzzer_stats", "execs_done") for afl in fuzzers]
|
||||||
|
all_execs_total = await asyncio.gather(*exectasks)
|
||||||
|
execs_total.append(sum([Decimal(count[0]) for count in all_execs_total]))
|
||||||
|
|
||||||
|
# (Using float() because Decimal() is not JSON-serializable.)
|
||||||
|
avg_afl_execs_per_sec = round(Decimal(sum(execs_per_sec) / len(execs_per_sec)), 2)
|
||||||
|
afl_execs_total = int(sum([Decimal(execs) for execs in execs_total]))
|
||||||
|
run = Run(execs_per_sec=float(avg_afl_execs_per_sec), execs_total=afl_execs_total, fuzzers_used=len(fuzzers))
|
||||||
|
results.targets[binary][mode.name] = run
|
||||||
|
print(f" [*] Average execs/sec for this test across all runs was: {green(avg_afl_execs_per_sec)}")
|
||||||
|
if (((max(execs_per_sec) - min(execs_per_sec)) / avg_afl_execs_per_sec) * 100) > 15:
|
||||||
|
print(yellow(" [*] The difference between your slowest and fastest runs was >15%, maybe try again?"))
|
||||||
|
|
||||||
|
await clean_up_tempfiles()
|
||||||
|
await save_benchmark_results()
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
asyncio.run(main())
|
||||||
|
|
@ -70,14 +70,17 @@ requires cmake (among other things):
|
|||||||
|
|
||||||
### libprotobuf Mutators
|
### libprotobuf Mutators
|
||||||
|
|
||||||
There are two WIP protobuf projects, that require work to be working though:
|
There are three WIP protobuf projects, that require work to be working though:
|
||||||
|
|
||||||
|
ASN.1 example:
|
||||||
|
[https://github.com/airbus-seclab/AFLplusplus-blogpost/tree/main/src/mutator](https://github.com/airbus-seclab/AFLplusplus-blogpost/tree/main/src/mutator)
|
||||||
|
|
||||||
transforms protobuf raw:
|
transforms protobuf raw:
|
||||||
https://github.com/bruce30262/libprotobuf-mutator_fuzzing_learning/tree/master/4_libprotobuf_aflpp_custom_mutator
|
[https://github.com/bruce30262/libprotobuf-mutator_fuzzing_learning/tree/master/4_libprotobuf_aflpp_custom_mutator](https://github.com/bruce30262/libprotobuf-mutator_fuzzing_learning/tree/master/4_libprotobuf_aflpp_custom_mutator)
|
||||||
|
|
||||||
has a transform function you need to fill for your protobuf format, however
|
has a transform function you need to fill for your protobuf format, however
|
||||||
needs to be ported to the updated AFL++ custom mutator API (not much work):
|
needs to be ported to the updated AFL++ custom mutator API (not much work):
|
||||||
https://github.com/thebabush/afl-libprotobuf-mutator
|
[https://github.com/thebabush/afl-libprotobuf-mutator](https://github.com/thebabush/afl-libprotobuf-mutator)
|
||||||
|
|
||||||
same as above but is for current AFL++:
|
same as above but is for current AFL++:
|
||||||
https://github.com/P1umer/AFLplusplus-protobuf-mutator
|
[https://github.com/P1umer/AFLplusplus-protobuf-mutator](https://github.com/P1umer/AFLplusplus-protobuf-mutator)
|
10
custom_mutators/aflpp/Makefile
Normal file
10
custom_mutators/aflpp/Makefile
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
|
||||||
|
CFLAGS = -O3 -funroll-loops -fPIC -Wl,-Bsymbolic
|
||||||
|
|
||||||
|
all: aflpp-mutator.so
|
||||||
|
|
||||||
|
aflpp-mutator.so: aflpp.c
|
||||||
|
$(CC) $(CFLAGS) -I../../include -I. -shared -o aflpp-mutator.so aflpp.c ../../src/afl-performance.c
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.o *~ *.so core
|
8
custom_mutators/aflpp/README.md
Normal file
8
custom_mutators/aflpp/README.md
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# custum mutator: AFL++
|
||||||
|
|
||||||
|
this is the AFL++ havoc mutator as a custom mutator module for AFL++.
|
||||||
|
|
||||||
|
just type `make` to build
|
||||||
|
|
||||||
|
```AFL_CUSTOM_MUTATOR_LIBRARY=custom_mutators/aflpp/aflpp-mutator.so afl-fuzz ...```
|
||||||
|
|
89
custom_mutators/aflpp/aflpp.c
Normal file
89
custom_mutators/aflpp/aflpp.c
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
#include "afl-mutations.h"
|
||||||
|
|
||||||
|
typedef struct my_mutator {
|
||||||
|
|
||||||
|
afl_state_t *afl;
|
||||||
|
u8 *buf;
|
||||||
|
u32 buf_size;
|
||||||
|
|
||||||
|
} my_mutator_t;
|
||||||
|
|
||||||
|
my_mutator_t *afl_custom_init(afl_state_t *afl, unsigned int seed) {
|
||||||
|
|
||||||
|
(void)seed;
|
||||||
|
|
||||||
|
my_mutator_t *data = calloc(1, sizeof(my_mutator_t));
|
||||||
|
if (!data) {
|
||||||
|
|
||||||
|
perror("afl_custom_init alloc");
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((data->buf = malloc(MAX_FILE)) == NULL) {
|
||||||
|
|
||||||
|
perror("afl_custom_init alloc");
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
data->buf_size = MAX_FILE;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
data->afl = afl;
|
||||||
|
|
||||||
|
return data;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* here we run the AFL++ mutator, which is the best! */
|
||||||
|
|
||||||
|
size_t afl_custom_fuzz(my_mutator_t *data, uint8_t *buf, size_t buf_size,
|
||||||
|
u8 **out_buf, uint8_t *add_buf, size_t add_buf_size,
|
||||||
|
size_t max_size) {
|
||||||
|
|
||||||
|
if (max_size > data->buf_size) {
|
||||||
|
|
||||||
|
u8 *ptr = realloc(data->buf, max_size);
|
||||||
|
|
||||||
|
if (ptr) {
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
data->buf = ptr;
|
||||||
|
data->buf_size = max_size;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 havoc_steps = 1 + rand_below(data->afl, 16);
|
||||||
|
|
||||||
|
/* set everything up, costly ... :( */
|
||||||
|
memcpy(data->buf, buf, buf_size);
|
||||||
|
|
||||||
|
/* the mutation */
|
||||||
|
u32 out_buf_len = afl_mutate(data->afl, data->buf, buf_size, havoc_steps,
|
||||||
|
false, true, add_buf, add_buf_size, max_size);
|
||||||
|
|
||||||
|
/* return size of mutated data */
|
||||||
|
*out_buf = data->buf;
|
||||||
|
return out_buf_len;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deinitialize everything
|
||||||
|
*
|
||||||
|
* @param data The data ptr from afl_custom_init
|
||||||
|
*/
|
||||||
|
void afl_custom_deinit(my_mutator_t *data) {
|
||||||
|
|
||||||
|
free(data->buf);
|
||||||
|
free(data);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
10
custom_mutators/aflpp/standalone/Makefile
Normal file
10
custom_mutators/aflpp/standalone/Makefile
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
|
||||||
|
CFLAGS = -O3 -funroll-loops -fPIC
|
||||||
|
|
||||||
|
all: aflpp-standalone
|
||||||
|
|
||||||
|
aflpp-standalone: aflpp-standalone.c
|
||||||
|
$(CC) $(CFLAGS) -I../../../include -I. -o aflpp-standalone aflpp-standalone.c ../../../src/afl-performance.c
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.o *~ aflpp-standalone core
|
10
custom_mutators/aflpp/standalone/README.md
Normal file
10
custom_mutators/aflpp/standalone/README.md
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# AFL++ standalone mutator
|
||||||
|
|
||||||
|
this is the AFL++ havoc mutator as a standalone mutator
|
||||||
|
|
||||||
|
just type `make` to build.
|
||||||
|
|
||||||
|
```
|
||||||
|
aflpp-standalone inputfile outputfile [splicefile]
|
||||||
|
```
|
||||||
|
|
166
custom_mutators/aflpp/standalone/aflpp-standalone.c
Normal file
166
custom_mutators/aflpp/standalone/aflpp-standalone.c
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
#include "afl-mutations.h"
|
||||||
|
|
||||||
|
s8 interesting_8[] = {INTERESTING_8};
|
||||||
|
s16 interesting_16[] = {INTERESTING_8, INTERESTING_16};
|
||||||
|
s32 interesting_32[] = {INTERESTING_8, INTERESTING_16, INTERESTING_32};
|
||||||
|
|
||||||
|
typedef struct my_mutator {
|
||||||
|
|
||||||
|
afl_state_t *afl;
|
||||||
|
u8 *buf;
|
||||||
|
u32 buf_size;
|
||||||
|
|
||||||
|
} my_mutator_t;
|
||||||
|
|
||||||
|
my_mutator_t *afl_custom_init(afl_state_t *afl, unsigned int seed) {
|
||||||
|
|
||||||
|
(void)seed;
|
||||||
|
|
||||||
|
my_mutator_t *data = calloc(1, sizeof(my_mutator_t));
|
||||||
|
if (!data) {
|
||||||
|
|
||||||
|
perror("afl_custom_init alloc");
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((data->buf = malloc(1024*1024)) == NULL) {
|
||||||
|
|
||||||
|
perror("afl_custom_init alloc");
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
data->buf_size = 1024*1024;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* fake AFL++ state */
|
||||||
|
data->afl = calloc(1, sizeof(afl_state_t));
|
||||||
|
data->afl->queue_cycle = 1;
|
||||||
|
data->afl->fsrv.dev_urandom_fd = open("/dev/urandom", O_RDONLY);
|
||||||
|
if (data->afl->fsrv.dev_urandom_fd < 0) { PFATAL("Unable to open /dev/urandom"); }
|
||||||
|
rand_set_seed(data->afl, getpid());
|
||||||
|
|
||||||
|
return data;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* here we run the AFL++ mutator, which is the best! */
|
||||||
|
|
||||||
|
size_t afl_custom_fuzz(my_mutator_t *data, uint8_t *buf, size_t buf_size,
|
||||||
|
u8 **out_buf, uint8_t *add_buf, size_t add_buf_size,
|
||||||
|
size_t max_size) {
|
||||||
|
|
||||||
|
if (max_size > data->buf_size) {
|
||||||
|
|
||||||
|
u8 *ptr = realloc(data->buf, max_size);
|
||||||
|
|
||||||
|
if (ptr) {
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
data->buf = ptr;
|
||||||
|
data->buf_size = max_size;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 havoc_steps = 1 + rand_below(data->afl, 16);
|
||||||
|
|
||||||
|
/* set everything up, costly ... :( */
|
||||||
|
memcpy(data->buf, buf, buf_size);
|
||||||
|
|
||||||
|
/* the mutation */
|
||||||
|
u32 out_buf_len = afl_mutate(data->afl, data->buf, buf_size, havoc_steps,
|
||||||
|
false, true, add_buf, add_buf_size, max_size);
|
||||||
|
|
||||||
|
/* return size of mutated data */
|
||||||
|
*out_buf = data->buf;
|
||||||
|
return out_buf_len;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
|
if (argc > 1 && strncmp(argv[1], "-h", 2) == 0) {
|
||||||
|
printf("Syntax: %s [-v] [inputfile [outputfile [splicefile]]]\n\n", argv[0]);
|
||||||
|
printf("Reads a testcase from stdin when no input file (or '-') is specified,\n");
|
||||||
|
printf("mutates according to AFL++'s mutation engine, and write to stdout when '-' or\n");
|
||||||
|
printf("no output filename is given. As an optional third parameter you can give a file\n");
|
||||||
|
printf("for splicing. Maximum input and output length is 1MB.\n");
|
||||||
|
printf("The -v verbose option prints debug output to stderr.\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
FILE *in = stdin, *out = stdout, *splice = NULL;
|
||||||
|
unsigned char *inbuf = malloc(1024 * 1024), *outbuf, *splicebuf = NULL;
|
||||||
|
int verbose = 0, splicelen = 0;
|
||||||
|
|
||||||
|
if (argc > 1 && strcmp(argv[1], "-v") == 0) {
|
||||||
|
verbose = 1;
|
||||||
|
argc--;
|
||||||
|
argv++;
|
||||||
|
fprintf(stderr, "Verbose active\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
my_mutator_t *data = afl_custom_init(NULL, 0);
|
||||||
|
|
||||||
|
if (argc > 1 && strcmp(argv[1], "-") != 0) {
|
||||||
|
if ((in = fopen(argv[1], "r")) == NULL) {
|
||||||
|
perror(argv[1]);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (verbose) fprintf(stderr, "Input: %s\n", argv[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t inlen = fread(inbuf, 1, 1024*1024, in);
|
||||||
|
|
||||||
|
if (!inlen) {
|
||||||
|
fprintf(stderr, "Error: empty file %s\n", argv[1] ? argv[1] : "stdin");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argc > 2 && strcmp(argv[2], "-") != 0) {
|
||||||
|
if ((out = fopen(argv[2], "w")) == NULL) {
|
||||||
|
perror(argv[2]);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (verbose) fprintf(stderr, "Output: %s\n", argv[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argc > 3) {
|
||||||
|
if ((splice = fopen(argv[3], "r")) == NULL) {
|
||||||
|
perror(argv[3]);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (verbose) fprintf(stderr, "Splice: %s\n", argv[3]);
|
||||||
|
splicebuf = malloc(1024*1024);
|
||||||
|
size_t splicelen = fread(splicebuf, 1, 1024*1024, splice);
|
||||||
|
if (!splicelen) {
|
||||||
|
fprintf(stderr, "Error: empty file %s\n", argv[3]);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (verbose) fprintf(stderr, "Mutation splice length: %zu\n", splicelen);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (verbose) fprintf(stderr, "Mutation input length: %zu\n", inlen);
|
||||||
|
unsigned int outlen = afl_custom_fuzz(data, inbuf, inlen, &outbuf, splicebuf, splicelen, 1024*1024);
|
||||||
|
|
||||||
|
if (outlen == 0 || !outbuf) {
|
||||||
|
fprintf(stderr, "Error: no mutation data returned.\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (verbose) fprintf(stderr, "Mutation output length: %zu\n", outlen);
|
||||||
|
|
||||||
|
if (fwrite(outbuf, 1, outlen, out) != outlen) {
|
||||||
|
fprintf(stderr, "Warning: incomplete write.\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
@ -164,7 +164,7 @@ def init(seed):
|
|||||||
format = SeedFormat.COMPOSITE
|
format = SeedFormat.COMPOSITE
|
||||||
# Now set up TritonDSE
|
# Now set up TritonDSE
|
||||||
config = Config(coverage_strategy = CoverageStrategy.PATH,
|
config = Config(coverage_strategy = CoverageStrategy.PATH,
|
||||||
debug = is_debug,
|
# debug = is_debug,
|
||||||
pipe_stdout = is_debug,
|
pipe_stdout = is_debug,
|
||||||
pipe_stderr = is_debug,
|
pipe_stderr = is_debug,
|
||||||
execution_timeout = 1,
|
execution_timeout = 1,
|
||||||
|
@ -33,3 +33,6 @@ like surgical_havoc_mutate() that allow to perform a randomly chosen
|
|||||||
mutation from a subset of the havoc mutations.
|
mutation from a subset of the havoc mutations.
|
||||||
If you do so, you have to specify -I /path/to/AFLplusplus/include when
|
If you do so, you have to specify -I /path/to/AFLplusplus/include when
|
||||||
compiling.
|
compiling.
|
||||||
|
|
||||||
|
elf_header_mutator.c - example ELF header mutator based on
|
||||||
|
[LibGolf](https://github.com/xcellerator/libgolf/)
|
||||||
|
53
custom_mutators/examples/custom_post_run.c
Normal file
53
custom_mutators/examples/custom_post_run.c
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
//
|
||||||
|
// This is an example on how to use afl_custom_post_run
|
||||||
|
// It executes custom code each time after AFL++ executes the target
|
||||||
|
//
|
||||||
|
// cc -O3 -fPIC -shared -g -o custom_post_run.so -I../../include custom_post_run.c
|
||||||
|
// cd ../..
|
||||||
|
// afl-cc -o test-instr test-instr.c
|
||||||
|
// AFL_CUSTOM_MUTATOR_LIBRARY=custom_mutators/examples/custom_post_run.so \
|
||||||
|
// afl-fuzz -i in -o out -- ./test-instr -f /tmp/foo
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
#include "afl-fuzz.h"
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
typedef struct my_mutator {
|
||||||
|
|
||||||
|
afl_state_t *afl;
|
||||||
|
|
||||||
|
} my_mutator_t;
|
||||||
|
|
||||||
|
my_mutator_t *afl_custom_init(afl_state_t *afl, unsigned int seed) {
|
||||||
|
|
||||||
|
my_mutator_t *data = calloc(1, sizeof(my_mutator_t));
|
||||||
|
if (!data) {
|
||||||
|
|
||||||
|
perror("afl_custom_init alloc");
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
data->afl = afl;
|
||||||
|
|
||||||
|
return data;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void afl_custom_post_run(my_mutator_t *data) {
|
||||||
|
|
||||||
|
printf("hello from afl_custom_post_run\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void afl_custom_deinit(my_mutator_t *data) {
|
||||||
|
|
||||||
|
free(data);
|
||||||
|
|
||||||
|
}
|
679
custom_mutators/examples/elf_header_mutator.c
Normal file
679
custom_mutators/examples/elf_header_mutator.c
Normal file
@ -0,0 +1,679 @@
|
|||||||
|
/*
|
||||||
|
AFL++ Custom Mutator for ELF Headers
|
||||||
|
Written by @echel0n <melih.sahin@protonmail.com>
|
||||||
|
based on libgolf.h by @xcellerator
|
||||||
|
$ gcc -O3 -fPIC -shared -o elf_mutator.so -I ~/AFLplusplus/include/
|
||||||
|
*/
|
||||||
|
#include "afl-fuzz.h"
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include <linux/elf.h>
|
||||||
|
|
||||||
|
/* EI_ABIVERSION isn't used anymore and elf.h defines EI_PAD to be 0x09 */
|
||||||
|
#define EI_ABIVERSION 0x08
|
||||||
|
#define EI_PAD 0x09
|
||||||
|
/* Define the Architecture and ISA constants to match those in <linux/elf.h> */
|
||||||
|
#define X86_64 EM_X86_64
|
||||||
|
#define ARM32 EM_ARM
|
||||||
|
#define AARCH64 EM_AARCH64
|
||||||
|
#define uchar unsigned char
|
||||||
|
#define DATA_SIZE 0x100
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The ELF and Program headers are different sizes depending on 32- and 64-bit
|
||||||
|
* architectures
|
||||||
|
* taken from libgolf.h
|
||||||
|
*/
|
||||||
|
#define EHDR_T(x) Elf##x##_Ehdr
|
||||||
|
#define PHDR_T(x) Elf##x##_Phdr
|
||||||
|
#define EHDR(x) ehdr##x
|
||||||
|
#define PHDR(x) phdr##x
|
||||||
|
#define GET_EHDR(x) (&(elf_ptr->EHDR(x)));
|
||||||
|
#define GET_PHDR(x) (&(elf_ptr->PHDR(x)));
|
||||||
|
#define REF_EHDR(b, x) ((Elf##b##_Ehdr *)ehdr)->x
|
||||||
|
#define REF_PHDR(b, x) ((Elf##b##_Phdr *)phdr)->x
|
||||||
|
int ehdr_size;
|
||||||
|
int phdr_size;
|
||||||
|
/*
|
||||||
|
* This struct holds the bytes that will be executed, and the size.
|
||||||
|
*/
|
||||||
|
typedef struct text_segment {
|
||||||
|
|
||||||
|
size_t text_size;
|
||||||
|
unsigned char *text_segment;
|
||||||
|
|
||||||
|
} TextSegment;
|
||||||
|
|
||||||
|
// example shellcode that exits
|
||||||
|
// taken from libgolf.h
|
||||||
|
unsigned char buf[] = {0xb0, 0x3c, 0x31, 0xff, 0x0f, 0x05};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is the raw ELF file
|
||||||
|
* - EHDR(xx) is the ELF header
|
||||||
|
* - PHDR(xx) is the program header
|
||||||
|
* - text is the text segment
|
||||||
|
* - filename is the name of the golf'd binary
|
||||||
|
* - isa is the target architecture (X86_64, ARM32, AARCH64)
|
||||||
|
* taken from libgolf.h
|
||||||
|
*/
|
||||||
|
typedef struct rawbinary_t {
|
||||||
|
|
||||||
|
EHDR_T(32) EHDR(32);
|
||||||
|
PHDR_T(32) PHDR(32);
|
||||||
|
EHDR_T(64) EHDR(64);
|
||||||
|
PHDR_T(64) PHDR(64);
|
||||||
|
TextSegment text;
|
||||||
|
char *filename;
|
||||||
|
int isa;
|
||||||
|
|
||||||
|
} RawBinary;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copy an E_IDENT array into the corresponding fields in the ELF header
|
||||||
|
* Called by populate_ehdr()
|
||||||
|
* taken from libgolf.h
|
||||||
|
*/
|
||||||
|
int populate_e_ident(RawBinary *elf_ptr, unsigned char e_ident[]) {
|
||||||
|
|
||||||
|
int i;
|
||||||
|
/* Depending on whether the target ISA is 32- or 64-bit, set e_ident */
|
||||||
|
switch (elf_ptr->isa) {
|
||||||
|
|
||||||
|
case X86_64:
|
||||||
|
case AARCH64:
|
||||||
|
for (i = 0; i < EI_NIDENT; i++)
|
||||||
|
elf_ptr->EHDR(64).e_ident[i] = e_ident[i];
|
||||||
|
break;
|
||||||
|
case ARM32:
|
||||||
|
for (i = 0; i < EI_NIDENT; i++)
|
||||||
|
elf_ptr->EHDR(32).e_ident[i] = e_ident[i];
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
exit(1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copy bytes from buf[] array into text_segment in ELF struct
|
||||||
|
* taken from libgolf.h
|
||||||
|
*/
|
||||||
|
int copy_text_segment(RawBinary *elf_ptr, unsigned char buf[], int text_size) {
|
||||||
|
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* Set size of text segment and allocate the buffer */
|
||||||
|
elf_ptr->text.text_size = text_size;
|
||||||
|
elf_ptr->text.text_segment =
|
||||||
|
malloc(elf_ptr->text.text_size * sizeof(unsigned char));
|
||||||
|
|
||||||
|
/* Copy the bytes into the text segment buffer */
|
||||||
|
for (i = 0; i < elf_ptr->text.text_size; i++) {
|
||||||
|
|
||||||
|
elf_ptr->text.text_segment[i] = buf[i];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Populate the ELF Header with sane values
|
||||||
|
* Returns a pointer to an EHDR struct
|
||||||
|
* taken from libgolf.h
|
||||||
|
*/
|
||||||
|
void *populate_ehdr(RawBinary *elf_ptr) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set ehdr_size and phdr_size. Determined by whether target ISA is 32- or
|
||||||
|
* 64-bit.
|
||||||
|
*/
|
||||||
|
switch (elf_ptr->isa) {
|
||||||
|
|
||||||
|
case X86_64:
|
||||||
|
case AARCH64:
|
||||||
|
ehdr_size = sizeof(EHDR_T(64));
|
||||||
|
phdr_size = sizeof(PHDR_T(64));
|
||||||
|
break;
|
||||||
|
case ARM32:
|
||||||
|
ehdr_size = sizeof(EHDR_T(32));
|
||||||
|
phdr_size = sizeof(PHDR_T(32));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
exit(1);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Start with the E_IDENT area at the top of the file */
|
||||||
|
unsigned char e_ident[EI_NIDENT] = {0};
|
||||||
|
|
||||||
|
/* Magic Bytes */
|
||||||
|
e_ident[EI_MAG0] = 0x7F;
|
||||||
|
e_ident[EI_MAG1] = 0x45; // E
|
||||||
|
e_ident[EI_MAG2] = 0x4C; // L
|
||||||
|
e_ident[EI_MAG3] = 0x46; // F
|
||||||
|
|
||||||
|
/*
|
||||||
|
* EI_CLASS denotes the architecture:
|
||||||
|
* ELFCLASS32: 0x01
|
||||||
|
* ELFCLASS64: 0x02
|
||||||
|
*/
|
||||||
|
switch (elf_ptr->isa) {
|
||||||
|
|
||||||
|
case X86_64:
|
||||||
|
case AARCH64:
|
||||||
|
e_ident[EI_CLASS] = ELFCLASS64;
|
||||||
|
break;
|
||||||
|
case ARM32:
|
||||||
|
e_ident[EI_CLASS] = ELFCLASS32;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
exit(1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* EI_DATA denotes the endianness:
|
||||||
|
* ELFDATA2LSB: 0x01
|
||||||
|
* ELFDATA2MSB: 0x02
|
||||||
|
*/
|
||||||
|
e_ident[EI_DATA] = ELFDATA2LSB;
|
||||||
|
|
||||||
|
/* EI_VERSION is always 0x01 */
|
||||||
|
e_ident[EI_VERSION] = EV_CURRENT;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* EI_OSABI defines the target OS. Ignored by most modern ELF parsers.
|
||||||
|
*/
|
||||||
|
e_ident[EI_OSABI] = ELFOSABI_NONE;
|
||||||
|
|
||||||
|
/* EI_ABIVERSION was for sub-classification. Un-defined since Linux 2.6 */
|
||||||
|
e_ident[EI_ABIVERSION] = 0x00;
|
||||||
|
|
||||||
|
/* EI_PAD is currently unused */
|
||||||
|
e_ident[EI_PAD] = 0x00;
|
||||||
|
|
||||||
|
/* Copy the E_IDENT section to the ELF struct */
|
||||||
|
populate_e_ident(elf_ptr, e_ident);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The remainder of the ELF header following E_IDENT follows.
|
||||||
|
*
|
||||||
|
* ehdr is a pointer to either an Elf32_Edhr, or Elf64_Ehdr struct.
|
||||||
|
*/
|
||||||
|
void *ehdr = NULL;
|
||||||
|
switch (elf_ptr->isa) {
|
||||||
|
|
||||||
|
case X86_64:
|
||||||
|
case AARCH64:
|
||||||
|
ehdr = (&(elf_ptr->EHDR(64)));
|
||||||
|
break;
|
||||||
|
case ARM32:
|
||||||
|
ehdr = (&(elf_ptr->EHDR(32)));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
exit(1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Depending on whether the ISA is 32- or 64-bit determines the size of
|
||||||
|
* many of the fields in the ELF Header. This switch case deals with it.
|
||||||
|
*/
|
||||||
|
switch (elf_ptr->isa) {
|
||||||
|
|
||||||
|
// 64-Bit ISAs
|
||||||
|
case X86_64:
|
||||||
|
case AARCH64:
|
||||||
|
/*
|
||||||
|
* e_type specifies what kind of ELF file this is:
|
||||||
|
* ET_NONE: 0x00 // Unknown Type
|
||||||
|
* ET_REL: 0x01 // Relocatable
|
||||||
|
* ET_EXEC: 0x02 // Executable File
|
||||||
|
* ET_DYN: 0x03 // Shared Object
|
||||||
|
* ET_CORE: 0x04 // Core Dump
|
||||||
|
*/
|
||||||
|
REF_EHDR(64, e_type) = ET_EXEC; // 0x0002
|
||||||
|
|
||||||
|
/* e_machine specifies the target ISA */
|
||||||
|
REF_EHDR(64, e_machine) = elf_ptr->isa;
|
||||||
|
|
||||||
|
/* e_version is always set of 0x01 for the original ELF spec */
|
||||||
|
REF_EHDR(64, e_version) = EV_CURRENT; // 0x00000001
|
||||||
|
|
||||||
|
/*
|
||||||
|
* e_entry is the memory address of the entry point
|
||||||
|
* Set by set_entry_point() after p_vaddr is set in the phdr
|
||||||
|
*/
|
||||||
|
REF_EHDR(64, e_entry) = 0x0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* e_phoff points to the start of the program header, which
|
||||||
|
* immediately follows the ELF header
|
||||||
|
*/
|
||||||
|
REF_EHDR(64, e_phoff) = ehdr_size;
|
||||||
|
|
||||||
|
/* e_shoff points to the start of the section header table */
|
||||||
|
REF_EHDR(64, e_shoff) = 0x00;
|
||||||
|
|
||||||
|
/* e_flags is architecture dependent */
|
||||||
|
REF_EHDR(64, e_flags) = 0x0;
|
||||||
|
|
||||||
|
/* e_ehsize contains the size of the ELF header */
|
||||||
|
REF_EHDR(64, e_ehsize) = ehdr_size;
|
||||||
|
|
||||||
|
/* e_phentsize is the size of the program header */
|
||||||
|
REF_EHDR(64, e_phentsize) = phdr_size;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* e_phnum contains the number of entries in the program header
|
||||||
|
* e_phnum * e_phentsize = size of program header table
|
||||||
|
*/
|
||||||
|
REF_EHDR(64, e_phnum) = 0x1;
|
||||||
|
|
||||||
|
/* e_shentsize contains the size of a section header entry */
|
||||||
|
REF_EHDR(64, e_shentsize) = 0x0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* e_shnum contains the number of entries in the section header
|
||||||
|
* e_shnum * e_shentsize = size of section header table
|
||||||
|
*/
|
||||||
|
REF_EHDR(64, e_shnum) = 0x0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* e_shstrndx contains the index of the section header table that
|
||||||
|
* contains the section names
|
||||||
|
*/
|
||||||
|
REF_EHDR(64, e_shstrndx) = 0x0;
|
||||||
|
|
||||||
|
break;
|
||||||
|
// 32-Bit ISAs
|
||||||
|
case ARM32:
|
||||||
|
/*
|
||||||
|
* e_type specifies what kind of ELF file this is:
|
||||||
|
* ET_NONE: 0x00 // Unknown Type
|
||||||
|
* ET_REL: 0x01 // Relocatable
|
||||||
|
* ET_EXEC: 0x02 // Executable File
|
||||||
|
* ET_DYN: 0x03 // Shared Object
|
||||||
|
* ET_CORE: 0x04 // Core Dump
|
||||||
|
*/
|
||||||
|
REF_EHDR(32, e_type) = ET_EXEC; // 0x0002
|
||||||
|
|
||||||
|
/* e_machine specifies the target ISA */
|
||||||
|
REF_EHDR(32, e_machine) = elf_ptr->isa;
|
||||||
|
|
||||||
|
/* e_version is always set of 0x01 for the original ELF spec */
|
||||||
|
REF_EHDR(32, e_version) = EV_CURRENT; // 0x00000001
|
||||||
|
|
||||||
|
/*
|
||||||
|
* e_entry is the memory address of the entry point
|
||||||
|
* Set by set_entry_point() after p_vaddr is set in the phdr
|
||||||
|
*/
|
||||||
|
REF_EHDR(32, e_entry) = 0x0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* e_phoff points to the start of the program header, which
|
||||||
|
* immediately follows the ELF header
|
||||||
|
*/
|
||||||
|
REF_EHDR(32, e_phoff) = ehdr_size;
|
||||||
|
|
||||||
|
/* e_shoff points to the start of the section header table */
|
||||||
|
REF_EHDR(32, e_shoff) = 0x0i;
|
||||||
|
|
||||||
|
/* e_flags is architecture dependent */
|
||||||
|
REF_EHDR(32, e_flags) = 0x0;
|
||||||
|
|
||||||
|
/* e_ehsize contains the size of the ELF header */
|
||||||
|
REF_EHDR(32, e_ehsize) = ehdr_size;
|
||||||
|
|
||||||
|
/* e_phentsize is the size of the program header */
|
||||||
|
REF_EHDR(32, e_phentsize) = phdr_size;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* e_phnum contains the number of entries in the program header
|
||||||
|
* e_phnum * e_phentsize = size of program header table
|
||||||
|
*/
|
||||||
|
REF_EHDR(32, e_phnum) = 0x1;
|
||||||
|
|
||||||
|
/* e_shentsize contains the size of a section header entry */
|
||||||
|
REF_EHDR(32, e_shentsize) = 0x0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* e_shnum contains the number of entries in the section header
|
||||||
|
* e_shnum * e_shentsize = size of section header table
|
||||||
|
*/
|
||||||
|
REF_EHDR(32, e_shnum) = 0x0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* e_shstrndx contains the index of the section header table that
|
||||||
|
* contains the section names
|
||||||
|
*/
|
||||||
|
REF_EHDR(32, e_shnum) = 0x0;
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return ehdr;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Populate the program headers with sane values
|
||||||
|
* Returns a pointer to a PHDR struct
|
||||||
|
* taken from libgolf.h
|
||||||
|
*/
|
||||||
|
void *populate_phdr(RawBinary *elf_ptr) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* All offsets are relative to the start of the program header (0x40)
|
||||||
|
*
|
||||||
|
* phdr is a pointer to either an Elf32_Phdr, or Elf64_Phdr struct.
|
||||||
|
*/
|
||||||
|
void *phdr = NULL;
|
||||||
|
switch (elf_ptr->isa) {
|
||||||
|
|
||||||
|
case X86_64:
|
||||||
|
case AARCH64:
|
||||||
|
phdr = (&(elf_ptr->PHDR(64)));
|
||||||
|
break;
|
||||||
|
case ARM32:
|
||||||
|
phdr = (&(elf_ptr->PHDR(32)));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
exit(1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Depending on whether the ISA is 32- or 64-bit determines the size of
|
||||||
|
* many of the fields in the Progra Header. This switch case deals with it.
|
||||||
|
*/
|
||||||
|
switch (elf_ptr->isa) {
|
||||||
|
|
||||||
|
// 64-Bit ISAs
|
||||||
|
case X86_64:
|
||||||
|
case AARCH64:
|
||||||
|
/*
|
||||||
|
* p_type identifies what type of segment this is
|
||||||
|
* PT_NULL: 0x0 // Unused
|
||||||
|
* PT_LOAD: 0x1 // Loadable Segment
|
||||||
|
* PT_DYNAMIC: 0x2 // Dynamic Linker Information
|
||||||
|
* PT_INTERP: 0x3 // Interpreter Information
|
||||||
|
* PT_NOTE: 0x4 // Auxiliary Information
|
||||||
|
* PT_SHLIB: 0x5 // Reserved
|
||||||
|
* PT_PHDR: 0x6 // Segment with Program Header
|
||||||
|
* PT_TLS: 0x7 // Thread Local Storage
|
||||||
|
*/
|
||||||
|
REF_PHDR(64, p_type) = PT_LOAD; // 0x1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* p_flags defines permissions for this section
|
||||||
|
* PF_R: 0x4 // Read
|
||||||
|
* PF_W: 0x2 // Write
|
||||||
|
* PF_X: 0x1 // Execute
|
||||||
|
*/
|
||||||
|
REF_PHDR(64, p_flags) = PF_R | PF_X; // 0x5
|
||||||
|
|
||||||
|
/*
|
||||||
|
* p_offset is the offset in the file image (relative to the start
|
||||||
|
* of the program header) for this segment.
|
||||||
|
*/
|
||||||
|
REF_PHDR(64, p_offset) = 0x0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* p_vaddr is the virtual address where this segment should be loaded
|
||||||
|
* p_paddr is for the physical address (unused by System V)
|
||||||
|
*/
|
||||||
|
REF_PHDR(64, p_vaddr) = 0x400000;
|
||||||
|
REF_PHDR(64, p_paddr) = 0x400000;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* p_filesz is the size of the segment in the file image
|
||||||
|
* p_memsz is the size of the segment in memory
|
||||||
|
*
|
||||||
|
* Note: p_filesz doesn't have to equal p_memsz
|
||||||
|
*/
|
||||||
|
REF_PHDR(64, p_filesz) = elf_ptr->text.text_size;
|
||||||
|
REF_PHDR(64, p_memsz) = elf_ptr->text.text_size;
|
||||||
|
|
||||||
|
break;
|
||||||
|
// 32-Bit ISAs
|
||||||
|
case ARM32:
|
||||||
|
/*
|
||||||
|
* p_type identifies what type of segment this is
|
||||||
|
* PT_NULL: 0x0 // Unused
|
||||||
|
* PT_LOAD: 0x1 // Loadable Segment
|
||||||
|
* PT_DYNAMIC: 0x2 // Dynamic Linker Information
|
||||||
|
* PT_INTERP: 0x3 // Interpreter Information
|
||||||
|
* PT_NOTE: 0x4 // Auxiliary Information
|
||||||
|
* PT_SHLIB: 0x5 // Reserved
|
||||||
|
* PT_PHDR: 0x6 // Segment with Program Header
|
||||||
|
* PT_TLS: 0x7 // Thread Local Storage
|
||||||
|
*/
|
||||||
|
REF_PHDR(32, p_type) = PT_LOAD; // 0x1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* p_flags defines permissions for this section
|
||||||
|
* PF_R: 0x4 // Read
|
||||||
|
* PF_W: 0x2 // Write
|
||||||
|
* PF_X: 0x1 // Execute
|
||||||
|
*/
|
||||||
|
REF_PHDR(32, p_flags) = PF_R | PF_X; // 0x5
|
||||||
|
|
||||||
|
/*
|
||||||
|
* p_offset is the offset in the file image (relative to the start
|
||||||
|
* of the program header) for this segment.
|
||||||
|
*/
|
||||||
|
REF_PHDR(32, p_offset) = 0x0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* p_vaddr is the virtual address where this segment should be loaded
|
||||||
|
* p_paddr is for the physical address (unused by System V)
|
||||||
|
*/
|
||||||
|
REF_PHDR(32, p_vaddr) = 0x10000;
|
||||||
|
REF_PHDR(32, p_paddr) = 0x10000;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* p_filesz is the size of the segment in the file image
|
||||||
|
* p_memsz is the size of the segment in memory
|
||||||
|
*
|
||||||
|
* Note: p_filesz doesn't have to equal p_memsz
|
||||||
|
*/
|
||||||
|
REF_PHDR(32, p_filesz) = elf_ptr->text.text_size;
|
||||||
|
REF_PHDR(32, p_memsz) = elf_ptr->text.text_size;
|
||||||
|
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
exit(1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* p_align is the memory alignment
|
||||||
|
*
|
||||||
|
* Note: p_vaddr = p_offset % p_align
|
||||||
|
*/
|
||||||
|
switch (elf_ptr->isa) {
|
||||||
|
|
||||||
|
case X86_64:
|
||||||
|
REF_PHDR(64, p_align) = 0x400000;
|
||||||
|
break;
|
||||||
|
case ARM32:
|
||||||
|
REF_PHDR(32, p_align) = 0x10000;
|
||||||
|
break;
|
||||||
|
case AARCH64:
|
||||||
|
REF_PHDR(64, p_align) = 0x400000;
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return phdr;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* e_entry depends on p_vaddr, so has to be set after populate_ehdr()
|
||||||
|
* and populate_phdr() have been called.
|
||||||
|
* taken from libgolf.h
|
||||||
|
*/
|
||||||
|
int set_entry_point(RawBinary *elf_ptr) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Once the whole ELF file is copied into memory, control is handed to
|
||||||
|
* e_entry. Relative to the process's virtual memory address, the .text
|
||||||
|
* segment will be located immediately after the ELF and program header.
|
||||||
|
*
|
||||||
|
* ehdr and phdr are pointers to the ELF and Program headers respectively.
|
||||||
|
* The switch case casts and assigns them to the correct fields of the ELF
|
||||||
|
* struct, then sets ehdr->e_entry.
|
||||||
|
*/
|
||||||
|
void *ehdr, *phdr;
|
||||||
|
|
||||||
|
switch (elf_ptr->isa) {
|
||||||
|
|
||||||
|
case X86_64:
|
||||||
|
case AARCH64:
|
||||||
|
ehdr = GET_EHDR(64);
|
||||||
|
phdr = GET_PHDR(64);
|
||||||
|
REF_EHDR(64, e_entry) = REF_PHDR(64, p_vaddr) + ehdr_size + phdr_size;
|
||||||
|
break;
|
||||||
|
case ARM32:
|
||||||
|
ehdr = GET_EHDR(32);
|
||||||
|
phdr = GET_PHDR(32);
|
||||||
|
REF_EHDR(32, e_entry) = REF_PHDR(32, p_vaddr) + ehdr_size + phdr_size;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
exit(1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef struct my_mutator {
|
||||||
|
|
||||||
|
afl_state_t *afl;
|
||||||
|
size_t trim_size_current;
|
||||||
|
int trimmming_steps;
|
||||||
|
int cur_step;
|
||||||
|
u8 *mutated_out, *post_process_buf, *trim_buf;
|
||||||
|
|
||||||
|
} my_mutator_t;
|
||||||
|
|
||||||
|
my_mutator_t *afl_custom_init(afl_state_t *afl, unsigned int seed) {
|
||||||
|
|
||||||
|
srand(seed); // needed also by surgical_havoc_mutate()
|
||||||
|
my_mutator_t *data = calloc(1, sizeof(my_mutator_t));
|
||||||
|
if (!data) {
|
||||||
|
|
||||||
|
perror("afl_custom_init alloc");
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((data->mutated_out = (u8 *)malloc(MAX_FILE)) == NULL) {
|
||||||
|
|
||||||
|
perror("afl_custom_init malloc");
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((data->post_process_buf = (u8 *)malloc(MAX_FILE)) == NULL) {
|
||||||
|
|
||||||
|
perror("afl_custom_init malloc");
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((data->trim_buf = (u8 *)malloc(MAX_FILE)) == NULL) {
|
||||||
|
|
||||||
|
perror("afl_custom_init malloc");
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
data->afl = afl;
|
||||||
|
return data;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t afl_custom_fuzz(my_mutator_t *data, uint8_t *in_buf, size_t buf_size,
|
||||||
|
u8 **out_buf, uint8_t *add_buf,
|
||||||
|
size_t add_buf_size, // add_buf can be NULL
|
||||||
|
size_t max_size) {
|
||||||
|
|
||||||
|
RawBinary elf_obj;
|
||||||
|
RawBinary *elf = &elf_obj;
|
||||||
|
elf->isa = 62;
|
||||||
|
Elf64_Ehdr *ehdr;
|
||||||
|
Elf64_Phdr *phdr;
|
||||||
|
copy_text_segment(elf, buf, sizeof(buf));
|
||||||
|
ehdr = populate_ehdr(elf);
|
||||||
|
phdr = populate_phdr(elf);
|
||||||
|
set_entry_point(elf);
|
||||||
|
|
||||||
|
size_t mutated_size = ehdr_size + phdr_size + elf->text.text_size;
|
||||||
|
int pos = 0;
|
||||||
|
// example fields
|
||||||
|
ehdr->e_ident[EI_CLASS] = (uint8_t *)(in_buf + pos++);
|
||||||
|
ehdr->e_ident[EI_DATA] = (uint8_t *)(in_buf + pos++);
|
||||||
|
ehdr->e_ident[EI_VERSION] = (uint8_t *)(in_buf + pos++);
|
||||||
|
ehdr->e_ident[EI_OSABI] = (uint8_t *)(in_buf + pos++);
|
||||||
|
for (int i = 0x8; i < 0x10; ++i) {
|
||||||
|
|
||||||
|
(ehdr->e_ident)[i] = (uint8_t *)(in_buf + pos++);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ehdr->e_version = (uint32_t *)(in_buf + pos);
|
||||||
|
pos += 4;
|
||||||
|
// sections headers
|
||||||
|
ehdr->e_shoff = (uint64_t *)(in_buf + pos);
|
||||||
|
pos += 8;
|
||||||
|
ehdr->e_shentsize = (uint16_t *)(in_buf + pos);
|
||||||
|
pos += 2;
|
||||||
|
ehdr->e_shnum = (uint16_t *)(in_buf + pos);
|
||||||
|
pos += 2;
|
||||||
|
ehdr->e_shstrndx = (uint16_t *)(in_buf + pos);
|
||||||
|
pos += 2;
|
||||||
|
ehdr->e_flags = (uint32_t *)(in_buf + pos);
|
||||||
|
pos += 4;
|
||||||
|
// physical addr
|
||||||
|
phdr->p_paddr = (uint64_t *)(in_buf + pos);
|
||||||
|
pos += 8;
|
||||||
|
phdr->p_align = (uint64_t *)(in_buf + pos);
|
||||||
|
pos += 8;
|
||||||
|
|
||||||
|
/* mimic GEN_ELF()
|
||||||
|
* Write:
|
||||||
|
* - ELF Header
|
||||||
|
* - Program Header
|
||||||
|
* - Text Segment
|
||||||
|
*/
|
||||||
|
memcpy(data->mutated_out, ehdr, ehdr_size);
|
||||||
|
memcpy(data->mutated_out + ehdr_size, phdr, phdr_size);
|
||||||
|
memcpy(data->mutated_out + ehdr_size + phdr_size, elf->text.text_segment,
|
||||||
|
elf->text.text_size);
|
||||||
|
|
||||||
|
*out_buf = data->mutated_out;
|
||||||
|
return mutated_size;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void afl_custom_deinit(my_mutator_t *data) {
|
||||||
|
|
||||||
|
free(data->post_process_buf);
|
||||||
|
free(data->mutated_out);
|
||||||
|
free(data->trim_buf);
|
||||||
|
free(data);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -133,6 +133,11 @@ def fuzz(buf, add_buf, max_size):
|
|||||||
# @return: The buffer containing the test case after
|
# @return: The buffer containing the test case after
|
||||||
# '''
|
# '''
|
||||||
# return buf
|
# return buf
|
||||||
|
# def post_run():
|
||||||
|
# '''
|
||||||
|
# Called after each time the execution of the target program by AFL++
|
||||||
|
# '''
|
||||||
|
# pass
|
||||||
#
|
#
|
||||||
# def havoc_mutation(buf, max_size):
|
# def havoc_mutation(buf, max_size):
|
||||||
# '''
|
# '''
|
||||||
|
@ -3,6 +3,70 @@
|
|||||||
This is the list of all noteworthy changes made in every public
|
This is the list of all noteworthy changes made in every public
|
||||||
release of the tool. See README.md for the general instruction manual.
|
release of the tool. See README.md for the general instruction manual.
|
||||||
|
|
||||||
|
### Version ++4.09c (release)
|
||||||
|
- afl-fuzz:
|
||||||
|
- fixed the new mutation implementation for two bugs
|
||||||
|
- added `AFL_FINAL_SYNC` which forces a final fuzzer sync (also for `-F`)
|
||||||
|
before terminating.
|
||||||
|
- added AFL_IGNORE_SEED_PROBLEMS to skip over seeds that time out instead
|
||||||
|
of exiting with an error message
|
||||||
|
- allow -S/-M naming up to 50 characters (from 24)
|
||||||
|
- CMPLOG:
|
||||||
|
- added scale support (-l S)
|
||||||
|
- skip unhelpful insertions (u8)
|
||||||
|
- added --version and --help command line parameters
|
||||||
|
- fixed endless loop when reading malformed dictionaries
|
||||||
|
- new custom mutator function: post_run - thanks to yangzao!
|
||||||
|
- afl-whatsup:
|
||||||
|
- detect instanced that are starting up and show them as such as not dead
|
||||||
|
- now also shows coverage reached
|
||||||
|
- option -m shows only very relevant stats
|
||||||
|
- option -n will not use color in the output
|
||||||
|
- instrumentation:
|
||||||
|
- fix for a few string compare transform functions for LAF
|
||||||
|
- we are instrumenting __cxx internal functions again. this might break
|
||||||
|
a few targets, please report if so.
|
||||||
|
- frida_mode:
|
||||||
|
- fixes support for large map offsets
|
||||||
|
- support for AFL_FUZZER_LOOPCOUNT for afl.rs and LLVMFuzzerTestOneInput
|
||||||
|
- afl-cmin/afl-cmin.bash: prevent unneeded file errors
|
||||||
|
- added new tool afl-addseeds that adds new seeds to a running campaign
|
||||||
|
- added benchmark/benchmark.py if you want to see how good your fuzzing
|
||||||
|
speed is in comparison to other setups.
|
||||||
|
|
||||||
|
|
||||||
|
### Version ++4.08c (release)
|
||||||
|
- afl-fuzz:
|
||||||
|
- new mutation engine: mutations that favor discovery more paths are
|
||||||
|
prefered until no new finds for 10 minutes then switching to mutations
|
||||||
|
that favor triggering crashes. Modes and switch time can be configured
|
||||||
|
with `-P`. Also input mode for the target can be defined with `-a` to
|
||||||
|
be `text` or `binary` (defaults to `generic`)
|
||||||
|
- new custom mutator that has the new afl++ engine (so it can easily
|
||||||
|
incorporated into new custom mutators), and also comes with a standalone
|
||||||
|
command line tool! See custom_mutators/aflpp/standalone/
|
||||||
|
- display the state of the fuzzing run in the UI :-)
|
||||||
|
- fix timeout setting if '+' is used or a session is restarted
|
||||||
|
- -l X option to enable base64 transformation solving
|
||||||
|
- allow to disable CMPLOG with '-c -' (e.g. afl.rs enforces '-c 0' on
|
||||||
|
every instance which is counterproductive).
|
||||||
|
- afl-cmin/afl-cmin.bash:
|
||||||
|
- fixed a bug inherited from vanilla AFL where a coverage of
|
||||||
|
map[123] = 11 would be the same as map[1123] = 1
|
||||||
|
- warn on crashing inputs
|
||||||
|
- adjust threads if less inputs than threads specified
|
||||||
|
- afl-cc:
|
||||||
|
- fixed an off-by-one instrumentation of iselect, hurting coverage a bit.
|
||||||
|
Thanks to @amykweon for spotting and fixing!
|
||||||
|
- @toka fixed a bug in laf-intel signed integer comparison splitting,
|
||||||
|
thanks a lot!!
|
||||||
|
- more LLVM compatability
|
||||||
|
- frida_mode:
|
||||||
|
- support for long form instrumentation on x86_x64 and arm64
|
||||||
|
- renamed utils/get_symbol_addr.sh to utils/frida_get_symbol_addr.sh
|
||||||
|
- qemu_mode:
|
||||||
|
- added qemu_mode/utils/qemu_get_symbol_addr.sh
|
||||||
|
|
||||||
### Version ++4.07c (release)
|
### Version ++4.07c (release)
|
||||||
- afl-fuzz:
|
- afl-fuzz:
|
||||||
- reverse reading the seeds only on restarts (increases performance)
|
- reverse reading the seeds only on restarts (increases performance)
|
||||||
@ -31,7 +95,6 @@
|
|||||||
- TritonDSE in custom_mutators/aflpp_tritondse
|
- TritonDSE in custom_mutators/aflpp_tritondse
|
||||||
- SymQEMU in custom_mutators/symqemu
|
- SymQEMU in custom_mutators/symqemu
|
||||||
|
|
||||||
|
|
||||||
### Version ++4.06c (release)
|
### Version ++4.06c (release)
|
||||||
- afl-fuzz:
|
- afl-fuzz:
|
||||||
- ensure temporary file descriptor is closed when not used
|
- ensure temporary file descriptor is closed when not used
|
||||||
|
40
docs/FAQ.md
40
docs/FAQ.md
@ -29,8 +29,8 @@ If you find an interesting or important question missing, submit it via
|
|||||||
which then implemented their own research and features, making it now by far
|
which then implemented their own research and features, making it now by far
|
||||||
the most flexible and feature rich guided fuzzer available as open source. And
|
the most flexible and feature rich guided fuzzer available as open source. And
|
||||||
in independent fuzzing benchmarks it is one of the best fuzzers available,
|
in independent fuzzing benchmarks it is one of the best fuzzers available,
|
||||||
e.g., [Fuzzbench
|
e.g.,
|
||||||
Report](https://www.fuzzbench.com/reports/2020-08-03/index.html).
|
[Fuzzbench Report](https://www.fuzzbench.com/reports/2020-08-03/index.html).
|
||||||
</p></details>
|
</p></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@ -103,6 +103,42 @@ If you find an interesting or important question missing, submit it via
|
|||||||
to itself, this too would be an edge.
|
to itself, this too would be an edge.
|
||||||
</p></details>
|
</p></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary id="should-you-ever-stop-afl-fuzz-minimize-the-corpus-and-restart">Should you ever stop afl-fuzz, minimize the corpus and restart?</summary><p>
|
||||||
|
|
||||||
|
To stop afl-fuzz, minimize it's corpus and restart you would usually do:
|
||||||
|
|
||||||
|
```
|
||||||
|
Control-C # to terminate afl-fuzz
|
||||||
|
$ afl-cmin -T nproc -i out/default/queue -o minimized_queue -- ./target
|
||||||
|
$ AFL_FAST_CAL=1 AFL_CMPLOG_ONLY_NEW=1 afl-fuzz -i minimized_queue -o out2 [other options] -- ./target
|
||||||
|
```
|
||||||
|
|
||||||
|
If this improves fuzzing or not is debated and no consensus has been reached
|
||||||
|
or in-depth analysis been performed.
|
||||||
|
|
||||||
|
On the pro side:
|
||||||
|
* The queue/corpus is reduced (up to 20%) by removing intermediate paths
|
||||||
|
that are maybe not needed anymore.
|
||||||
|
|
||||||
|
On the con side:
|
||||||
|
* Fuzzing time is lost for the time the fuzzing is stopped, minimized and
|
||||||
|
restarted.
|
||||||
|
|
||||||
|
The the big question:
|
||||||
|
* Does a minimized queue/corpus improve finding new coverage or does it
|
||||||
|
hinder it?
|
||||||
|
|
||||||
|
The AFL++ team's own limited analysis seem to to show that keeping
|
||||||
|
intermediate paths help to find more coverage, at least for afl-fuzz.
|
||||||
|
|
||||||
|
For honggfuzz in comparison it is a good idea to restart it from time to
|
||||||
|
time if you have other fuzzers (e.g: AFL++) running in parallel to sync
|
||||||
|
the finds of other fuzzers to honggfuzz as it has no syncing feature like
|
||||||
|
AFL++ or libfuzzer.
|
||||||
|
|
||||||
|
</p></details>
|
||||||
|
|
||||||
## Targets
|
## Targets
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
@ -7,7 +7,7 @@ You can use the [Dockerfile](../Dockerfile) or just pull directly from the
|
|||||||
Docker Hub (for x86_64 and arm64):
|
Docker Hub (for x86_64 and arm64):
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
docker pull aflplusplus/aflplusplus:
|
docker pull aflplusplus/aflplusplus:latest
|
||||||
docker run -ti -v /location/of/your/target:/src aflplusplus/aflplusplus
|
docker run -ti -v /location/of/your/target:/src aflplusplus/aflplusplus
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -87,6 +87,7 @@ These build options exist:
|
|||||||
* INTROSPECTION - compile afl-fuzz with mutation introspection
|
* INTROSPECTION - compile afl-fuzz with mutation introspection
|
||||||
* NO_PYTHON - disable python support
|
* NO_PYTHON - disable python support
|
||||||
* NO_SPLICING - disables splicing mutation in afl-fuzz, not recommended for normal fuzzing
|
* NO_SPLICING - disables splicing mutation in afl-fuzz, not recommended for normal fuzzing
|
||||||
|
* NO_UTF - do not use UTF-8 for line rendering in status screen (fallback to G1 box drawing, of vanilla AFL)
|
||||||
* NO_NYX - disable building nyx mode dependencies
|
* NO_NYX - disable building nyx mode dependencies
|
||||||
* NO_CORESIGHT - disable building coresight (arm64 only)
|
* NO_CORESIGHT - disable building coresight (arm64 only)
|
||||||
* NO_UNICORN_ARM64 - disable building unicorn on arm64
|
* NO_UNICORN_ARM64 - disable building unicorn on arm64
|
||||||
|
@ -5,6 +5,10 @@ instrumentation-guided genetic algorithm. It uses a modified form of edge
|
|||||||
coverage to effortlessly pick up subtle, local-scale changes to program control
|
coverage to effortlessly pick up subtle, local-scale changes to program control
|
||||||
flow.
|
flow.
|
||||||
|
|
||||||
|
Note: If you are interested in a more current up-to-date deep dive how AFL++
|
||||||
|
works then we commend this blog post:
|
||||||
|
[https://blog.ritsec.club/posts/afl-under-hood/](https://blog.ritsec.club/posts/afl-under-hood/)
|
||||||
|
|
||||||
Simplifying a bit, the overall algorithm can be summed up as:
|
Simplifying a bit, the overall algorithm can be summed up as:
|
||||||
|
|
||||||
1) Load user-supplied initial test cases into the queue.
|
1) Load user-supplied initial test cases into the queue.
|
||||||
@ -419,8 +423,8 @@ the process. Be sure to consult this file especially if any UI elements are
|
|||||||
highlighted in red.
|
highlighted in red.
|
||||||
|
|
||||||
The fuzzing process will continue until you press Ctrl-C. At a minimum, you want
|
The fuzzing process will continue until you press Ctrl-C. At a minimum, you want
|
||||||
to allow the fuzzer to complete one queue cycle, which may take anywhere from a
|
to allow the fuzzer to at least one queue cycle without any new finds, which may
|
||||||
couple of hours to a week or so.
|
take anywhere from a couple of hours to a week or so.
|
||||||
|
|
||||||
There are three subdirectories created within the output directory and updated
|
There are three subdirectories created within the output directory and updated
|
||||||
in real-time:
|
in real-time:
|
||||||
|
@ -125,8 +125,9 @@ def deinit(): # optional for Python
|
|||||||
|
|
||||||
- `queue_get` (optional):
|
- `queue_get` (optional):
|
||||||
|
|
||||||
This method determines whether the custom fuzzer should fuzz the current
|
This method determines whether AFL++ should fuzz the current
|
||||||
queue entry or not
|
queue entry or not: all defined custom mutators as well as
|
||||||
|
all AFL++'s mutators.
|
||||||
|
|
||||||
- `fuzz_count` (optional):
|
- `fuzz_count` (optional):
|
||||||
|
|
||||||
|
@ -135,6 +135,12 @@ subset of the settings discussed in section 1, with the exception of:
|
|||||||
- `TMPDIR` and `AFL_KEEP_ASSEMBLY`, since no temporary assembly files are
|
- `TMPDIR` and `AFL_KEEP_ASSEMBLY`, since no temporary assembly files are
|
||||||
created.
|
created.
|
||||||
|
|
||||||
|
- LLVM modes compiling C++ will normally set rpath in the binary if LLVM is
|
||||||
|
not in a usual location (/usr or /lib). Setting `AFL_LLVM_NO_RPATH=1`
|
||||||
|
disables this behaviour in case it isn't desired. For example, the compiling
|
||||||
|
toolchain might be in a custom location, but the target machine has LLVM
|
||||||
|
runtime libs in the search path.
|
||||||
|
|
||||||
Then there are a few specific features that are only available in
|
Then there are a few specific features that are only available in
|
||||||
instrumentation mode:
|
instrumentation mode:
|
||||||
|
|
||||||
@ -327,6 +333,9 @@ checks or alter some of the more exotic semantics of the tool:
|
|||||||
(`-i in`). This is an important feature to set when resuming a fuzzing
|
(`-i in`). This is an important feature to set when resuming a fuzzing
|
||||||
session.
|
session.
|
||||||
|
|
||||||
|
- `AFL_IGNORE_SEED_PROBLEMS` will skip over crashes and timeouts in the seeds
|
||||||
|
instead of exiting.
|
||||||
|
|
||||||
- Setting `AFL_CRASH_EXITCODE` sets the exit code AFL++ treats as crash. For
|
- Setting `AFL_CRASH_EXITCODE` sets the exit code AFL++ treats as crash. For
|
||||||
example, if `AFL_CRASH_EXITCODE='-1'` is set, each input resulting in a `-1`
|
example, if `AFL_CRASH_EXITCODE='-1'` is set, each input resulting in a `-1`
|
||||||
return code (i.e. `exit(-1)` got called), will be treated as if a crash had
|
return code (i.e. `exit(-1)` got called), will be treated as if a crash had
|
||||||
@ -365,6 +374,9 @@ checks or alter some of the more exotic semantics of the tool:
|
|||||||
- `AFL_EXIT_ON_SEED_ISSUES` will restore the vanilla afl-fuzz behavior which
|
- `AFL_EXIT_ON_SEED_ISSUES` will restore the vanilla afl-fuzz behavior which
|
||||||
does not allow crashes or timeout seeds in the initial -i corpus.
|
does not allow crashes or timeout seeds in the initial -i corpus.
|
||||||
|
|
||||||
|
- `AFL_CRASHING_SEEDS_AS_NEW_CRASH` will treat crashing seeds as new crash. these
|
||||||
|
crashes will be written to crashes folder as op:dry_run, and orig:<seed_file_name>.
|
||||||
|
|
||||||
- `AFL_EXIT_ON_TIME` causes afl-fuzz to terminate if no new paths were found
|
- `AFL_EXIT_ON_TIME` causes afl-fuzz to terminate if no new paths were found
|
||||||
within a specified period of time (in seconds). May be convenient for some
|
within a specified period of time (in seconds). May be convenient for some
|
||||||
types of automated jobs.
|
types of automated jobs.
|
||||||
@ -409,10 +421,15 @@ checks or alter some of the more exotic semantics of the tool:
|
|||||||
set `AFL_IGNORE_PROBLEMS`. If you additionally want to also ignore coverage
|
set `AFL_IGNORE_PROBLEMS`. If you additionally want to also ignore coverage
|
||||||
from late loaded libraries, you can set `AFL_IGNORE_PROBLEMS_COVERAGE`.
|
from late loaded libraries, you can set `AFL_IGNORE_PROBLEMS_COVERAGE`.
|
||||||
|
|
||||||
- When running in the `-M` or `-S` mode, setting `AFL_IMPORT_FIRST` causes the
|
- When running with multiple afl-fuzz or with `-F`, setting `AFL_IMPORT_FIRST`
|
||||||
fuzzer to import test cases from other instances before doing anything else.
|
causes the fuzzer to import test cases from other instances before doing
|
||||||
This makes the "own finds" counter in the UI more accurate. Beyond counter
|
anything else. This makes the "own finds" counter in the UI more accurate.
|
||||||
aesthetics, not much else should change.
|
|
||||||
|
- When running with multiple afl-fuzz or with `-F`, setting `AFL_FINAL_SYNC`
|
||||||
|
will cause the fuzzer to perform a final import of test cases when
|
||||||
|
terminating. This is beneficial for `-M` main fuzzers to ensure it has all
|
||||||
|
unique test cases and hence you only need to `afl-cmin` this single
|
||||||
|
queue.
|
||||||
|
|
||||||
- Setting `AFL_INPUT_LEN_MIN` and `AFL_INPUT_LEN_MAX` are an alternative to
|
- Setting `AFL_INPUT_LEN_MIN` and `AFL_INPUT_LEN_MAX` are an alternative to
|
||||||
the afl-fuzz -g/-G command line option to control the minimum/maximum
|
the afl-fuzz -g/-G command line option to control the minimum/maximum
|
||||||
@ -585,7 +602,8 @@ checks or alter some of the more exotic semantics of the tool:
|
|||||||
Note that this is not a compile time option but a runtime option :-)
|
Note that this is not a compile time option but a runtime option :-)
|
||||||
|
|
||||||
- Set `AFL_PIZZA_MODE` to 1 to enable the April 1st stats menu, set to -1
|
- Set `AFL_PIZZA_MODE` to 1 to enable the April 1st stats menu, set to -1
|
||||||
to disable although it is 1st of April.
|
to disable although it is 1st of April. 0 is the default and means enable
|
||||||
|
on the 1st of April automatically.
|
||||||
|
|
||||||
- If you need a specific interval to update fuzzer_stats file, you can
|
- If you need a specific interval to update fuzzer_stats file, you can
|
||||||
set `AFL_FUZZER_STATS_UPDATE_INTERVAL` to the interval in seconds you'd
|
set `AFL_FUZZER_STATS_UPDATE_INTERVAL` to the interval in seconds you'd
|
||||||
|
@ -599,32 +599,40 @@ during fuzzing) and their number, a value between 50-500MB is recommended. You
|
|||||||
can set the cache size (in MB) by setting the environment variable
|
can set the cache size (in MB) by setting the environment variable
|
||||||
`AFL_TESTCACHE_SIZE`.
|
`AFL_TESTCACHE_SIZE`.
|
||||||
|
|
||||||
There should be one main fuzzer (`-M main-$HOSTNAME` option) and as many
|
There should be one main fuzzer (`-M main-$HOSTNAME` option - set also
|
||||||
secondary fuzzers (e.g., `-S variant1`) as you have cores that you use. Every
|
`AFL_FINAL_SYNC=1`) and as many secondary fuzzers (e.g., `-S variant1`) as you
|
||||||
`-M`/`-S` entry needs a unique name (that can be whatever), however, the same
|
have cores that you use. Every `-M`/`-S` entry needs a unique name (that can be
|
||||||
`-o` output directory location has to be used for all instances.
|
whatever), however, the same `-o` output directory location has to be used for
|
||||||
|
all instances.
|
||||||
|
|
||||||
For every secondary fuzzer there should be a variation, e.g.:
|
For every secondary fuzzer there should be a variation, e.g.:
|
||||||
* one should fuzz the target that was compiled differently: with sanitizers
|
* one should fuzz the target that was compiled with sanitizers activated
|
||||||
activated (`export AFL_USE_ASAN=1 ; export AFL_USE_UBSAN=1 ; export
|
(`export AFL_USE_ASAN=1 ; export AFL_USE_UBSAN=1 ; export AFL_USE_CFISAN=1`)
|
||||||
AFL_USE_CFISAN=1`)
|
|
||||||
* one or two should fuzz the target with CMPLOG/redqueen (see above), at least
|
* one or two should fuzz the target with CMPLOG/redqueen (see above), at least
|
||||||
one cmplog instance should follow transformations (`-l AT`)
|
one cmplog instance should follow transformations (`-l 2AT`)
|
||||||
* one to three fuzzers should fuzz a target compiled with laf-intel/COMPCOV (see
|
* one to three fuzzers should fuzz a target compiled with laf-intel/COMPCOV (see
|
||||||
above). Important note: If you run more than one laf-intel/COMPCOV fuzzer and
|
above). Important note: If you run more than one laf-intel/COMPCOV fuzzer and
|
||||||
you want them to share their intermediate results, the main fuzzer (`-M`) must
|
you want them to share their intermediate results, the main fuzzer (`-M`) must
|
||||||
be one of them! (Although this is not really recommended.)
|
be one of them (although this is not really recommended).
|
||||||
|
|
||||||
All other secondaries should be used like this:
|
The other secondaries should be run like this:
|
||||||
* a quarter to a third with the MOpt mutator enabled: `-L 0`
|
* 10% with the MOpt mutator enabled: `-L 0`
|
||||||
* run with a different power schedule, recommended are: `fast` (default),
|
* 10% should use the old queue cycling with `-Z`
|
||||||
|
* 50-70% should run with `AFL_DISABLE_TRIM`
|
||||||
|
* 40% should run with `-P explore` and 20% with `-P exploit`
|
||||||
|
* If you use `-a` then set 30% of the instances to not use `-a`; if you did
|
||||||
|
not set `-a` (why??), then set 30% to `-a ascii` and 30% to `-a binary`.
|
||||||
|
* run each with a different power schedule, recommended are: `fast` (default),
|
||||||
`explore`, `coe`, `lin`, `quad`, `exploit`, and `rare` which you can set with
|
`explore`, `coe`, `lin`, `quad`, `exploit`, and `rare` which you can set with
|
||||||
the `-p` option, e.g., `-p explore`. See the
|
the `-p` option, e.g., `-p explore`. See the
|
||||||
[FAQ](FAQ.md#what-are-power-schedules) for details.
|
[FAQ](FAQ.md#what-are-power-schedules) for details.
|
||||||
* a few instances should use the old queue cycling with `-Z`
|
|
||||||
|
It can be useful to set `AFL_IGNORE_SEED_PROBLEMS=1` to skip over seeds that
|
||||||
|
crash or timeout during startup.
|
||||||
|
|
||||||
Also, it is recommended to set `export AFL_IMPORT_FIRST=1` to load test cases
|
Also, it is recommended to set `export AFL_IMPORT_FIRST=1` to load test cases
|
||||||
from other fuzzers in the campaign first.
|
from other fuzzers in the campaign first. But note that can slow down the start
|
||||||
|
of the first fuzz by quite a lot of you have many fuzzers and/or many seeds.
|
||||||
|
|
||||||
If you have a large corpus, a corpus from a previous run or are fuzzing in a CI,
|
If you have a large corpus, a corpus from a previous run or are fuzzing in a CI,
|
||||||
then also set `export AFL_CMPLOG_ONLY_NEW=1` and `export AFL_FAST_CAL=1`.
|
then also set `export AFL_CMPLOG_ONLY_NEW=1` and `export AFL_FAST_CAL=1`.
|
||||||
@ -940,7 +948,7 @@ too long for your overall available fuzz run time.
|
|||||||
* 65% for `AFL_DISABLE_TRIM`
|
* 65% for `AFL_DISABLE_TRIM`
|
||||||
* 50% for `AFL_KEEP_TIMEOUTS`
|
* 50% for `AFL_KEEP_TIMEOUTS`
|
||||||
* 50% use a dictionary generated by `AFL_LLVM_DICT2FILE` + `AFL_LLVM_DICT2FILE_NO_MAIN=1`
|
* 50% use a dictionary generated by `AFL_LLVM_DICT2FILE` + `AFL_LLVM_DICT2FILE_NO_MAIN=1`
|
||||||
* 40% use MOpt (`-L 0`)
|
* 10% use MOpt (`-L 0`)
|
||||||
* 40% for `AFL_EXPAND_HAVOC_NOW`
|
* 40% for `AFL_EXPAND_HAVOC_NOW`
|
||||||
* 20% for old queue processing (`-Z`)
|
* 20% for old queue processing (`-Z`)
|
||||||
* for CMPLOG targets, 70% for `-l 2`, 10% for `-l 3`, 20% for `-l 2AT`
|
* for CMPLOG targets, 70% for `-l 2`, 10% for `-l 3`, 20% for `-l 2AT`
|
||||||
|
@ -8,6 +8,7 @@ Here are some good write-ups to show how to effectively use AFL++:
|
|||||||
|
|
||||||
* [https://aflplus.plus/docs/tutorials/libxml2_tutorial/](https://aflplus.plus/docs/tutorials/libxml2_tutorial/)
|
* [https://aflplus.plus/docs/tutorials/libxml2_tutorial/](https://aflplus.plus/docs/tutorials/libxml2_tutorial/)
|
||||||
* [https://bananamafia.dev/post/gb-fuzz/](https://bananamafia.dev/post/gb-fuzz/)
|
* [https://bananamafia.dev/post/gb-fuzz/](https://bananamafia.dev/post/gb-fuzz/)
|
||||||
|
* [https://bushido-sec.com/index.php/2023/06/19/the-art-of-fuzzing/](https://bushido-sec.com/index.php/2023/06/19/the-art-of-fuzzing/)
|
||||||
* [https://securitylab.github.com/research/fuzzing-challenges-solutions-1](https://securitylab.github.com/research/fuzzing-challenges-solutions-1)
|
* [https://securitylab.github.com/research/fuzzing-challenges-solutions-1](https://securitylab.github.com/research/fuzzing-challenges-solutions-1)
|
||||||
* [https://securitylab.github.com/research/fuzzing-software-2](https://securitylab.github.com/research/fuzzing-software-2)
|
* [https://securitylab.github.com/research/fuzzing-software-2](https://securitylab.github.com/research/fuzzing-software-2)
|
||||||
* [https://securitylab.github.com/research/fuzzing-sockets-FTP](https://securitylab.github.com/research/fuzzing-sockets-FTP)
|
* [https://securitylab.github.com/research/fuzzing-sockets-FTP](https://securitylab.github.com/research/fuzzing-sockets-FTP)
|
||||||
@ -20,6 +21,10 @@ training, then we can highly recommend the following:
|
|||||||
|
|
||||||
* [https://github.com/antonio-morales/Fuzzing101](https://github.com/antonio-morales/Fuzzing101)
|
* [https://github.com/antonio-morales/Fuzzing101](https://github.com/antonio-morales/Fuzzing101)
|
||||||
|
|
||||||
|
Here is a good workflow description (and tutorial) for qemu_mode:
|
||||||
|
|
||||||
|
* [https://airbus-seclab.github.io/AFLplusplus-blogpost/](https://airbus-seclab.github.io/AFLplusplus-blogpost/)
|
||||||
|
|
||||||
Here is good workflow description for frida_mode:
|
Here is good workflow description for frida_mode:
|
||||||
|
|
||||||
* [https://blog.quarkslab.com/android-greybox-fuzzing-with-afl-frida-mode.html](https://blog.quarkslab.com/android-greybox-fuzzing-with-afl-frida-mode.html)
|
* [https://blog.quarkslab.com/android-greybox-fuzzing-with-afl-frida-mode.html](https://blog.quarkslab.com/android-greybox-fuzzing-with-afl-frida-mode.html)
|
||||||
@ -36,6 +41,9 @@ structure is), these links have you covered (some are outdated though):
|
|||||||
* Superion for AFL++:
|
* Superion for AFL++:
|
||||||
[https://github.com/adrian-rt/superion-mutator](https://github.com/adrian-rt/superion-mutator)
|
[https://github.com/adrian-rt/superion-mutator](https://github.com/adrian-rt/superion-mutator)
|
||||||
|
|
||||||
|
For a very in-depth explanation on how AFL++ works check out:
|
||||||
|
[https://blog.ritsec.club/posts/afl-under-hood/](https://blog.ritsec.club/posts/afl-under-hood/)
|
||||||
|
|
||||||
## Video Tutorials
|
## Video Tutorials
|
||||||
|
|
||||||
* [Install AFL++ Ubuntu](https://www.youtube.com/watch?v=5dCvhkbi3RA)
|
* [Install AFL++ Ubuntu](https://www.youtube.com/watch?v=5dCvhkbi3RA)
|
||||||
|
@ -15,7 +15,7 @@ static GHashTable *coverage_blocks = NULL;
|
|||||||
|
|
||||||
extern __thread guint64 instrument_previous_pc;
|
extern __thread guint64 instrument_previous_pc;
|
||||||
|
|
||||||
__attribute__((aligned(0x1000))) static guint8 area_ptr_dummy[MAP_SIZE];
|
__attribute__((aligned(0x1000))) static guint8 area_ptr_dummy[MAP_INITIAL_SIZE];
|
||||||
|
|
||||||
#pragma pack(push, 1)
|
#pragma pack(push, 1)
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -22,7 +22,7 @@ gboolean instrument_cache_enabled = FALSE;
|
|||||||
gsize instrument_cache_size = 0;
|
gsize instrument_cache_size = 0;
|
||||||
static GHashTable *coverage_blocks = NULL;
|
static GHashTable *coverage_blocks = NULL;
|
||||||
|
|
||||||
__attribute__((aligned(0x1000))) static guint8 area_ptr_dummy[MAP_SIZE];
|
__attribute__((aligned(0x1000))) static guint8 area_ptr_dummy[MAP_INITIAL_SIZE];
|
||||||
|
|
||||||
#pragma pack(push, 1)
|
#pragma pack(push, 1)
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -402,6 +402,14 @@ bool instrument_write_inline(GumArm64Writer *cw, GumAddress code_addr,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The mov instruction supports up to a 16-bit offset. If our offset is out of
|
||||||
|
* range, then it can end up clobbering the op-code portion of the instruction
|
||||||
|
* rather than just the operands. So return false and fall back to the
|
||||||
|
* alternative instrumentation.
|
||||||
|
*/
|
||||||
|
if (area_offset > UINT16_MAX) { return false; }
|
||||||
|
|
||||||
code.code.mov_x0_curr_loc |= area_offset << 5;
|
code.code.mov_x0_curr_loc |= area_offset << 5;
|
||||||
|
|
||||||
if (!instrument_patch_ardp(
|
if (!instrument_patch_ardp(
|
||||||
|
@ -58,6 +58,7 @@ typedef union {
|
|||||||
} jcc_insn;
|
} jcc_insn;
|
||||||
|
|
||||||
static GHashTable *coverage_blocks = NULL;
|
static GHashTable *coverage_blocks = NULL;
|
||||||
|
static GHashTable *coverage_blocks_long = NULL;
|
||||||
|
|
||||||
gboolean instrument_is_coverage_optimize_supported(void) {
|
gboolean instrument_is_coverage_optimize_supported(void) {
|
||||||
|
|
||||||
@ -127,6 +128,64 @@ typedef struct {
|
|||||||
|
|
||||||
} afl_log_code_asm_t;
|
} afl_log_code_asm_t;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
|
||||||
|
// cur_location = (block_address >> 4) ^ (block_address << 8);
|
||||||
|
// shared_mem[cur_location ^ prev_location]++;
|
||||||
|
// prev_location = cur_location >> 1;
|
||||||
|
|
||||||
|
// mov QWORD PTR [rsp-0x88],rax
|
||||||
|
// lahf
|
||||||
|
// mov QWORD PTR [rsp-0x90],rax
|
||||||
|
// mov QWORD PTR [rsp-0x98],rbx
|
||||||
|
|
||||||
|
// mov rax, 0xXXXXXXXXXXXXXXXXX /* p_prev_loc */
|
||||||
|
// mov eax, dword ptr [rax] /* prev_loc */
|
||||||
|
// xor eax,0x3f77 /* cur_loc */
|
||||||
|
|
||||||
|
// mov rbx, 0xXXXXXXXXXXXXXXXXX /* map */
|
||||||
|
// add rax,rbx
|
||||||
|
|
||||||
|
// mov bl,BYTE PTR [rax]
|
||||||
|
// add bl,0x1
|
||||||
|
// adc bl,0x0
|
||||||
|
// mov BYTE PTR [rax],bl
|
||||||
|
|
||||||
|
// mov rax, 0xXXXXXXXXXXXXXXXXX /* p_prev_loc */
|
||||||
|
// mov dword ptr [rax], 0xXXXXXXXXX /* prev_loc */
|
||||||
|
|
||||||
|
// mov rbx,QWORD PTR [rsp-0x98]
|
||||||
|
// mov rax,QWORD PTR [rsp-0x90]
|
||||||
|
// sahf
|
||||||
|
// mov rax,QWORD PTR [rsp-0x88]
|
||||||
|
|
||||||
|
uint8_t mov_rax_rsp_88[8];
|
||||||
|
uint8_t lahf;
|
||||||
|
uint8_t mov_rax_rsp_90[8];
|
||||||
|
uint8_t mov_rbx_rsp_98[8];
|
||||||
|
|
||||||
|
uint8_t mov_rax_prev_loc_ptr1[10];
|
||||||
|
uint8_t mov_eax_prev_loc[2];
|
||||||
|
uint8_t xor_eax_curr_loc[5];
|
||||||
|
|
||||||
|
uint8_t mov_rbx_map_ptr[10];
|
||||||
|
uint8_t add_rax_rbx[3];
|
||||||
|
|
||||||
|
uint8_t mov_rbx_ptr_rax[2];
|
||||||
|
uint8_t add_bl_1[3];
|
||||||
|
uint8_t adc_bl_0[3];
|
||||||
|
uint8_t mov_ptr_rax_rbx[2];
|
||||||
|
|
||||||
|
uint8_t mov_rax_prev_loc_ptr2[10];
|
||||||
|
uint8_t mov_prev_loc_curr_loc_shr1[6];
|
||||||
|
|
||||||
|
uint8_t mov_rsp_98_rbx[8];
|
||||||
|
uint8_t mov_rsp_90_rax[8];
|
||||||
|
uint8_t sahf;
|
||||||
|
uint8_t mov_rsp_88_rax[8];
|
||||||
|
|
||||||
|
} afl_log_code_asm_long_t;
|
||||||
|
|
||||||
#pragma pack(pop)
|
#pragma pack(pop)
|
||||||
|
|
||||||
static const afl_log_code_asm_t template =
|
static const afl_log_code_asm_t template =
|
||||||
@ -158,6 +217,41 @@ static const afl_log_code_asm_t template =
|
|||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
|
static const afl_log_code_asm_long_t template_long =
|
||||||
|
{
|
||||||
|
|
||||||
|
.mov_rax_rsp_88 = {0x48, 0x89, 0x84, 0x24, 0x78, 0xFF, 0xFF, 0xFF},
|
||||||
|
.lahf = 0x9f,
|
||||||
|
.mov_rax_rsp_90 = {0x48, 0x89, 0x84, 0x24, 0x70, 0xFF, 0xFF, 0xFF},
|
||||||
|
.mov_rbx_rsp_98 = {0x48, 0x89, 0x9C, 0x24, 0x68, 0xFF, 0xFF, 0xFF},
|
||||||
|
|
||||||
|
.mov_rax_prev_loc_ptr1 = {0x48, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF},
|
||||||
|
.mov_eax_prev_loc = {0x8b, 0x00},
|
||||||
|
.xor_eax_curr_loc = {0x35},
|
||||||
|
|
||||||
|
.mov_rbx_map_ptr = {0x48, 0xBB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF},
|
||||||
|
.add_rax_rbx = {0x48, 0x01, 0xd8},
|
||||||
|
|
||||||
|
.mov_rbx_ptr_rax = {0x8a, 0x18},
|
||||||
|
.add_bl_1 = {0x80, 0xc3, 0x01},
|
||||||
|
.adc_bl_0 = {0x80, 0xd3, 0x00},
|
||||||
|
.mov_ptr_rax_rbx = {0x88, 0x18},
|
||||||
|
|
||||||
|
.mov_rax_prev_loc_ptr2 = {0x48, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF},
|
||||||
|
.mov_prev_loc_curr_loc_shr1 = {0xc7, 0x00, 0xFF, 0xFF, 0xFF, 0xFF},
|
||||||
|
|
||||||
|
.mov_rsp_98_rbx = {0x48, 0x8B, 0x9C, 0x24, 0x68, 0xFF, 0xFF, 0xFF},
|
||||||
|
.mov_rsp_90_rax = {0x48, 0x8B, 0x84, 0x24, 0x70, 0xFF, 0xFF, 0xFF},
|
||||||
|
.sahf = 0x9e,
|
||||||
|
.mov_rsp_88_rax = {0x48, 0x8B, 0x84, 0x24, 0x78, 0xFF, 0xFF, 0xFF},
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
typedef union {
|
typedef union {
|
||||||
|
|
||||||
afl_log_code_asm_t code;
|
afl_log_code_asm_t code;
|
||||||
@ -165,6 +259,13 @@ typedef union {
|
|||||||
|
|
||||||
} afl_log_code;
|
} afl_log_code;
|
||||||
|
|
||||||
|
typedef union {
|
||||||
|
|
||||||
|
afl_log_code_asm_long_t code;
|
||||||
|
uint8_t bytes[0];
|
||||||
|
|
||||||
|
} afl_log_code_long;
|
||||||
|
|
||||||
void instrument_coverage_optimize_init(void) {
|
void instrument_coverage_optimize_init(void) {
|
||||||
|
|
||||||
FVERBOSE("__afl_area_ptr: %p", __afl_area_ptr);
|
FVERBOSE("__afl_area_ptr: %p", __afl_area_ptr);
|
||||||
@ -182,16 +283,19 @@ static void instrument_coverage_switch_insn(GumStalkerObserver *self,
|
|||||||
|
|
||||||
cs_x86 *x86;
|
cs_x86 *x86;
|
||||||
cs_x86_op *op;
|
cs_x86_op *op;
|
||||||
|
bool is_short = false;
|
||||||
|
bool is_long = false;
|
||||||
|
|
||||||
if (from_insn == NULL) { return; }
|
if (from_insn == NULL) { return; }
|
||||||
|
|
||||||
x86 = &from_insn->detail->x86;
|
x86 = &from_insn->detail->x86;
|
||||||
op = x86->operands;
|
op = x86->operands;
|
||||||
|
|
||||||
if (!g_hash_table_contains(coverage_blocks, GSIZE_TO_POINTER(*target))) {
|
is_short = g_hash_table_contains(coverage_blocks, GSIZE_TO_POINTER(*target));
|
||||||
|
is_long =
|
||||||
|
g_hash_table_contains(coverage_blocks_long, GSIZE_TO_POINTER(*target));
|
||||||
|
|
||||||
return;
|
if (!is_short && !is_long) { return; }
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (from_insn->id) {
|
switch (from_insn->id) {
|
||||||
|
|
||||||
@ -212,15 +316,41 @@ static void instrument_coverage_switch_insn(GumStalkerObserver *self,
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case X86_INS_RET:
|
case X86_INS_RET:
|
||||||
instrument_cache_insert(start_address,
|
if (is_short) {
|
||||||
(guint8 *)*target + sizeof(afl_log_code));
|
|
||||||
|
instrument_cache_insert(start_address,
|
||||||
|
(guint8 *)*target + sizeof(afl_log_code));
|
||||||
|
|
||||||
|
} else if (is_long) {
|
||||||
|
|
||||||
|
instrument_cache_insert(start_address,
|
||||||
|
(guint8 *)*target + sizeof(afl_log_code_long));
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
FATAL("Something has gone wrong here!");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
*target = (guint8 *)*target + sizeof(afl_log_code);
|
if (is_short) {
|
||||||
|
|
||||||
|
*target = (guint8 *)*target + sizeof(afl_log_code);
|
||||||
|
|
||||||
|
} else if (is_long) {
|
||||||
|
|
||||||
|
*target = (guint8 *)*target + sizeof(afl_log_code_long);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
FATAL("Something has gone wrong here!");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -270,22 +400,22 @@ static void instrument_coverage_suppress_init(void) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
coverage_blocks_long = g_hash_table_new(g_direct_hash, g_direct_equal);
|
||||||
|
if (coverage_blocks_long == NULL) {
|
||||||
|
|
||||||
|
FATAL("Failed to g_hash_table_new, errno: %d", errno);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void instrument_coverage_write(GumAddress address,
|
bool instrument_write_inline(GumX86Writer *cw, GumAddress code_addr,
|
||||||
GumStalkerOutput *output) {
|
guint32 area_offset, guint32 area_offset_ror) {
|
||||||
|
|
||||||
afl_log_code code = {0};
|
afl_log_code code = {0};
|
||||||
GumX86Writer *cw = output->writer.x86;
|
|
||||||
guint64 area_offset = instrument_get_offset_hash(address);
|
|
||||||
gsize map_size_pow2;
|
|
||||||
gsize area_offset_ror;
|
|
||||||
GumAddress code_addr = cw->pc;
|
|
||||||
|
|
||||||
code.code = template;
|
code.code = template;
|
||||||
|
|
||||||
/* mov_prev_loc_curr_loc_shr1 */
|
|
||||||
|
|
||||||
gssize prev_loc_value =
|
gssize prev_loc_value =
|
||||||
GPOINTER_TO_SIZE(instrument_previous_pc_addr) -
|
GPOINTER_TO_SIZE(instrument_previous_pc_addr) -
|
||||||
(code_addr + offsetof(afl_log_code, code.mov_prev_loc_curr_loc_shr1) +
|
(code_addr + offsetof(afl_log_code, code.mov_prev_loc_curr_loc_shr1) +
|
||||||
@ -294,11 +424,7 @@ static void instrument_coverage_write(GumAddress address,
|
|||||||
offsetof(afl_log_code, code.mov_prev_loc_curr_loc_shr1) +
|
offsetof(afl_log_code, code.mov_prev_loc_curr_loc_shr1) +
|
||||||
sizeof(code.code.mov_prev_loc_curr_loc_shr1) - sizeof(gint) -
|
sizeof(code.code.mov_prev_loc_curr_loc_shr1) - sizeof(gint) -
|
||||||
sizeof(guint32);
|
sizeof(guint32);
|
||||||
if (!instrument_coverage_in_range(prev_loc_value)) {
|
if (!instrument_coverage_in_range(prev_loc_value)) { return false; }
|
||||||
|
|
||||||
FATAL("Patch out of range (current_pc_value1): 0x%016lX", prev_loc_value);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
*((gint *)&code.bytes[prev_loc_value_offset]) = (gint)prev_loc_value;
|
*((gint *)&code.bytes[prev_loc_value_offset]) = (gint)prev_loc_value;
|
||||||
|
|
||||||
@ -311,11 +437,7 @@ static void instrument_coverage_write(GumAddress address,
|
|||||||
gssize prev_loc_value_offset2 =
|
gssize prev_loc_value_offset2 =
|
||||||
offsetof(afl_log_code, code.mov_eax_prev_loc) +
|
offsetof(afl_log_code, code.mov_eax_prev_loc) +
|
||||||
sizeof(code.code.mov_eax_prev_loc) - sizeof(gint);
|
sizeof(code.code.mov_eax_prev_loc) - sizeof(gint);
|
||||||
if (!instrument_coverage_in_range(prev_loc_value)) {
|
if (!instrument_coverage_in_range(prev_loc_value)) { return false; }
|
||||||
|
|
||||||
FATAL("Patch out of range (current_pc_value1): 0x%016lX", prev_loc_value2);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
*((gint *)&code.bytes[prev_loc_value_offset2]) = (gint)prev_loc_value2;
|
*((gint *)&code.bytes[prev_loc_value_offset2]) = (gint)prev_loc_value2;
|
||||||
|
|
||||||
@ -338,12 +460,7 @@ static void instrument_coverage_write(GumAddress address,
|
|||||||
(code_addr + offsetof(afl_log_code, code.lea_rbx_area_ptr) +
|
(code_addr + offsetof(afl_log_code, code.lea_rbx_area_ptr) +
|
||||||
sizeof(code.code.lea_rbx_area_ptr)));
|
sizeof(code.code.lea_rbx_area_ptr)));
|
||||||
|
|
||||||
if (!instrument_coverage_in_range(lea_rbx_area_ptr_value)) {
|
if (!instrument_coverage_in_range(lea_rbx_area_ptr_value)) { return false; }
|
||||||
|
|
||||||
FATAL("Patch out of range (lea_rbx_area_ptr_value): 0x%016lX",
|
|
||||||
lea_rbx_area_ptr_value);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
*((guint32 *)&code.bytes[lea_rbx_area_ptr_offset]) = lea_rbx_area_ptr_value;
|
*((guint32 *)&code.bytes[lea_rbx_area_ptr_offset]) = lea_rbx_area_ptr_value;
|
||||||
|
|
||||||
@ -353,12 +470,100 @@ static void instrument_coverage_write(GumAddress address,
|
|||||||
offsetof(afl_log_code, code.mov_prev_loc_curr_loc_shr1) +
|
offsetof(afl_log_code, code.mov_prev_loc_curr_loc_shr1) +
|
||||||
sizeof(code.code.mov_prev_loc_curr_loc_shr1) - sizeof(guint32);
|
sizeof(code.code.mov_prev_loc_curr_loc_shr1) - sizeof(guint32);
|
||||||
|
|
||||||
map_size_pow2 = util_log2(__afl_map_size);
|
|
||||||
area_offset_ror = util_rotate(area_offset, 1, map_size_pow2);
|
|
||||||
|
|
||||||
*((guint32 *)&code.bytes[curr_loc_shr_1_offset]) = (guint32)(area_offset_ror);
|
*((guint32 *)&code.bytes[curr_loc_shr_1_offset]) = (guint32)(area_offset_ror);
|
||||||
|
|
||||||
|
if (instrument_suppress) {
|
||||||
|
|
||||||
|
if (!g_hash_table_add(coverage_blocks, GSIZE_TO_POINTER(cw->code))) {
|
||||||
|
|
||||||
|
FATAL("Failed - g_hash_table_add");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
gum_x86_writer_put_bytes(cw, code.bytes, sizeof(afl_log_code));
|
gum_x86_writer_put_bytes(cw, code.bytes, sizeof(afl_log_code));
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bool instrument_write_inline_long(GumX86Writer *cw, guint32 area_offset,
|
||||||
|
guint32 area_offset_ror) {
|
||||||
|
|
||||||
|
afl_log_code_long code = {0};
|
||||||
|
code.code = template_long;
|
||||||
|
|
||||||
|
/* mov_rax_prev_loc_ptr1 */
|
||||||
|
gssize mov_rax_prev_loc_ptr1_offset =
|
||||||
|
offsetof(afl_log_code_long, code.mov_rax_prev_loc_ptr1) +
|
||||||
|
sizeof(code.code.mov_rax_prev_loc_ptr1) - sizeof(gsize);
|
||||||
|
*((gsize *)&code.bytes[mov_rax_prev_loc_ptr1_offset]) =
|
||||||
|
GPOINTER_TO_SIZE(instrument_previous_pc_addr);
|
||||||
|
|
||||||
|
/* xor_eax_curr_loc */
|
||||||
|
gssize xor_eax_curr_loc_offset =
|
||||||
|
offsetof(afl_log_code_long, code.xor_eax_curr_loc) +
|
||||||
|
sizeof(code.code.xor_eax_curr_loc) - sizeof(guint32);
|
||||||
|
*((guint32 *)&code.bytes[xor_eax_curr_loc_offset]) = area_offset;
|
||||||
|
|
||||||
|
/* mov_rbx_map_ptr */
|
||||||
|
gsize mov_rbx_map_ptr_offset =
|
||||||
|
offsetof(afl_log_code_long, code.mov_rbx_map_ptr) +
|
||||||
|
sizeof(code.code.mov_rbx_map_ptr) - sizeof(gsize);
|
||||||
|
*((gsize *)&code.bytes[mov_rbx_map_ptr_offset]) =
|
||||||
|
GPOINTER_TO_SIZE(__afl_area_ptr);
|
||||||
|
|
||||||
|
/* mov_rax_prev_loc_ptr2 */
|
||||||
|
gssize mov_rax_prev_loc_ptr2_offset =
|
||||||
|
offsetof(afl_log_code_long, code.mov_rax_prev_loc_ptr2) +
|
||||||
|
sizeof(code.code.mov_rax_prev_loc_ptr2) - sizeof(gsize);
|
||||||
|
*((gsize *)&code.bytes[mov_rax_prev_loc_ptr2_offset]) =
|
||||||
|
GPOINTER_TO_SIZE(instrument_previous_pc_addr);
|
||||||
|
|
||||||
|
/* mov_prev_loc_curr_loc_shr1 */
|
||||||
|
gssize mov_prev_loc_curr_loc_shr1_offset =
|
||||||
|
offsetof(afl_log_code_long, code.mov_prev_loc_curr_loc_shr1) +
|
||||||
|
sizeof(code.code.mov_prev_loc_curr_loc_shr1) - sizeof(guint32);
|
||||||
|
*((guint32 *)&code.bytes[mov_prev_loc_curr_loc_shr1_offset]) =
|
||||||
|
(guint32)(area_offset_ror);
|
||||||
|
|
||||||
|
if (instrument_suppress) {
|
||||||
|
|
||||||
|
if (!g_hash_table_add(coverage_blocks_long, GSIZE_TO_POINTER(cw->code))) {
|
||||||
|
|
||||||
|
FATAL("Failed - g_hash_table_add");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
gum_x86_writer_put_bytes(cw, code.bytes, sizeof(afl_log_code_long));
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void instrument_coverage_write(GumAddress address,
|
||||||
|
GumStalkerOutput *output) {
|
||||||
|
|
||||||
|
GumX86Writer *cw = output->writer.x86;
|
||||||
|
guint64 area_offset = (guint32)instrument_get_offset_hash(address);
|
||||||
|
gsize map_size_pow2;
|
||||||
|
guint32 area_offset_ror;
|
||||||
|
GumAddress code_addr = cw->pc;
|
||||||
|
|
||||||
|
map_size_pow2 = util_log2(__afl_map_size);
|
||||||
|
area_offset_ror = (guint32)util_rotate(instrument_get_offset_hash(address), 1,
|
||||||
|
map_size_pow2);
|
||||||
|
|
||||||
|
if (!instrument_write_inline(cw, code_addr, area_offset, area_offset_ror)) {
|
||||||
|
|
||||||
|
if (!instrument_write_inline_long(cw, area_offset, area_offset_ror)) {
|
||||||
|
|
||||||
|
FATAL("Failed to write inline instrumentation");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -380,17 +585,7 @@ void instrument_coverage_optimize(const cs_insn *instr,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (instrument_suppress) {
|
if (instrument_suppress) { instrument_coverage_suppress_init(); }
|
||||||
|
|
||||||
instrument_coverage_suppress_init();
|
|
||||||
|
|
||||||
if (!g_hash_table_add(coverage_blocks, GSIZE_TO_POINTER(cw->code))) {
|
|
||||||
|
|
||||||
FATAL("Failed - g_hash_table_add");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
instrument_coverage_write(GUM_ADDRESS(instr->address), output);
|
instrument_coverage_write(GUM_ADDRESS(instr->address), output);
|
||||||
|
|
||||||
|
@ -44,8 +44,10 @@ static gboolean lib_find_exe(const GumModuleDetails *details,
|
|||||||
|
|
||||||
lib_details_t *lib_details = (lib_details_t *)user_data;
|
lib_details_t *lib_details = (lib_details_t *)user_data;
|
||||||
|
|
||||||
memcpy(lib_details->name, details->name, PATH_MAX);
|
strncpy(lib_details->name, details->name, PATH_MAX);
|
||||||
memcpy(lib_details->path, details->path, PATH_MAX);
|
strncpy(lib_details->path, details->path, PATH_MAX);
|
||||||
|
lib_details->name[PATH_MAX] = '\0';
|
||||||
|
lib_details->path[PATH_MAX] = '\0';
|
||||||
lib_details->base_address = details->range->base_address;
|
lib_details->base_address = details->range->base_address;
|
||||||
lib_details->size = details->range->size;
|
lib_details->size = details->range->size;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -49,10 +49,10 @@ extern void __libc_init(void *raw_args, void (*onexit)(void) __unused,
|
|||||||
int (*slingshot)(int, char **, char **),
|
int (*slingshot)(int, char **, char **),
|
||||||
structors_array_t const *const structors);
|
structors_array_t const *const structors);
|
||||||
#else
|
#else
|
||||||
extern int __libc_start_main(int (*main)(int, char **, char **), int argc,
|
extern int __libc_start_main(int (*main)(int, char **, char **), int argc,
|
||||||
char **ubp_av, void (*init)(void),
|
char **ubp_av, void (*init)(void),
|
||||||
void (*fini)(void), void (*rtld_fini)(void),
|
void (*fini)(void), void (*rtld_fini)(void),
|
||||||
void(*stack_end));
|
void(*stack_end));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef int (*main_fn_t)(int argc, char **argv, char **envp);
|
typedef int (*main_fn_t)(int argc, char **argv, char **envp);
|
||||||
|
@ -35,7 +35,7 @@ endif
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
||||||
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/get_symbol_addr.sh
|
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/frida_get_symbol_addr.sh
|
||||||
|
|
||||||
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
||||||
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
||||||
|
2
frida_mode/test/cache/GNUmakefile
vendored
2
frida_mode/test/cache/GNUmakefile
vendored
@ -11,7 +11,7 @@ QEMU_OUT:=$(BUILD_DIR)qemu-out
|
|||||||
FRIDA_OUT:=$(BUILD_DIR)frida-out
|
FRIDA_OUT:=$(BUILD_DIR)frida-out
|
||||||
|
|
||||||
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
||||||
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/get_symbol_addr.sh
|
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/frida_get_symbol_addr.sh
|
||||||
|
|
||||||
AFLPP_FRIDA_DRIVER_HOOK_OBJ=$(ROOT)frida_mode/build/frida_hook.so
|
AFLPP_FRIDA_DRIVER_HOOK_OBJ=$(ROOT)frida_mode/build/frida_hook.so
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ QEMU_OUT:=$(BUILD_DIR)qemu-out
|
|||||||
FRIDA_OUT:=$(BUILD_DIR)frida-out
|
FRIDA_OUT:=$(BUILD_DIR)frida-out
|
||||||
|
|
||||||
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
||||||
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/get_symbol_addr.sh
|
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/frida_get_symbol_addr.sh
|
||||||
|
|
||||||
AFLPP_FRIDA_DRIVER_HOOK_OBJ=$(ROOT)frida_mode/build/frida_hook.so
|
AFLPP_FRIDA_DRIVER_HOOK_OBJ=$(ROOT)frida_mode/build/frida_hook.so
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ TESTINSTSRC:=$(PWD)testinstr.c
|
|||||||
QEMU_OUT:=$(BUILD_DIR)qemu-out
|
QEMU_OUT:=$(BUILD_DIR)qemu-out
|
||||||
FRIDA_OUT:=$(BUILD_DIR)frida-out
|
FRIDA_OUT:=$(BUILD_DIR)frida-out
|
||||||
|
|
||||||
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/get_symbol_addr.sh
|
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/frida_get_symbol_addr.sh
|
||||||
|
|
||||||
ifndef ARCH
|
ifndef ARCH
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ FRIDA_OUT:=$(BUILD_DIR)frida-out
|
|||||||
AFLPP_FRIDA_DRIVER_HOOK_OBJ=$(ROOT)frida_mode/build/frida_hook.so
|
AFLPP_FRIDA_DRIVER_HOOK_OBJ=$(ROOT)frida_mode/build/frida_hook.so
|
||||||
|
|
||||||
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
||||||
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/get_symbol_addr.sh
|
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/frida_get_symbol_addr.sh
|
||||||
|
|
||||||
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
||||||
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TESTINSTBIN) testinstr $(AFL_FRIDA_BASE_ADDR))
|
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TESTINSTBIN) testinstr $(AFL_FRIDA_BASE_ADDR))
|
||||||
|
@ -10,7 +10,7 @@ TESTINSTSRC:=$(PWD)testinstr.c
|
|||||||
QEMU_OUT:=$(BUILD_DIR)qemu-out
|
QEMU_OUT:=$(BUILD_DIR)qemu-out
|
||||||
FRIDA_OUT:=$(BUILD_DIR)frida-out
|
FRIDA_OUT:=$(BUILD_DIR)frida-out
|
||||||
|
|
||||||
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/get_symbol_addr.sh
|
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/frida_get_symbol_addr.sh
|
||||||
|
|
||||||
ifndef ARCH
|
ifndef ARCH
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ endif
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
||||||
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/get_symbol_addr.sh
|
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/frida_get_symbol_addr.sh
|
||||||
|
|
||||||
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
||||||
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
||||||
|
@ -47,7 +47,7 @@ endif
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
||||||
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/get_symbol_addr.sh
|
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/frida_get_symbol_addr.sh
|
||||||
|
|
||||||
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
||||||
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
||||||
|
@ -56,7 +56,7 @@ endif
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
||||||
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/get_symbol_addr.sh
|
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/frida_get_symbol_addr.sh
|
||||||
|
|
||||||
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
||||||
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
||||||
|
@ -43,7 +43,7 @@ endif
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
||||||
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/get_symbol_addr.sh
|
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/frida_get_symbol_addr.sh
|
||||||
|
|
||||||
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
||||||
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
||||||
|
@ -42,7 +42,7 @@ endif
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
||||||
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/get_symbol_addr.sh
|
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/frida_get_symbol_addr.sh
|
||||||
|
|
||||||
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
||||||
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
||||||
|
@ -26,7 +26,7 @@ FRIDA_OUT:=$(BUILD_DIR)frida-out
|
|||||||
HARNESS_LDFLAGS:=-Wl,-no_pie
|
HARNESS_LDFLAGS:=-Wl,-no_pie
|
||||||
LIB_CFLAGS:=-dynamiclib
|
LIB_CFLAGS:=-dynamiclib
|
||||||
|
|
||||||
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/get_symbol_addr.sh
|
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/frida_get_symbol_addr.sh
|
||||||
AFL_FRIDA_MAIN_ADDR=$(shell $(GET_SYMBOL_ADDR) $(HARNESS_BIN) main 0x0)
|
AFL_FRIDA_MAIN_ADDR=$(shell $(GET_SYMBOL_ADDR) $(HARNESS_BIN) main 0x0)
|
||||||
AFL_FRIDA_MAIN_ADDR2=$(shell $(GET_SYMBOL_ADDR) $(HARNESS2_BIN) main 0x0)
|
AFL_FRIDA_MAIN_ADDR2=$(shell $(GET_SYMBOL_ADDR) $(HARNESS2_BIN) main 0x0)
|
||||||
AFL_FRIDA_FUZZ_ADDR=$(shell $(GET_SYMBOL_ADDR) $(HARNESS_BIN) LLVMFuzzerTestOneInput 0x0)
|
AFL_FRIDA_FUZZ_ADDR=$(shell $(GET_SYMBOL_ADDR) $(HARNESS_BIN) LLVMFuzzerTestOneInput 0x0)
|
||||||
|
@ -31,7 +31,7 @@ endif
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
||||||
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/get_symbol_addr.sh
|
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/frida_get_symbol_addr.sh
|
||||||
|
|
||||||
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
||||||
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
||||||
|
@ -23,7 +23,7 @@ endif
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
||||||
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/get_symbol_addr.sh
|
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/frida_get_symbol_addr.sh
|
||||||
|
|
||||||
ifeq "$(shell uname)" "Darwin"
|
ifeq "$(shell uname)" "Darwin"
|
||||||
TEST_BIN_LDFLAGS:=-Wl,-no_pie
|
TEST_BIN_LDFLAGS:=-Wl,-no_pie
|
||||||
|
@ -8,7 +8,7 @@ HARNESS_BUILD_DIR:=$(BUILD_DIR)harness/
|
|||||||
PNGTEST_BUILD_DIR:=$(BUILD_DIR)pngtest/
|
PNGTEST_BUILD_DIR:=$(BUILD_DIR)pngtest/
|
||||||
|
|
||||||
LIBZ_FILE:=$(LIBZ_BUILD_DIR)zlib-1.2.13.tar.gz
|
LIBZ_FILE:=$(LIBZ_BUILD_DIR)zlib-1.2.13.tar.gz
|
||||||
LIBZ_URL:=http://www.zlib.net/zlib-1.2.13.tar.gz
|
LIBZ_URL:=http://www.zlib.net/fossils/zlib-1.2.13.tar.gz
|
||||||
LIBZ_DIR:=$(LIBZ_BUILD_DIR)zlib-1.2.13/
|
LIBZ_DIR:=$(LIBZ_BUILD_DIR)zlib-1.2.13/
|
||||||
LIBZ_PC:=$(LIBZ_DIR)zlib.pc
|
LIBZ_PC:=$(LIBZ_DIR)zlib.pc
|
||||||
LIBZ_LIB:=$(LIBZ_DIR)libz.a
|
LIBZ_LIB:=$(LIBZ_DIR)libz.a
|
||||||
|
@ -22,7 +22,7 @@ endif
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
||||||
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/get_symbol_addr.sh
|
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/frida_get_symbol_addr.sh
|
||||||
|
|
||||||
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
||||||
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
||||||
|
@ -33,7 +33,7 @@ endif
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
||||||
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/get_symbol_addr.sh
|
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/frida_get_symbol_addr.sh
|
||||||
|
|
||||||
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
||||||
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
||||||
|
@ -47,7 +47,7 @@ endif
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
||||||
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/get_symbol_addr.sh
|
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/frida_get_symbol_addr.sh
|
||||||
|
|
||||||
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
||||||
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
||||||
|
@ -48,7 +48,7 @@ endif
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
||||||
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/get_symbol_addr.sh
|
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/frida_get_symbol_addr.sh
|
||||||
|
|
||||||
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
||||||
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
||||||
|
@ -43,7 +43,7 @@ endif
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
||||||
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/get_symbol_addr.sh
|
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/frida_get_symbol_addr.sh
|
||||||
|
|
||||||
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
||||||
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
||||||
|
@ -23,7 +23,7 @@ endif
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
||||||
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/get_symbol_addr.sh
|
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/frida_get_symbol_addr.sh
|
||||||
|
|
||||||
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
||||||
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
||||||
|
@ -54,7 +54,7 @@ endif
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
ADDR_BIN:=$(ROOT)frida_mode/build/addr
|
||||||
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/get_symbol_addr.sh
|
GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/frida_get_symbol_addr.sh
|
||||||
|
|
||||||
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
|
||||||
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TEST_BIN) LLVMFuzzerTestOneInput $(AFL_FRIDA_BASE_ADDR))
|
||||||
|
56
frida_mode/util/frida_get_symbol_addr.sh
Executable file
56
frida_mode/util/frida_get_symbol_addr.sh
Executable file
@ -0,0 +1,56 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Copyright 2023 AFLplusplus
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
target="$1"
|
||||||
|
symbol="$2"
|
||||||
|
base="$3"
|
||||||
|
|
||||||
|
test -z "$target" -o -z "$symbol" -o '!' -x "$target" && {
|
||||||
|
echo "Syntax: $0 executable function [baseaddress]"
|
||||||
|
echo
|
||||||
|
echo Help script to calculate the function address of a binary QEMU will load it to.
|
||||||
|
echo function is e.g. LLVMFuzzerTestOneInput, afl_qemu_driver_stdin, etc.
|
||||||
|
echo "baseaddress is tried to be auto-detected, you can use 'AFL_QEMU_DEBUG_MAPS=1 afl-qemu-trace ./executable' to see the maps."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
file=$(file $target|sed 's/.*: //')
|
||||||
|
|
||||||
|
arch=$(echo $file|awk -F, '{print$2}'|tr -d ' ')
|
||||||
|
bits=$(echo $file|sed 's/-bit .*//'|sed 's/.* //')
|
||||||
|
pie=$(echo $file|grep -wqi pie && echo pie)
|
||||||
|
dso=$(echo $file|grep -wqi "shared object" && echo dso)
|
||||||
|
|
||||||
|
test $(uname -s) = "Darwin" && symbol=_"$symbol"
|
||||||
|
tmp_addr=$(nm "$target" | grep -i "T $symbol" | awk '{print$1}' | tr a-f A-F)
|
||||||
|
|
||||||
|
test -z "$tmp_addr" && { echo Error: function $symbol not found 1>&2; exit 1; }
|
||||||
|
test -z "$pie" && test -z "$dso" && { echo 0x$tmp_addr; exit 0; }
|
||||||
|
|
||||||
|
test -z "$base" && {
|
||||||
|
test "$bits" = 32 -o "$bits" = 64 || { echo "Error: could not identify arch (bits=$bits)" 1>&2 ; exit 1; }
|
||||||
|
# is this true for arm/aarch64/i386 too?
|
||||||
|
base=0x555555554000
|
||||||
|
#test "$arch" = Intel80386 && base=0x5555554000
|
||||||
|
#test "$arch" = x86-64 && base=0x555555554000
|
||||||
|
#test "$arch" = ARMaarch64 && base=0x5500000000
|
||||||
|
# add more here, e.g. "$arch" = ARM
|
||||||
|
}
|
||||||
|
|
||||||
|
test -z "$base" && { echo "Error: could not identify base address! bits=$bits arch=$arch" 1>&2 ; exit 1; }
|
||||||
|
|
||||||
|
hex_base=$(echo "$base" | awk '{sub("^0x","");print $0}' | tr a-f A-F )
|
||||||
|
echo $tmp_addr | echo "ibase=16;obase=10;$hex_base + $tmp_addr" | bc | tr A-F a-f | awk '{print "0x"$0}'
|
||||||
|
exit 0
|
@ -1,32 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Copyright 2020 Google LLC
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
# set -x
|
|
||||||
target="$1"
|
|
||||||
symbol="$2"
|
|
||||||
base="$3"
|
|
||||||
|
|
||||||
test -z "$target" -o -z "$symbol" -o '!' -e "$target" && exit 0
|
|
||||||
|
|
||||||
test $(uname -s) = "Darwin" && symbol=_"$symbol"
|
|
||||||
|
|
||||||
file "$target" | grep -q executable && {
|
|
||||||
nm "$target" | grep -i "T $symbol" | awk '{print"0x"$1}'
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
hex_base=$(echo "$3" | awk '{sub("^0x","");print $0}' | tr a-f A-F )
|
|
||||||
nm "$target" | grep -i "T $symbol" | awk '{print$1}' | tr a-f A-F | \
|
|
||||||
xargs echo "ibase=16;obase=10;$hex_base + " | bc | tr A-F a-f | awk '{print "0x"$0}'
|
|
||||||
exit 0
|
|
@ -31,7 +31,7 @@
|
|||||||
#define MESSAGES_TO_STDOUT
|
#define MESSAGES_TO_STDOUT
|
||||||
|
|
||||||
#ifndef _GNU_SOURCE
|
#ifndef _GNU_SOURCE
|
||||||
#define _GNU_SOURCE 1
|
#define _GNU_SOURCE
|
||||||
#endif
|
#endif
|
||||||
#ifndef _FILE_OFFSET_BITS
|
#ifndef _FILE_OFFSET_BITS
|
||||||
#define _FILE_OFFSET_BITS 64
|
#define _FILE_OFFSET_BITS 64
|
||||||
@ -157,6 +157,7 @@ struct queue_entry {
|
|||||||
|
|
||||||
u8 colorized, /* Do not run redqueen stage again */
|
u8 colorized, /* Do not run redqueen stage again */
|
||||||
cal_failed; /* Calibration failed? */
|
cal_failed; /* Calibration failed? */
|
||||||
|
|
||||||
bool trim_done, /* Trimmed? */
|
bool trim_done, /* Trimmed? */
|
||||||
was_fuzzed, /* historical, but needed for MOpt */
|
was_fuzzed, /* historical, but needed for MOpt */
|
||||||
passed_det, /* Deterministic stages passed? */
|
passed_det, /* Deterministic stages passed? */
|
||||||
@ -168,17 +169,15 @@ struct queue_entry {
|
|||||||
disabled; /* Is disabled from fuzz selection */
|
disabled; /* Is disabled from fuzz selection */
|
||||||
|
|
||||||
u32 bitmap_size, /* Number of bits set in bitmap */
|
u32 bitmap_size, /* Number of bits set in bitmap */
|
||||||
fuzz_level, /* Number of fuzzing iterations */
|
|
||||||
n_fuzz_entry /* offset in n_fuzz */
|
|
||||||
#ifdef INTROSPECTION
|
#ifdef INTROSPECTION
|
||||||
,
|
|
||||||
stats_selected, /* stats: how often selected */
|
stats_selected, /* stats: how often selected */
|
||||||
stats_skipped, /* stats: how often skipped */
|
stats_skipped, /* stats: how often skipped */
|
||||||
stats_finds, /* stats: # of saved finds */
|
stats_finds, /* stats: # of saved finds */
|
||||||
stats_crashes, /* stats: # of saved crashes */
|
stats_crashes, /* stats: # of saved crashes */
|
||||||
stats_tmouts /* stats: # of saved timeouts */
|
stats_tmouts, /* stats: # of saved timeouts */
|
||||||
#endif
|
#endif
|
||||||
;
|
fuzz_level, /* Number of fuzzing iterations */
|
||||||
|
n_fuzz_entry; /* offset in n_fuzz */
|
||||||
|
|
||||||
u64 exec_us, /* Execution time (us) */
|
u64 exec_us, /* Execution time (us) */
|
||||||
handicap, /* Number of queue cycles behind */
|
handicap, /* Number of queue cycles behind */
|
||||||
@ -346,6 +345,7 @@ enum {
|
|||||||
/* 13 */ PY_FUNC_DESCRIBE,
|
/* 13 */ PY_FUNC_DESCRIBE,
|
||||||
/* 14 */ PY_FUNC_FUZZ_SEND,
|
/* 14 */ PY_FUNC_FUZZ_SEND,
|
||||||
/* 15 */ PY_FUNC_SPLICE_OPTOUT,
|
/* 15 */ PY_FUNC_SPLICE_OPTOUT,
|
||||||
|
/* 16 */ PY_FUNC_POST_RUN,
|
||||||
PY_FUNC_COUNT
|
PY_FUNC_COUNT
|
||||||
|
|
||||||
};
|
};
|
||||||
@ -401,7 +401,8 @@ typedef struct afl_env_vars {
|
|||||||
afl_exit_on_seed_issues, afl_try_affinity, afl_ignore_problems,
|
afl_exit_on_seed_issues, afl_try_affinity, afl_ignore_problems,
|
||||||
afl_keep_timeouts, afl_no_crash_readme, afl_ignore_timeouts,
|
afl_keep_timeouts, afl_no_crash_readme, afl_ignore_timeouts,
|
||||||
afl_no_startup_calibration, afl_no_warn_instability,
|
afl_no_startup_calibration, afl_no_warn_instability,
|
||||||
afl_post_process_keep_original;
|
afl_post_process_keep_original, afl_crashing_seeds_as_new_crash,
|
||||||
|
afl_final_sync, afl_ignore_seed_problems;
|
||||||
|
|
||||||
u8 *afl_tmpdir, *afl_custom_mutator_library, *afl_python_module, *afl_path,
|
u8 *afl_tmpdir, *afl_custom_mutator_library, *afl_python_module, *afl_path,
|
||||||
*afl_hang_tmout, *afl_forksrv_init_tmout, *afl_preload,
|
*afl_hang_tmout, *afl_forksrv_init_tmout, *afl_preload,
|
||||||
@ -494,7 +495,8 @@ typedef struct afl_state {
|
|||||||
*orig_cmdline, /* Original command line */
|
*orig_cmdline, /* Original command line */
|
||||||
*infoexec; /* Command to execute on a new crash */
|
*infoexec; /* Command to execute on a new crash */
|
||||||
|
|
||||||
u32 hang_tmout; /* Timeout used for hang det (ms) */
|
u32 hang_tmout, /* Timeout used for hang det (ms) */
|
||||||
|
stats_update_freq; /* Stats update frequency (execs) */
|
||||||
|
|
||||||
u8 havoc_stack_pow2, /* HAVOC_STACK_POW2 */
|
u8 havoc_stack_pow2, /* HAVOC_STACK_POW2 */
|
||||||
no_unlink, /* do not unlink cur_input */
|
no_unlink, /* do not unlink cur_input */
|
||||||
@ -503,14 +505,12 @@ typedef struct afl_state {
|
|||||||
custom_splice_optout, /* Custom mutator no splice buffer */
|
custom_splice_optout, /* Custom mutator no splice buffer */
|
||||||
is_main_node, /* if this is the main node */
|
is_main_node, /* if this is the main node */
|
||||||
is_secondary_node, /* if this is a secondary instance */
|
is_secondary_node, /* if this is a secondary instance */
|
||||||
pizza_is_served; /* pizza mode */
|
pizza_is_served, /* pizza mode */
|
||||||
|
input_mode, /* target wants text inputs */
|
||||||
u32 stats_update_freq; /* Stats update frequency (execs) */
|
fuzz_mode, /* coverage/exploration or crash/exploitation mode */
|
||||||
|
schedule, /* Power schedule (default: EXPLORE)*/
|
||||||
u8 schedule; /* Power schedule (default: EXPLORE)*/
|
havoc_max_mult, /* havoc multiplier */
|
||||||
u8 havoc_max_mult;
|
skip_deterministic, /* Skip deterministic stages? */
|
||||||
|
|
||||||
u8 skip_deterministic, /* Skip deterministic stages? */
|
|
||||||
use_splicing, /* Recombine input files? */
|
use_splicing, /* Recombine input files? */
|
||||||
non_instrumented_mode, /* Run in non-instrumented mode? */
|
non_instrumented_mode, /* Run in non-instrumented mode? */
|
||||||
score_changed, /* Scoring for favorites changed? */
|
score_changed, /* Scoring for favorites changed? */
|
||||||
@ -597,7 +597,8 @@ typedef struct afl_state {
|
|||||||
last_hang_time, /* Time for most recent hang (ms) */
|
last_hang_time, /* Time for most recent hang (ms) */
|
||||||
longest_find_time, /* Longest time taken for a find */
|
longest_find_time, /* Longest time taken for a find */
|
||||||
exit_on_time, /* Delay to exit if no new paths */
|
exit_on_time, /* Delay to exit if no new paths */
|
||||||
sync_time; /* Sync time (ms) */
|
sync_time, /* Sync time (ms) */
|
||||||
|
switch_fuzz_mode; /* auto or fixed fuzz mode */
|
||||||
|
|
||||||
u32 slowest_exec_ms, /* Slowest testcase non hang in ms */
|
u32 slowest_exec_ms, /* Slowest testcase non hang in ms */
|
||||||
subseq_tmouts; /* Number of timeouts in a row */
|
subseq_tmouts; /* Number of timeouts in a row */
|
||||||
@ -610,6 +611,7 @@ typedef struct afl_state {
|
|||||||
|
|
||||||
u32 stage_cur, stage_max; /* Stage progression */
|
u32 stage_cur, stage_max; /* Stage progression */
|
||||||
s32 splicing_with; /* Splicing with which test case? */
|
s32 splicing_with; /* Splicing with which test case? */
|
||||||
|
s64 smallest_favored; /* smallest queue id favored */
|
||||||
|
|
||||||
u32 main_node_id, main_node_max; /* Main instance job splitting */
|
u32 main_node_id, main_node_max; /* Main instance job splitting */
|
||||||
|
|
||||||
@ -674,7 +676,8 @@ typedef struct afl_state {
|
|||||||
u32 cmplog_max_filesize;
|
u32 cmplog_max_filesize;
|
||||||
u32 cmplog_lvl;
|
u32 cmplog_lvl;
|
||||||
u32 colorize_success;
|
u32 colorize_success;
|
||||||
u8 cmplog_enable_arith, cmplog_enable_transform, cmplog_random_colorization;
|
u8 cmplog_enable_arith, cmplog_enable_transform, cmplog_enable_scale,
|
||||||
|
cmplog_enable_xtreme_transform, cmplog_random_colorization;
|
||||||
|
|
||||||
struct afl_pass_stat *pass_stats;
|
struct afl_pass_stat *pass_stats;
|
||||||
struct cmp_map *orig_cmp_map;
|
struct cmp_map *orig_cmp_map;
|
||||||
@ -1018,6 +1021,16 @@ struct custom_mutator {
|
|||||||
*/
|
*/
|
||||||
void (*afl_custom_fuzz_send)(void *data, const u8 *buf, size_t buf_size);
|
void (*afl_custom_fuzz_send)(void *data, const u8 *buf, size_t buf_size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method can be used if you want to run some code or scripts each time
|
||||||
|
* AFL++ executes the target with afl-fuzz.
|
||||||
|
*
|
||||||
|
* (Optional)
|
||||||
|
*
|
||||||
|
* @param data pointer returned in afl_custom_init by this custom mutator
|
||||||
|
*/
|
||||||
|
void (*afl_custom_post_run)(void *data);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allow for additional analysis (e.g. calling a different tool that does a
|
* Allow for additional analysis (e.g. calling a different tool that does a
|
||||||
* different kind of coverage and saves this for the custom mutator).
|
* different kind of coverage and saves this for the custom mutator).
|
||||||
@ -1073,6 +1086,7 @@ void finalize_py_module(void *);
|
|||||||
|
|
||||||
u32 fuzz_count_py(void *, const u8 *, size_t);
|
u32 fuzz_count_py(void *, const u8 *, size_t);
|
||||||
void fuzz_send_py(void *, const u8 *, size_t);
|
void fuzz_send_py(void *, const u8 *, size_t);
|
||||||
|
void post_run_py(void *);
|
||||||
size_t post_process_py(void *, u8 *, size_t, u8 **);
|
size_t post_process_py(void *, u8 *, size_t, u8 **);
|
||||||
s32 init_trim_py(void *, u8 *, size_t);
|
s32 init_trim_py(void *, u8 *, size_t);
|
||||||
s32 post_trim_py(void *, u8);
|
s32 post_trim_py(void *, u8);
|
||||||
@ -1203,6 +1217,7 @@ u8 check_if_text_buf(u8 *buf, u32 len);
|
|||||||
#ifndef AFL_SHOWMAP
|
#ifndef AFL_SHOWMAP
|
||||||
void setup_signal_handlers(void);
|
void setup_signal_handlers(void);
|
||||||
#endif
|
#endif
|
||||||
|
char *get_fuzzing_state(afl_state_t *afl);
|
||||||
|
|
||||||
/* CmpLog */
|
/* CmpLog */
|
||||||
|
|
||||||
|
2663
include/afl-mutations.h
Normal file
2663
include/afl-mutations.h
Normal file
File diff suppressed because it is too large
Load Diff
@ -322,7 +322,7 @@ static inline void DFL_ck_free(void *mem) {
|
|||||||
static inline void *DFL_ck_realloc(void *orig, u32 size) {
|
static inline void *DFL_ck_realloc(void *orig, u32 size) {
|
||||||
|
|
||||||
void *ret;
|
void *ret;
|
||||||
u32 old_size = 0;
|
u32 old_size = 0;
|
||||||
|
|
||||||
if (!size) {
|
if (!size) {
|
||||||
|
|
||||||
@ -392,7 +392,7 @@ static inline void *DFL_ck_realloc(void *orig, u32 size) {
|
|||||||
static inline u8 *DFL_ck_strdup(u8 *str) {
|
static inline u8 *DFL_ck_strdup(u8 *str) {
|
||||||
|
|
||||||
void *ret;
|
void *ret;
|
||||||
u32 size;
|
u32 size;
|
||||||
|
|
||||||
if (!str) return NULL;
|
if (!str) return NULL;
|
||||||
|
|
||||||
@ -438,14 +438,14 @@ struct TRK_obj {
|
|||||||
|
|
||||||
void *ptr;
|
void *ptr;
|
||||||
char *file, *func;
|
char *file, *func;
|
||||||
u32 line;
|
u32 line;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef AFL_MAIN
|
#ifdef AFL_MAIN
|
||||||
|
|
||||||
struct TRK_obj *TRK[ALLOC_BUCKETS];
|
struct TRK_obj *TRK[ALLOC_BUCKETS];
|
||||||
u32 TRK_cnt[ALLOC_BUCKETS];
|
u32 TRK_cnt[ALLOC_BUCKETS];
|
||||||
|
|
||||||
#define alloc_report() TRK_report()
|
#define alloc_report() TRK_report()
|
||||||
|
|
||||||
|
@ -2,7 +2,9 @@
|
|||||||
#ifndef _ANDROID_ASHMEM_H
|
#ifndef _ANDROID_ASHMEM_H
|
||||||
#define _ANDROID_ASHMEM_H
|
#define _ANDROID_ASHMEM_H
|
||||||
|
|
||||||
#define _GNU_SOURCE
|
#ifndef _GNU_SOURCE
|
||||||
|
#define _GNU_SOURCE
|
||||||
|
#endif
|
||||||
#include <sys/syscall.h>
|
#include <sys/syscall.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
@ -115,6 +115,11 @@ u8 *stringify_mem_size(u8 *buf, size_t len, u64 val);
|
|||||||
|
|
||||||
u8 *stringify_time_diff(u8 *buf, size_t len, u64 cur_ms, u64 event_ms);
|
u8 *stringify_time_diff(u8 *buf, size_t len, u64 cur_ms, u64 event_ms);
|
||||||
|
|
||||||
|
/* Unsafe describe time delta as simple string.
|
||||||
|
Returns a pointer to buf for convenience. */
|
||||||
|
|
||||||
|
u8 *u_simplestring_time_diff(u8 *buf, u64 cur_ms, u64 event_ms);
|
||||||
|
|
||||||
/* Unsafe Describe integer. The buf sizes are not checked.
|
/* Unsafe Describe integer. The buf sizes are not checked.
|
||||||
This is unsafe but fast.
|
This is unsafe but fast.
|
||||||
Will return buf for convenience. */
|
Will return buf for convenience. */
|
||||||
|
@ -5,9 +5,9 @@
|
|||||||
Originally written by Michal Zalewski
|
Originally written by Michal Zalewski
|
||||||
|
|
||||||
Now maintained by Marc Heuse <mh@mh-sec.de>,
|
Now maintained by Marc Heuse <mh@mh-sec.de>,
|
||||||
Heiko Eißfeldt <heiko.eissfeldt@hexco.de>,
|
|
||||||
Andrea Fioraldi <andreafioraldi@gmail.com>,
|
|
||||||
Dominik Maier <mail@dmnk.co>
|
Dominik Maier <mail@dmnk.co>
|
||||||
|
Andrea Fioraldi <andreafioraldi@gmail.com>,
|
||||||
|
Heiko Eissfeldt <heiko.eissfeldt@hexco.de>,
|
||||||
|
|
||||||
Copyright 2016, 2017 Google Inc. All rights reserved.
|
Copyright 2016, 2017 Google Inc. All rights reserved.
|
||||||
Copyright 2019-2023 AFLplusplus Project. All rights reserved.
|
Copyright 2019-2023 AFLplusplus Project. All rights reserved.
|
||||||
@ -26,7 +26,7 @@
|
|||||||
/* Version string: */
|
/* Version string: */
|
||||||
|
|
||||||
// c = release, a = volatile github dev, e = experimental branch
|
// c = release, a = volatile github dev, e = experimental branch
|
||||||
#define VERSION "++4.07c"
|
#define VERSION "++4.09c"
|
||||||
|
|
||||||
/******************************************************
|
/******************************************************
|
||||||
* *
|
* *
|
||||||
@ -43,6 +43,12 @@
|
|||||||
Default: 8MB (defined in bytes) */
|
Default: 8MB (defined in bytes) */
|
||||||
#define DEFAULT_SHMEM_SIZE (8 * 1024 * 1024)
|
#define DEFAULT_SHMEM_SIZE (8 * 1024 * 1024)
|
||||||
|
|
||||||
|
/* Default time until when no more coverage finds are happening afl-fuzz
|
||||||
|
switches to exploitation mode. It automatically switches back when new
|
||||||
|
coverage is found.
|
||||||
|
Default: 300 (seconds) */
|
||||||
|
#define STRATEGY_SWITCH_TIME 1000
|
||||||
|
|
||||||
/* Default file permission umode when creating files (default: 0600) */
|
/* Default file permission umode when creating files (default: 0600) */
|
||||||
#define DEFAULT_PERMISSION 0600
|
#define DEFAULT_PERMISSION 0600
|
||||||
|
|
||||||
@ -54,10 +60,6 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* if TRANSFORM is enabled with '-l T', this additionally enables base64
|
|
||||||
encoding/decoding */
|
|
||||||
// #define CMPLOG_SOLVE_TRANSFORM_BASE64
|
|
||||||
|
|
||||||
/* If a redqueen pass finds more than one solution, try to combine them? */
|
/* If a redqueen pass finds more than one solution, try to combine them? */
|
||||||
#define CMPLOG_COMBINE
|
#define CMPLOG_COMBINE
|
||||||
|
|
||||||
@ -65,10 +67,10 @@
|
|||||||
#define CMPLOG_CORPUS_PERCENT 5U
|
#define CMPLOG_CORPUS_PERCENT 5U
|
||||||
|
|
||||||
/* Number of potential positions from which we decide if cmplog becomes
|
/* Number of potential positions from which we decide if cmplog becomes
|
||||||
useless, default 8096 */
|
useless, default 12288 */
|
||||||
#define CMPLOG_POSITIONS_MAX (12 * 1024)
|
#define CMPLOG_POSITIONS_MAX (12 * 1024)
|
||||||
|
|
||||||
/* Maximum allowed fails per CMP value. Default: 128 */
|
/* Maximum allowed fails per CMP value. Default: 96 */
|
||||||
#define CMPLOG_FAIL_MAX 96
|
#define CMPLOG_FAIL_MAX 96
|
||||||
|
|
||||||
/* -------------------------------------*/
|
/* -------------------------------------*/
|
||||||
@ -118,9 +120,9 @@
|
|||||||
|
|
||||||
// #define _WANT_ORIGINAL_AFL_ALLOC
|
// #define _WANT_ORIGINAL_AFL_ALLOC
|
||||||
|
|
||||||
/* Comment out to disable fancy ANSI boxes and use poor man's 7-bit UI: */
|
/* Comment out to disable fancy boxes and use poor man's 7-bit UI: */
|
||||||
|
|
||||||
#ifndef ANDROID_DISABLE_FANCY // Fancy boxes are ugly from adb
|
#ifndef DISABLE_FANCY
|
||||||
#define FANCY_BOXES
|
#define FANCY_BOXES
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -354,9 +356,10 @@
|
|||||||
65535, /* Overflow unsig 16-bit when incremented */ \
|
65535, /* Overflow unsig 16-bit when incremented */ \
|
||||||
65536, /* Overflow unsig 16 bit */ \
|
65536, /* Overflow unsig 16 bit */ \
|
||||||
100663045, /* Large positive number (endian-agnostic) */ \
|
100663045, /* Large positive number (endian-agnostic) */ \
|
||||||
|
2139095040, /* float infinite */ \
|
||||||
2147483647 /* Overflow signed 32-bit when incremented */
|
2147483647 /* Overflow signed 32-bit when incremented */
|
||||||
|
|
||||||
#define INTERESTING_32_LEN 8
|
#define INTERESTING_32_LEN 9
|
||||||
|
|
||||||
/***********************************************************
|
/***********************************************************
|
||||||
* *
|
* *
|
||||||
@ -440,7 +443,15 @@
|
|||||||
after changing this - otherwise, SEGVs may ensue. */
|
after changing this - otherwise, SEGVs may ensue. */
|
||||||
|
|
||||||
#define MAP_SIZE_POW2 16
|
#define MAP_SIZE_POW2 16
|
||||||
|
|
||||||
|
/* Do not change this unless you really know what you are doing. */
|
||||||
|
|
||||||
#define MAP_SIZE (1U << MAP_SIZE_POW2)
|
#define MAP_SIZE (1U << MAP_SIZE_POW2)
|
||||||
|
#if MAP_SIZE <= 65536
|
||||||
|
#define MAP_INITIAL_SIZE (2 << 20) // = 2097152
|
||||||
|
#else
|
||||||
|
#define MAP_INITIAL_SIZE MAP_SIZE
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Maximum allocator request size (keep well under INT_MAX): */
|
/* Maximum allocator request size (keep well under INT_MAX): */
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@
|
|||||||
* Box drawing sequences *
|
* Box drawing sequences *
|
||||||
*************************/
|
*************************/
|
||||||
|
|
||||||
#ifdef FANCY_BOXES
|
#ifdef FANCY_BOXES_NO_UTF
|
||||||
|
|
||||||
#define SET_G1 "\x1b)0" /* Set G1 for box drawing */
|
#define SET_G1 "\x1b)0" /* Set G1 for box drawing */
|
||||||
#define RESET_G1 "\x1b)B" /* Reset G1 to ASCII */
|
#define RESET_G1 "\x1b)B" /* Reset G1 to ASCII */
|
||||||
@ -136,22 +136,43 @@
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#define SET_G1 ""
|
#ifdef FANCY_BOXES
|
||||||
#define RESET_G1 ""
|
|
||||||
#define bSTART ""
|
|
||||||
#define bSTOP ""
|
|
||||||
#define bH "-"
|
|
||||||
#define bV "|"
|
|
||||||
#define bLT "+"
|
|
||||||
#define bRT "+"
|
|
||||||
#define bLB "+"
|
|
||||||
#define bRB "+"
|
|
||||||
#define bX "+"
|
|
||||||
#define bVR "+"
|
|
||||||
#define bVL "+"
|
|
||||||
#define bHT "+"
|
|
||||||
#define bHB "+"
|
|
||||||
|
|
||||||
|
#define SET_G1 ""
|
||||||
|
#define RESET_G1 ""
|
||||||
|
#define bSTART ""
|
||||||
|
#define bSTOP ""
|
||||||
|
#define bH "\u2500" /* Horizontal line */
|
||||||
|
#define bV "\u2502" /* Vertical line */
|
||||||
|
#define bLT "\u250c" /* Left top corner */
|
||||||
|
#define bRT "\u2510" /* Right top corner */
|
||||||
|
#define bLB "\u2514" /* Left bottom corner */
|
||||||
|
#define bRB "\u2518" /* Right bottom corner */
|
||||||
|
#define bX "\u253c" /* Cross */
|
||||||
|
#define bVR "\u251c" /* Vertical, branch right */
|
||||||
|
#define bVL "\u2524" /* Vertical, branch left */
|
||||||
|
#define bHT "\u2534" /* Horizontal, branch top */
|
||||||
|
#define bHB "\u252c" /* Horizontal, branch bottom */
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define SET_G1 ""
|
||||||
|
#define RESET_G1 ""
|
||||||
|
#define bSTART ""
|
||||||
|
#define bSTOP ""
|
||||||
|
#define bH "-"
|
||||||
|
#define bV "|"
|
||||||
|
#define bLT "+"
|
||||||
|
#define bRT "+"
|
||||||
|
#define bLB "+"
|
||||||
|
#define bRB "+"
|
||||||
|
#define bX "+"
|
||||||
|
#define bVR "+"
|
||||||
|
#define bVL "+"
|
||||||
|
#define bHT "+"
|
||||||
|
#define bHB "+"
|
||||||
|
|
||||||
|
#endif
|
||||||
#endif /* ^FANCY_BOXES */
|
#endif /* ^FANCY_BOXES */
|
||||||
|
|
||||||
/***********************
|
/***********************
|
||||||
|
@ -35,6 +35,7 @@ static char *afl_environment_variables[] = {
|
|||||||
"AFL_COMPCOV_BINNAME",
|
"AFL_COMPCOV_BINNAME",
|
||||||
"AFL_COMPCOV_LEVEL",
|
"AFL_COMPCOV_LEVEL",
|
||||||
"AFL_CRASH_EXITCODE",
|
"AFL_CRASH_EXITCODE",
|
||||||
|
"AFL_CRASHING_SEEDS_AS_NEW_CRASH",
|
||||||
"AFL_CUSTOM_MUTATOR_LIBRARY",
|
"AFL_CUSTOM_MUTATOR_LIBRARY",
|
||||||
"AFL_CUSTOM_MUTATOR_ONLY",
|
"AFL_CUSTOM_MUTATOR_ONLY",
|
||||||
"AFL_CUSTOM_INFO_PROGRAM",
|
"AFL_CUSTOM_INFO_PROGRAM",
|
||||||
@ -58,6 +59,7 @@ static char *afl_environment_variables[] = {
|
|||||||
"AFL_EXIT_ON_TIME",
|
"AFL_EXIT_ON_TIME",
|
||||||
"AFL_EXIT_ON_SEED_ISSUES",
|
"AFL_EXIT_ON_SEED_ISSUES",
|
||||||
"AFL_FAST_CAL",
|
"AFL_FAST_CAL",
|
||||||
|
"AFL_FINAL_SYNC",
|
||||||
"AFL_FORCE_UI",
|
"AFL_FORCE_UI",
|
||||||
"AFL_FRIDA_DEBUG_MAPS",
|
"AFL_FRIDA_DEBUG_MAPS",
|
||||||
"AFL_FRIDA_DRIVER_NO_HOOK",
|
"AFL_FRIDA_DRIVER_NO_HOOK",
|
||||||
@ -111,6 +113,7 @@ static char *afl_environment_variables[] = {
|
|||||||
"AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES",
|
"AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES",
|
||||||
"AFL_IGNORE_PROBLEMS",
|
"AFL_IGNORE_PROBLEMS",
|
||||||
"AFL_IGNORE_PROBLEMS_COVERAGE",
|
"AFL_IGNORE_PROBLEMS_COVERAGE",
|
||||||
|
"AFL_IGNORE_SEED_PROBLEMS",
|
||||||
"AFL_IGNORE_TIMEOUTS",
|
"AFL_IGNORE_TIMEOUTS",
|
||||||
"AFL_IGNORE_UNKNOWN_ENVS",
|
"AFL_IGNORE_UNKNOWN_ENVS",
|
||||||
"AFL_IMPORT_FIRST",
|
"AFL_IMPORT_FIRST",
|
||||||
@ -159,6 +162,7 @@ static char *afl_environment_variables[] = {
|
|||||||
"AFL_LLVM_MAP_DYNAMIC",
|
"AFL_LLVM_MAP_DYNAMIC",
|
||||||
"AFL_LLVM_NGRAM_SIZE",
|
"AFL_LLVM_NGRAM_SIZE",
|
||||||
"AFL_NGRAM_SIZE",
|
"AFL_NGRAM_SIZE",
|
||||||
|
"AFL_LLVM_NO_RPATH",
|
||||||
"AFL_LLVM_NOT_ZERO",
|
"AFL_LLVM_NOT_ZERO",
|
||||||
"AFL_LLVM_INSTRUMENT_FILE",
|
"AFL_LLVM_INSTRUMENT_FILE",
|
||||||
"AFL_LLVM_THREADSAFE_INST",
|
"AFL_LLVM_THREADSAFE_INST",
|
||||||
@ -168,6 +172,7 @@ static char *afl_environment_variables[] = {
|
|||||||
"AFL_LLVM_LTO_DONTWRITEID",
|
"AFL_LLVM_LTO_DONTWRITEID",
|
||||||
"AFL_LLVM_LTO_SKIPINIT"
|
"AFL_LLVM_LTO_SKIPINIT"
|
||||||
"AFL_LLVM_LTO_STARTID",
|
"AFL_LLVM_LTO_STARTID",
|
||||||
|
"AFL_FUZZER_LOOPCOUNT",
|
||||||
"AFL_NO_ARITH",
|
"AFL_NO_ARITH",
|
||||||
"AFL_NO_AUTODICT",
|
"AFL_NO_AUTODICT",
|
||||||
"AFL_NO_BUILTIN",
|
"AFL_NO_BUILTIN",
|
||||||
@ -176,6 +181,7 @@ static char *afl_environment_variables[] = {
|
|||||||
"AFL_NO_COLOUR",
|
"AFL_NO_COLOUR",
|
||||||
#endif
|
#endif
|
||||||
"AFL_NO_CPU_RED",
|
"AFL_NO_CPU_RED",
|
||||||
|
"AFL_NO_CFG_FUZZING", // afl.rs rust crate option
|
||||||
"AFL_NO_CRASH_README",
|
"AFL_NO_CRASH_README",
|
||||||
"AFL_NO_FORKSRV",
|
"AFL_NO_FORKSRV",
|
||||||
"AFL_NO_UI",
|
"AFL_NO_UI",
|
||||||
@ -189,6 +195,10 @@ static char *afl_environment_variables[] = {
|
|||||||
"AFL_MAX_DET_EXTRAS",
|
"AFL_MAX_DET_EXTRAS",
|
||||||
"AFL_NO_X86", // not really an env but we dont want to warn on it
|
"AFL_NO_X86", // not really an env but we dont want to warn on it
|
||||||
"AFL_NOOPT",
|
"AFL_NOOPT",
|
||||||
|
"AFL_NYX_AUX_SIZE",
|
||||||
|
"AFL_NYX_DISABLE_SNAPSHOT_MODE",
|
||||||
|
"AFL_NYX_LOG",
|
||||||
|
"AFL_NYX_REUSE_SNAPSHOT",
|
||||||
"AFL_PASSTHROUGH",
|
"AFL_PASSTHROUGH",
|
||||||
"AFL_PATH",
|
"AFL_PATH",
|
||||||
"AFL_PERFORMANCE_FILE",
|
"AFL_PERFORMANCE_FILE",
|
||||||
|
@ -86,6 +86,8 @@ typedef struct {
|
|||||||
uint32_t size);
|
uint32_t size);
|
||||||
|
|
||||||
bool (*nyx_remove_work_dir)(const char *workdir);
|
bool (*nyx_remove_work_dir)(const char *workdir);
|
||||||
|
bool (*nyx_config_set_aux_buffer_size)(void *config,
|
||||||
|
uint32_t aux_buffer_size);
|
||||||
|
|
||||||
} nyx_plugin_handler_t;
|
} nyx_plugin_handler_t;
|
||||||
|
|
||||||
@ -195,8 +197,10 @@ typedef struct afl_forkserver {
|
|||||||
u32 nyx_id; /* nyx runner id (0 -> master) */
|
u32 nyx_id; /* nyx runner id (0 -> master) */
|
||||||
u32 nyx_bind_cpu_id; /* nyx runner cpu id */
|
u32 nyx_bind_cpu_id; /* nyx runner cpu id */
|
||||||
char *nyx_aux_string;
|
char *nyx_aux_string;
|
||||||
|
u32 nyx_aux_string_len;
|
||||||
bool nyx_use_tmp_workdir;
|
bool nyx_use_tmp_workdir;
|
||||||
char *nyx_tmp_workdir_path;
|
char *nyx_tmp_workdir_path;
|
||||||
|
s32 nyx_log_fd;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
} afl_forkserver_t;
|
} afl_forkserver_t;
|
||||||
|
@ -365,7 +365,7 @@ typedef uint32_t XXH32_hash_t;
|
|||||||
(defined(__cplusplus) || \
|
(defined(__cplusplus) || \
|
||||||
(defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */))
|
(defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */))
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
typedef uint32_t XXH32_hash_t;
|
typedef uint32_t XXH32_hash_t;
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
@ -1082,7 +1082,7 @@ struct XXH64_state_s {
|
|||||||
#include <stdalign.h>
|
#include <stdalign.h>
|
||||||
#define XXH_ALIGN(n) alignas(n)
|
#define XXH_ALIGN(n) alignas(n)
|
||||||
#elif defined(__cplusplus) && (__cplusplus >= 201103L) /* >= C++11 */
|
#elif defined(__cplusplus) && (__cplusplus >= 201103L) /* >= C++11 */
|
||||||
/* In C++ alignas() is a keyword */
|
/* In C++ alignas() is a keyword */
|
||||||
#define XXH_ALIGN(n) alignas(n)
|
#define XXH_ALIGN(n) alignas(n)
|
||||||
#elif defined(__GNUC__)
|
#elif defined(__GNUC__)
|
||||||
#define XXH_ALIGN(n) __attribute__((aligned(n)))
|
#define XXH_ALIGN(n) __attribute__((aligned(n)))
|
||||||
@ -3031,8 +3031,8 @@ XXH64_hashFromCanonical(const XXH64_canonical_t *src) {
|
|||||||
__STDC_VERSION__ >= 199901L /* >= C99 */
|
__STDC_VERSION__ >= 199901L /* >= C99 */
|
||||||
#define XXH_RESTRICT restrict
|
#define XXH_RESTRICT restrict
|
||||||
#else
|
#else
|
||||||
/* Note: it might be useful to define __restrict or __restrict__ for
|
/* Note: it might be useful to define __restrict or __restrict__ for
|
||||||
* some C++ compilers */
|
* some C++ compilers */
|
||||||
#define XXH_RESTRICT /* disable */
|
#define XXH_RESTRICT /* disable */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -3492,8 +3492,8 @@ XXH_FORCE_INLINE xxh_u64x2 XXH_vec_loadu(const void *ptr) {
|
|||||||
#define XXH_vec_mulo vec_mulo
|
#define XXH_vec_mulo vec_mulo
|
||||||
#define XXH_vec_mule vec_mule
|
#define XXH_vec_mule vec_mule
|
||||||
#elif defined(__clang__) && XXH_HAS_BUILTIN(__builtin_altivec_vmuleuw)
|
#elif defined(__clang__) && XXH_HAS_BUILTIN(__builtin_altivec_vmuleuw)
|
||||||
/* Clang has a better way to control this, we can just use the builtin
|
/* Clang has a better way to control this, we can just use the builtin
|
||||||
* which doesn't swap. */
|
* which doesn't swap. */
|
||||||
#define XXH_vec_mulo __builtin_altivec_vmulouw
|
#define XXH_vec_mulo __builtin_altivec_vmulouw
|
||||||
#define XXH_vec_mule __builtin_altivec_vmuleuw
|
#define XXH_vec_mule __builtin_altivec_vmuleuw
|
||||||
#else
|
#else
|
||||||
@ -3604,15 +3604,15 @@ XXH_FORCE_INLINE xxh_u64 XXH_mult32to64(xxh_u64 x, xxh_u64 y) {
|
|||||||
#include <intrin.h>
|
#include <intrin.h>
|
||||||
#define XXH_mult32to64(x, y) __emulu((unsigned)(x), (unsigned)(y))
|
#define XXH_mult32to64(x, y) __emulu((unsigned)(x), (unsigned)(y))
|
||||||
#else
|
#else
|
||||||
/*
|
/*
|
||||||
* Downcast + upcast is usually better than masking on older compilers
|
* Downcast + upcast is usually better than masking on older compilers
|
||||||
* like GCC 4.2 (especially 32-bit ones), all without affecting newer
|
* like GCC 4.2 (especially 32-bit ones), all without affecting newer
|
||||||
* compilers.
|
* compilers.
|
||||||
*
|
*
|
||||||
* The other method, (x & 0xFFFFFFFF) * (y & 0xFFFFFFFF), will AND both
|
* The other method, (x & 0xFFFFFFFF) * (y & 0xFFFFFFFF), will AND both
|
||||||
* operands and perform a full 64x64 multiply -- entirely redundant on
|
* operands and perform a full 64x64 multiply -- entirely redundant on
|
||||||
* 32-bit.
|
* 32-bit.
|
||||||
*/
|
*/
|
||||||
#define XXH_mult32to64(x, y) \
|
#define XXH_mult32to64(x, y) \
|
||||||
((xxh_u64)(xxh_u32)(x) * (xxh_u64)(xxh_u32)(y))
|
((xxh_u64)(xxh_u32)(x) * (xxh_u64)(xxh_u32)(y))
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@ For the GCC-based instrumentation, see
|
|||||||
|
|
||||||
## 1) Introduction
|
## 1) Introduction
|
||||||
|
|
||||||
! llvm_mode works with llvm versions 3.8 up to 13 !
|
! llvm_mode works with llvm versions 3.8 up to 17 - but 13+ is recommended !
|
||||||
|
|
||||||
The code in this directory allows you to instrument programs for AFL++ using
|
The code in this directory allows you to instrument programs for AFL++ using
|
||||||
true compiler-level instrumentation, instead of the more crude assembly-level
|
true compiler-level instrumentation, instead of the more crude assembly-level
|
||||||
|
@ -331,7 +331,7 @@ llvmGetPassPluginInfo() {
|
|||||||
#if LLVM_VERSION_MAJOR <= 13
|
#if LLVM_VERSION_MAJOR <= 13
|
||||||
using OptimizationLevel = typename PassBuilder::OptimizationLevel;
|
using OptimizationLevel = typename PassBuilder::OptimizationLevel;
|
||||||
#endif
|
#endif
|
||||||
#if LLVM_VERSION_MAJOR >= 16
|
#if LLVM_VERSION_MAJOR >= 15
|
||||||
PB.registerFullLinkTimeOptimizationLastEPCallback(
|
PB.registerFullLinkTimeOptimizationLastEPCallback(
|
||||||
#else
|
#else
|
||||||
PB.registerOptimizerLastEPCallback(
|
PB.registerOptimizerLastEPCallback(
|
||||||
@ -1081,7 +1081,7 @@ bool ModuleSanitizerCoverageLTO::instrumentModule(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!be_quiet)
|
if (!be_quiet)
|
||||||
printf("AUTODICTIONARY: %lu string%s found\n", count,
|
printf("AUTODICTIONARY: %zu string%s found\n", count,
|
||||||
count == 1 ? "" : "s");
|
count == 1 ? "" : "s");
|
||||||
|
|
||||||
if (count) {
|
if (count) {
|
||||||
|
@ -214,7 +214,11 @@ llvmGetPassPluginInfo() {
|
|||||||
#if LLVM_VERSION_MAJOR == 13
|
#if LLVM_VERSION_MAJOR == 13
|
||||||
using OptimizationLevel = typename PassBuilder::OptimizationLevel;
|
using OptimizationLevel = typename PassBuilder::OptimizationLevel;
|
||||||
#endif
|
#endif
|
||||||
|
#if LLVM_VERSION_MAJOR >= 16
|
||||||
|
PB.registerOptimizerEarlyEPCallback(
|
||||||
|
#else
|
||||||
PB.registerOptimizerLastEPCallback(
|
PB.registerOptimizerLastEPCallback(
|
||||||
|
#endif
|
||||||
[](ModulePassManager &MPM, OptimizationLevel OL) {
|
[](ModulePassManager &MPM, OptimizationLevel OL) {
|
||||||
|
|
||||||
MPM.addPass(ModuleSanitizerCoverageAFL());
|
MPM.addPass(ModuleSanitizerCoverageAFL());
|
||||||
@ -225,7 +229,6 @@ llvmGetPassPluginInfo() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LLVM_VERSION_MAJOR == 1
|
|
||||||
PreservedAnalyses ModuleSanitizerCoverageAFL::run(Module &M,
|
PreservedAnalyses ModuleSanitizerCoverageAFL::run(Module &M,
|
||||||
ModuleAnalysisManager &MAM) {
|
ModuleAnalysisManager &MAM) {
|
||||||
|
|
||||||
@ -243,50 +246,12 @@ PreservedAnalyses ModuleSanitizerCoverageAFL::run(Module &M,
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!ModuleSancov.instrumentModule(M, DTCallback, PDTCallback))
|
|
||||||
return PreservedAnalyses::all();
|
|
||||||
|
|
||||||
PreservedAnalyses PA = PreservedAnalyses::none();
|
|
||||||
// GlobalsAA is considered stateless and does not get invalidated unless
|
|
||||||
// explicitly invalidated; PreservedAnalyses::none() is not enough. Sanitizers
|
|
||||||
// make changes that require GlobalsAA to be invalidated.
|
|
||||||
PA.abandon<GlobalsAA>();
|
|
||||||
return PA;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
|
||||||
#if LLVM_VERSION_MAJOR >= 16
|
|
||||||
PreservedAnalyses ModuleSanitizerCoverageAFL::run(Module &M,
|
|
||||||
ModuleAnalysisManager &MAM) {
|
|
||||||
|
|
||||||
#else
|
|
||||||
PreservedAnalyses ModuleSanitizerCoverageAFL::run(Module &M,
|
|
||||||
ModuleAnalysisManager &MAM) {
|
|
||||||
|
|
||||||
#endif
|
|
||||||
ModuleSanitizerCoverageAFL ModuleSancov(Options);
|
|
||||||
auto &FAM = MAM.getResult<FunctionAnalysisManagerModuleProxy>(M).getManager();
|
|
||||||
auto DTCallback = [&FAM](Function &F) -> const DominatorTree * {
|
|
||||||
|
|
||||||
return &FAM.getResult<DominatorTreeAnalysis>(F);
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
auto PDTCallback = [&FAM](Function &F) -> const PostDominatorTree * {
|
|
||||||
|
|
||||||
return &FAM.getResult<PostDominatorTreeAnalysis>(F);
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
if (ModuleSancov.instrumentModule(M, DTCallback, PDTCallback))
|
if (ModuleSancov.instrumentModule(M, DTCallback, PDTCallback))
|
||||||
return PreservedAnalyses::none();
|
return PreservedAnalyses::none();
|
||||||
return PreservedAnalyses::all();
|
return PreservedAnalyses::all();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
std::pair<Value *, Value *> ModuleSanitizerCoverageAFL::CreateSecStartEnd(
|
std::pair<Value *, Value *> ModuleSanitizerCoverageAFL::CreateSecStartEnd(
|
||||||
Module &M, const char *Section, Type *Ty) {
|
Module &M, const char *Section, Type *Ty) {
|
||||||
|
|
||||||
@ -892,7 +857,7 @@ bool ModuleSanitizerCoverageAFL::InjectCoverage(
|
|||||||
IRB.CreatePointerCast(FunctionGuardArray, IntptrTy),
|
IRB.CreatePointerCast(FunctionGuardArray, IntptrTy),
|
||||||
ConstantInt::get(
|
ConstantInt::get(
|
||||||
IntptrTy,
|
IntptrTy,
|
||||||
(cnt_cov + ++local_selects + AllBlocks.size()) * 4)),
|
(cnt_cov + local_selects++ + AllBlocks.size()) * 4)),
|
||||||
Int32PtrTy);
|
Int32PtrTy);
|
||||||
|
|
||||||
auto GuardPtr2 = IRB.CreateIntToPtr(
|
auto GuardPtr2 = IRB.CreateIntToPtr(
|
||||||
@ -900,7 +865,7 @@ bool ModuleSanitizerCoverageAFL::InjectCoverage(
|
|||||||
IRB.CreatePointerCast(FunctionGuardArray, IntptrTy),
|
IRB.CreatePointerCast(FunctionGuardArray, IntptrTy),
|
||||||
ConstantInt::get(
|
ConstantInt::get(
|
||||||
IntptrTy,
|
IntptrTy,
|
||||||
(cnt_cov + ++local_selects + AllBlocks.size()) * 4)),
|
(cnt_cov + local_selects++ + AllBlocks.size()) * 4)),
|
||||||
Int32PtrTy);
|
Int32PtrTy);
|
||||||
|
|
||||||
result = IRB.CreateSelect(condition, GuardPtr1, GuardPtr2);
|
result = IRB.CreateSelect(condition, GuardPtr1, GuardPtr2);
|
||||||
@ -937,7 +902,7 @@ bool ModuleSanitizerCoverageAFL::InjectCoverage(
|
|||||||
IRB.CreatePointerCast(FunctionGuardArray, IntptrTy),
|
IRB.CreatePointerCast(FunctionGuardArray, IntptrTy),
|
||||||
ConstantInt::get(
|
ConstantInt::get(
|
||||||
IntptrTy,
|
IntptrTy,
|
||||||
(cnt_cov + ++local_selects + AllBlocks.size()) * 4)),
|
(cnt_cov + local_selects++ + AllBlocks.size()) * 4)),
|
||||||
Int32PtrTy);
|
Int32PtrTy);
|
||||||
x = IRB.CreateInsertElement(GuardPtr1, val1, (uint64_t)0);
|
x = IRB.CreateInsertElement(GuardPtr1, val1, (uint64_t)0);
|
||||||
|
|
||||||
@ -946,7 +911,7 @@ bool ModuleSanitizerCoverageAFL::InjectCoverage(
|
|||||||
IRB.CreatePointerCast(FunctionGuardArray, IntptrTy),
|
IRB.CreatePointerCast(FunctionGuardArray, IntptrTy),
|
||||||
ConstantInt::get(
|
ConstantInt::get(
|
||||||
IntptrTy,
|
IntptrTy,
|
||||||
(cnt_cov + ++local_selects + AllBlocks.size()) * 4)),
|
(cnt_cov + local_selects++ + AllBlocks.size()) * 4)),
|
||||||
Int32PtrTy);
|
Int32PtrTy);
|
||||||
y = IRB.CreateInsertElement(GuardPtr2, val2, (uint64_t)0);
|
y = IRB.CreateInsertElement(GuardPtr2, val2, (uint64_t)0);
|
||||||
|
|
||||||
@ -955,7 +920,7 @@ bool ModuleSanitizerCoverageAFL::InjectCoverage(
|
|||||||
val1 = IRB.CreateIntToPtr(
|
val1 = IRB.CreateIntToPtr(
|
||||||
IRB.CreateAdd(
|
IRB.CreateAdd(
|
||||||
IRB.CreatePointerCast(FunctionGuardArray, IntptrTy),
|
IRB.CreatePointerCast(FunctionGuardArray, IntptrTy),
|
||||||
ConstantInt::get(IntptrTy, (cnt_cov + ++local_selects +
|
ConstantInt::get(IntptrTy, (cnt_cov + local_selects++ +
|
||||||
AllBlocks.size()) *
|
AllBlocks.size()) *
|
||||||
4)),
|
4)),
|
||||||
Int32PtrTy);
|
Int32PtrTy);
|
||||||
@ -964,7 +929,7 @@ bool ModuleSanitizerCoverageAFL::InjectCoverage(
|
|||||||
val2 = IRB.CreateIntToPtr(
|
val2 = IRB.CreateIntToPtr(
|
||||||
IRB.CreateAdd(
|
IRB.CreateAdd(
|
||||||
IRB.CreatePointerCast(FunctionGuardArray, IntptrTy),
|
IRB.CreatePointerCast(FunctionGuardArray, IntptrTy),
|
||||||
ConstantInt::get(IntptrTy, (cnt_cov + ++local_selects +
|
ConstantInt::get(IntptrTy, (cnt_cov + local_selects++ +
|
||||||
AllBlocks.size()) *
|
AllBlocks.size()) *
|
||||||
4)),
|
4)),
|
||||||
Int32PtrTy);
|
Int32PtrTy);
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
#ifndef __HAIKU__
|
#if !defined(__HAIKU__) && !defined(__OpenBSD__)
|
||||||
#include <sys/syscall.h>
|
#include <sys/syscall.h>
|
||||||
#endif
|
#endif
|
||||||
#ifndef USEMMAP
|
#ifndef USEMMAP
|
||||||
@ -87,12 +87,6 @@
|
|||||||
is used for instrumentation output before __afl_map_shm() has a chance to
|
is used for instrumentation output before __afl_map_shm() has a chance to
|
||||||
run. It will end up as .comm, so it shouldn't be too wasteful. */
|
run. It will end up as .comm, so it shouldn't be too wasteful. */
|
||||||
|
|
||||||
#if MAP_SIZE <= 65536
|
|
||||||
#define MAP_INITIAL_SIZE 2097152
|
|
||||||
#else
|
|
||||||
#define MAP_INITIAL_SIZE MAP_SIZE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__HAIKU__)
|
#if defined(__HAIKU__)
|
||||||
extern ssize_t _kern_write(int fd, off_t pos, const void *buffer,
|
extern ssize_t _kern_write(int fd, off_t pos, const void *buffer,
|
||||||
size_t bufferSize);
|
size_t bufferSize);
|
||||||
@ -189,7 +183,7 @@ static u8 _is_sancov;
|
|||||||
|
|
||||||
/* Debug? */
|
/* Debug? */
|
||||||
|
|
||||||
static u32 __afl_debug;
|
/*static*/ u32 __afl_debug;
|
||||||
|
|
||||||
/* Already initialized markers */
|
/* Already initialized markers */
|
||||||
|
|
||||||
@ -673,7 +667,8 @@ static void __afl_map_shm(void) {
|
|||||||
|
|
||||||
if (id_str) {
|
if (id_str) {
|
||||||
|
|
||||||
if ((__afl_dummy_fd[1] = open("/dev/null", O_WRONLY)) < 0) {
|
// /dev/null doesn't work so we use /dev/urandom
|
||||||
|
if ((__afl_dummy_fd[1] = open("/dev/urandom", O_WRONLY)) < 0) {
|
||||||
|
|
||||||
if (pipe(__afl_dummy_fd) < 0) { __afl_dummy_fd[1] = 1; }
|
if (pipe(__afl_dummy_fd) < 0) { __afl_dummy_fd[1] = 1; }
|
||||||
|
|
||||||
@ -877,7 +872,7 @@ static void __afl_start_snapshots(void) {
|
|||||||
|
|
||||||
if (__afl_debug) {
|
if (__afl_debug) {
|
||||||
|
|
||||||
fprintf(stderr, "target forkserver recv: %08x\n", was_killed);
|
fprintf(stderr, "DEBUG: target forkserver recv: %08x\n", was_killed);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1144,7 +1139,7 @@ static void __afl_start_forkserver(void) {
|
|||||||
|
|
||||||
if (__afl_debug) {
|
if (__afl_debug) {
|
||||||
|
|
||||||
fprintf(stderr, "target forkserver recv: %08x\n", was_killed);
|
fprintf(stderr, "DEBUG: target forkserver recv: %08x\n", was_killed);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1477,6 +1472,7 @@ __attribute__((constructor(1))) void __afl_auto_second(void) {
|
|||||||
|
|
||||||
__afl_debug = 1;
|
__afl_debug = 1;
|
||||||
fprintf(stderr, "DEBUG: debug enabled\n");
|
fprintf(stderr, "DEBUG: debug enabled\n");
|
||||||
|
fprintf(stderr, "DEBUG: AFL++ afl-compiler-rt" VERSION "\n");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1705,11 +1701,12 @@ void __sanitizer_cov_trace_pc_guard_init(uint32_t *start, uint32_t *stop) {
|
|||||||
|
|
||||||
if (__afl_debug) {
|
if (__afl_debug) {
|
||||||
|
|
||||||
fprintf(stderr,
|
fprintf(
|
||||||
"Running __sanitizer_cov_trace_pc_guard_init: %p-%p (%lu edges) "
|
stderr,
|
||||||
"after_fs=%u\n",
|
"DEBUG: Running __sanitizer_cov_trace_pc_guard_init: %p-%p (%lu edges) "
|
||||||
start, stop, (unsigned long)(stop - start),
|
"after_fs=%u\n",
|
||||||
__afl_already_initialized_forkserver);
|
start, stop, (unsigned long)(stop - start),
|
||||||
|
__afl_already_initialized_forkserver);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1807,7 +1804,8 @@ void __sanitizer_cov_trace_pc_guard_init(uint32_t *start, uint32_t *stop) {
|
|||||||
u8 ignore_dso_after_fs = !!getenv("AFL_IGNORE_PROBLEMS_COVERAGE");
|
u8 ignore_dso_after_fs = !!getenv("AFL_IGNORE_PROBLEMS_COVERAGE");
|
||||||
if (__afl_debug && ignore_dso_after_fs) {
|
if (__afl_debug && ignore_dso_after_fs) {
|
||||||
|
|
||||||
fprintf(stderr, "Ignoring coverage from dynamically loaded code\n");
|
fprintf(stderr,
|
||||||
|
"DEBUG: Ignoring coverage from dynamically loaded code\n");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1877,7 +1875,8 @@ void __sanitizer_cov_trace_pc_guard_init(uint32_t *start, uint32_t *stop) {
|
|||||||
if (__afl_debug) {
|
if (__afl_debug) {
|
||||||
|
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Done __sanitizer_cov_trace_pc_guard_init: __afl_final_loc = %u\n",
|
"DEBUG: Done __sanitizer_cov_trace_pc_guard_init: __afl_final_loc "
|
||||||
|
"= %u\n",
|
||||||
__afl_final_loc);
|
__afl_final_loc);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1888,7 +1887,7 @@ void __sanitizer_cov_trace_pc_guard_init(uint32_t *start, uint32_t *stop) {
|
|||||||
|
|
||||||
if (__afl_debug) {
|
if (__afl_debug) {
|
||||||
|
|
||||||
fprintf(stderr, "Reinit shm necessary (+%u)\n",
|
fprintf(stderr, "DEBUG: Reinit shm necessary (+%u)\n",
|
||||||
__afl_final_loc - __afl_map_size);
|
__afl_final_loc - __afl_map_size);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1911,6 +1910,10 @@ void __cmplog_ins_hook1(uint8_t arg1, uint8_t arg2, uint8_t attr) {
|
|||||||
// fprintf(stderr, "hook1 arg0=%02x arg1=%02x attr=%u\n",
|
// fprintf(stderr, "hook1 arg0=%02x arg1=%02x attr=%u\n",
|
||||||
// (u8) arg1, (u8) arg2, attr);
|
// (u8) arg1, (u8) arg2, attr);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
if (unlikely(!__afl_cmp_map || arg1 == arg2)) return;
|
if (unlikely(!__afl_cmp_map || arg1 == arg2)) return;
|
||||||
|
|
||||||
uintptr_t k = (uintptr_t)__builtin_return_address(0);
|
uintptr_t k = (uintptr_t)__builtin_return_address(0);
|
||||||
@ -1937,6 +1940,8 @@ void __cmplog_ins_hook1(uint8_t arg1, uint8_t arg2, uint8_t attr) {
|
|||||||
__afl_cmp_map->log[k][hits].v0 = arg1;
|
__afl_cmp_map->log[k][hits].v0 = arg1;
|
||||||
__afl_cmp_map->log[k][hits].v1 = arg2;
|
__afl_cmp_map->log[k][hits].v1 = arg2;
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void __cmplog_ins_hook2(uint16_t arg1, uint16_t arg2, uint8_t attr) {
|
void __cmplog_ins_hook2(uint16_t arg1, uint16_t arg2, uint8_t attr) {
|
||||||
@ -2143,13 +2148,13 @@ void __cmplog_ins_hook16(uint128_t arg1, uint128_t arg2, uint8_t attr) {
|
|||||||
|
|
||||||
void __sanitizer_cov_trace_cmp1(uint8_t arg1, uint8_t arg2) {
|
void __sanitizer_cov_trace_cmp1(uint8_t arg1, uint8_t arg2) {
|
||||||
|
|
||||||
__cmplog_ins_hook1(arg1, arg2, 0);
|
//__cmplog_ins_hook1(arg1, arg2, 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void __sanitizer_cov_trace_const_cmp1(uint8_t arg1, uint8_t arg2) {
|
void __sanitizer_cov_trace_const_cmp1(uint8_t arg1, uint8_t arg2) {
|
||||||
|
|
||||||
__cmplog_ins_hook1(arg1, arg2, 0);
|
//__cmplog_ins_hook1(arg1, arg2, 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2258,11 +2263,13 @@ static int area_is_valid(void *ptr, size_t len) {
|
|||||||
|
|
||||||
if (unlikely(!ptr || __asan_region_is_poisoned(ptr, len))) { return 0; }
|
if (unlikely(!ptr || __asan_region_is_poisoned(ptr, len))) { return 0; }
|
||||||
|
|
||||||
#ifndef __HAIKU__
|
#ifdef __HAIKU__
|
||||||
long r = syscall(SYS_write, __afl_dummy_fd[1], ptr, len);
|
|
||||||
#else
|
|
||||||
long r = _kern_write(__afl_dummy_fd[1], -1, ptr, len);
|
long r = _kern_write(__afl_dummy_fd[1], -1, ptr, len);
|
||||||
#endif // HAIKU
|
#elif defined(__OpenBSD__)
|
||||||
|
long r = write(__afl_dummy_fd[1], ptr, len);
|
||||||
|
#else
|
||||||
|
long r = syscall(SYS_write, __afl_dummy_fd[1], ptr, len);
|
||||||
|
#endif // HAIKU, OPENBSD
|
||||||
|
|
||||||
if (r <= 0 || r > len) return 0;
|
if (r <= 0 || r > len) return 0;
|
||||||
|
|
||||||
@ -2300,7 +2307,7 @@ void __cmplog_rtn_hook_strn(u8 *ptr1, u8 *ptr2, u64 len) {
|
|||||||
int len1 = strnlen(ptr1, len0);
|
int len1 = strnlen(ptr1, len0);
|
||||||
if (len1 < 31) len1 = area_is_valid(ptr1, len1 + 1);
|
if (len1 < 31) len1 = area_is_valid(ptr1, len1 + 1);
|
||||||
int len2 = strnlen(ptr2, len0);
|
int len2 = strnlen(ptr2, len0);
|
||||||
if (len2 < 31) len2 = area_is_valid(ptr1, len2 + 1);
|
if (len2 < 31) len2 = area_is_valid(ptr2, len2 + 1);
|
||||||
int l = MAX(len1, len2);
|
int l = MAX(len1, len2);
|
||||||
if (l < 2) return;
|
if (l < 2) return;
|
||||||
|
|
||||||
|
@ -97,11 +97,15 @@ bool isIgnoreFunction(const llvm::Function *F) {
|
|||||||
|
|
||||||
static constexpr const char *ignoreSubstringList[] = {
|
static constexpr const char *ignoreSubstringList[] = {
|
||||||
|
|
||||||
"__asan", "__msan", "__ubsan", "__lsan", "__san", "__sanitize",
|
"__asan", "__msan", "__ubsan", "__lsan", "__san",
|
||||||
"__cxx", "DebugCounter", "DwarfDebug", "DebugLoc"
|
"__sanitize", "DebugCounter", "DwarfDebug", "DebugLoc"
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// This check is very sensitive, we must be sure to not include patterns
|
||||||
|
// that are part of user-written C++ functions like the ones including
|
||||||
|
// std::string as parameter (see #1927) as the mangled type is inserted in the
|
||||||
|
// mangled name of the user-written function
|
||||||
for (auto const &ignoreListFunc : ignoreSubstringList) {
|
for (auto const &ignoreListFunc : ignoreSubstringList) {
|
||||||
|
|
||||||
// hexcoder: F->getName().contains() not avaiilable in llvm 3.8.0
|
// hexcoder: F->getName().contains() not avaiilable in llvm 3.8.0
|
||||||
|
@ -206,7 +206,18 @@ bool AFLdict2filePass::runOnModule(Module &M) {
|
|||||||
|
|
||||||
ptr = getenv("AFL_LLVM_DICT2FILE");
|
ptr = getenv("AFL_LLVM_DICT2FILE");
|
||||||
|
|
||||||
if (!ptr || *ptr != '/')
|
if (!ptr) {
|
||||||
|
|
||||||
|
#if LLVM_VERSION_MAJOR >= 11 /* use new pass manager */
|
||||||
|
auto PA = PreservedAnalyses::all();
|
||||||
|
return PA;
|
||||||
|
#else
|
||||||
|
return true;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (*ptr != '/')
|
||||||
FATAL("AFL_LLVM_DICT2FILE is not set to an absolute path: %s", ptr);
|
FATAL("AFL_LLVM_DICT2FILE is not set to an absolute path: %s", ptr);
|
||||||
|
|
||||||
of.open(ptr, std::ofstream::out | std::ofstream::app);
|
of.open(ptr, std::ofstream::out | std::ofstream::app);
|
||||||
|
@ -552,7 +552,7 @@ bool AFLCoverage::runOnModule(Module &M) {
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
|
||||||
// load the context ID of the previous function and write to to a
|
// load the context ID of the previous function and write to a
|
||||||
// local variable on the stack
|
// local variable on the stack
|
||||||
LoadInst *PrevCtxLoad = IRB.CreateLoad(
|
LoadInst *PrevCtxLoad = IRB.CreateLoad(
|
||||||
#if LLVM_VERSION_MAJOR >= 14
|
#if LLVM_VERSION_MAJOR >= 14
|
||||||
@ -634,7 +634,7 @@ bool AFLCoverage::runOnModule(Module &M) {
|
|||||||
|
|
||||||
/* There is a problem with Ubuntu 18.04 and llvm 6.0 (see issue #63).
|
/* There is a problem with Ubuntu 18.04 and llvm 6.0 (see issue #63).
|
||||||
The inline function successors() is not inlined and also not found at runtime
|
The inline function successors() is not inlined and also not found at runtime
|
||||||
:-( As I am unable to detect Ubuntu18.04 heree, the next best thing is to
|
:-( As I am unable to detect Ubuntu18.04 here, the next best thing is to
|
||||||
disable this optional optimization for LLVM 6.0.0 and Linux */
|
disable this optional optimization for LLVM 6.0.0 and Linux */
|
||||||
#if !(LLVM_VERSION_MAJOR == 6 && LLVM_VERSION_MINOR == 0) || !defined __linux__
|
#if !(LLVM_VERSION_MAJOR == 6 && LLVM_VERSION_MINOR == 0) || !defined __linux__
|
||||||
// only instrument if this basic block is the destination of a previous
|
// only instrument if this basic block is the destination of a previous
|
||||||
|
@ -90,7 +90,7 @@ class CmpLogInstructions : public ModulePass {
|
|||||||
#if LLVM_MAJOR >= 11 /* use new pass manager */
|
#if LLVM_MAJOR >= 11 /* use new pass manager */
|
||||||
PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM);
|
PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM);
|
||||||
#else
|
#else
|
||||||
bool runOnModule(Module &M) override;
|
bool runOnModule(Module &M) override;
|
||||||
|
|
||||||
#if LLVM_VERSION_MAJOR >= 4
|
#if LLVM_VERSION_MAJOR >= 4
|
||||||
StringRef getPassName() const override {
|
StringRef getPassName() const override {
|
||||||
@ -165,23 +165,25 @@ bool CmpLogInstructions::hookInstrs(Module &M) {
|
|||||||
IntegerType *Int64Ty = IntegerType::getInt64Ty(C);
|
IntegerType *Int64Ty = IntegerType::getInt64Ty(C);
|
||||||
IntegerType *Int128Ty = IntegerType::getInt128Ty(C);
|
IntegerType *Int128Ty = IntegerType::getInt128Ty(C);
|
||||||
|
|
||||||
#if LLVM_VERSION_MAJOR >= 9
|
/*
|
||||||
FunctionCallee
|
#if LLVM_VERSION_MAJOR >= 9
|
||||||
#else
|
FunctionCallee
|
||||||
Constant *
|
#else
|
||||||
#endif
|
Constant *
|
||||||
c1 = M.getOrInsertFunction("__cmplog_ins_hook1", VoidTy, Int8Ty, Int8Ty,
|
#endif
|
||||||
Int8Ty
|
c1 = M.getOrInsertFunction("__cmplog_ins_hook1", VoidTy, Int8Ty, Int8Ty,
|
||||||
#if LLVM_VERSION_MAJOR < 5
|
Int8Ty
|
||||||
,
|
#if LLVM_VERSION_MAJOR < 5
|
||||||
NULL
|
,
|
||||||
#endif
|
NULL
|
||||||
);
|
#endif
|
||||||
#if LLVM_VERSION_MAJOR >= 9
|
);
|
||||||
FunctionCallee cmplogHookIns1 = c1;
|
#if LLVM_VERSION_MAJOR >= 9
|
||||||
#else
|
FunctionCallee cmplogHookIns1 = c1;
|
||||||
Function *cmplogHookIns1 = cast<Function>(c1);
|
#else
|
||||||
#endif
|
Function *cmplogHookIns1 = cast<Function>(c1);
|
||||||
|
#endif
|
||||||
|
*/
|
||||||
|
|
||||||
#if LLVM_VERSION_MAJOR >= 9
|
#if LLVM_VERSION_MAJOR >= 9
|
||||||
FunctionCallee
|
FunctionCallee
|
||||||
@ -619,7 +621,7 @@ bool CmpLogInstructions::hookInstrs(Module &M) {
|
|||||||
switch (cast_size) {
|
switch (cast_size) {
|
||||||
|
|
||||||
case 8:
|
case 8:
|
||||||
IRB.CreateCall(cmplogHookIns1, args);
|
// IRB.CreateCall(cmplogHookIns1, args);
|
||||||
break;
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
IRB.CreateCall(cmplogHookIns2, args);
|
IRB.CreateCall(cmplogHookIns2, args);
|
||||||
|
@ -85,7 +85,7 @@ class CmpLogRoutines : public ModulePass {
|
|||||||
#if LLVM_VERSION_MAJOR >= 11 /* use new pass manager */
|
#if LLVM_VERSION_MAJOR >= 11 /* use new pass manager */
|
||||||
PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM);
|
PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM);
|
||||||
#else
|
#else
|
||||||
bool runOnModule(Module &M) override;
|
bool runOnModule(Module &M) override;
|
||||||
|
|
||||||
#if LLVM_VERSION_MAJOR >= 4
|
#if LLVM_VERSION_MAJOR >= 4
|
||||||
StringRef getPassName() const override {
|
StringRef getPassName() const override {
|
||||||
|
@ -85,7 +85,7 @@ class CmplogSwitches : public ModulePass {
|
|||||||
#if LLVM_VERSION_MAJOR >= 11 /* use new pass manager */
|
#if LLVM_VERSION_MAJOR >= 11 /* use new pass manager */
|
||||||
PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM);
|
PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM);
|
||||||
#else
|
#else
|
||||||
bool runOnModule(Module &M) override;
|
bool runOnModule(Module &M) override;
|
||||||
|
|
||||||
#if LLVM_VERSION_MAJOR < 4
|
#if LLVM_VERSION_MAJOR < 4
|
||||||
const char *getPassName() const override {
|
const char *getPassName() const override {
|
||||||
|
@ -169,6 +169,7 @@ bool CompareTransform::transformCmps(Module &M, const bool processStrcmp,
|
|||||||
DenseMap<Value *, std::string *> valueMap;
|
DenseMap<Value *, std::string *> valueMap;
|
||||||
std::vector<CallInst *> calls;
|
std::vector<CallInst *> calls;
|
||||||
LLVMContext &C = M.getContext();
|
LLVMContext &C = M.getContext();
|
||||||
|
IntegerType *Int1Ty = IntegerType::getInt1Ty(C);
|
||||||
IntegerType *Int8Ty = IntegerType::getInt8Ty(C);
|
IntegerType *Int8Ty = IntegerType::getInt8Ty(C);
|
||||||
IntegerType *Int32Ty = IntegerType::getInt32Ty(C);
|
IntegerType *Int32Ty = IntegerType::getInt32Ty(C);
|
||||||
IntegerType *Int64Ty = IntegerType::getInt64Ty(C);
|
IntegerType *Int64Ty = IntegerType::getInt64Ty(C);
|
||||||
@ -227,9 +228,9 @@ bool CompareTransform::transformCmps(Module &M, const bool processStrcmp,
|
|||||||
isStrcmp &=
|
isStrcmp &=
|
||||||
(!FuncName.compare("strcmp") || !FuncName.compare("xmlStrcmp") ||
|
(!FuncName.compare("strcmp") || !FuncName.compare("xmlStrcmp") ||
|
||||||
!FuncName.compare("xmlStrEqual") ||
|
!FuncName.compare("xmlStrEqual") ||
|
||||||
!FuncName.compare("g_strcmp0") ||
|
|
||||||
!FuncName.compare("curl_strequal") ||
|
!FuncName.compare("curl_strequal") ||
|
||||||
!FuncName.compare("strcsequal"));
|
!FuncName.compare("strcsequal") ||
|
||||||
|
!FuncName.compare("g_strcmp0"));
|
||||||
isMemcmp &=
|
isMemcmp &=
|
||||||
(!FuncName.compare("memcmp") || !FuncName.compare("bcmp") ||
|
(!FuncName.compare("memcmp") || !FuncName.compare("bcmp") ||
|
||||||
!FuncName.compare("CRYPTO_memcmp") ||
|
!FuncName.compare("CRYPTO_memcmp") ||
|
||||||
@ -237,8 +238,8 @@ bool CompareTransform::transformCmps(Module &M, const bool processStrcmp,
|
|||||||
!FuncName.compare("memcmp_const_time") ||
|
!FuncName.compare("memcmp_const_time") ||
|
||||||
!FuncName.compare("memcmpct"));
|
!FuncName.compare("memcmpct"));
|
||||||
isStrncmp &= (!FuncName.compare("strncmp") ||
|
isStrncmp &= (!FuncName.compare("strncmp") ||
|
||||||
!FuncName.compare("xmlStrncmp") ||
|
!FuncName.compare("curl_strnequal") ||
|
||||||
!FuncName.compare("curl_strnequal"));
|
!FuncName.compare("xmlStrncmp"));
|
||||||
isStrcasecmp &= (!FuncName.compare("strcasecmp") ||
|
isStrcasecmp &= (!FuncName.compare("strcasecmp") ||
|
||||||
!FuncName.compare("stricmp") ||
|
!FuncName.compare("stricmp") ||
|
||||||
!FuncName.compare("ap_cstr_casecmp") ||
|
!FuncName.compare("ap_cstr_casecmp") ||
|
||||||
@ -457,6 +458,7 @@ bool CompareTransform::transformCmps(Module &M, const bool processStrcmp,
|
|||||||
bool isSizedcmp = false;
|
bool isSizedcmp = false;
|
||||||
bool isCaseInsensitive = false;
|
bool isCaseInsensitive = false;
|
||||||
bool needs_null = false;
|
bool needs_null = false;
|
||||||
|
bool success_is_one = false;
|
||||||
Function *Callee = callInst->getCalledFunction();
|
Function *Callee = callInst->getCalledFunction();
|
||||||
|
|
||||||
if (Callee) {
|
if (Callee) {
|
||||||
@ -503,6 +505,12 @@ bool CompareTransform::transformCmps(Module &M, const bool processStrcmp,
|
|||||||
!Callee->getName().compare("g_strncasecmp"))
|
!Callee->getName().compare("g_strncasecmp"))
|
||||||
isCaseInsensitive = true;
|
isCaseInsensitive = true;
|
||||||
|
|
||||||
|
if (!Callee->getName().compare("xmlStrEqual") ||
|
||||||
|
!Callee->getName().compare("curl_strequal") ||
|
||||||
|
!Callee->getName().compare("strcsequal") ||
|
||||||
|
!Callee->getName().compare("curl_strnequal"))
|
||||||
|
success_is_one = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isSizedcmp) needs_null = true;
|
if (!isSizedcmp) needs_null = true;
|
||||||
@ -667,6 +675,14 @@ bool CompareTransform::transformCmps(Module &M, const bool processStrcmp,
|
|||||||
else
|
else
|
||||||
isub = cur_cmp_IRB.CreateSub(load, ConstantInt::get(Int8Ty, c));
|
isub = cur_cmp_IRB.CreateSub(load, ConstantInt::get(Int8Ty, c));
|
||||||
|
|
||||||
|
if (success_is_one && i == unrollLen - 1) {
|
||||||
|
|
||||||
|
Value *isubsub = cur_cmp_IRB.CreateTrunc(isub, Int1Ty);
|
||||||
|
isub = cur_cmp_IRB.CreateSelect(isubsub, ConstantInt::get(Int8Ty, 0),
|
||||||
|
ConstantInt::get(Int8Ty, 1));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
Value *sext = cur_cmp_IRB.CreateSExt(isub, Int32Ty);
|
Value *sext = cur_cmp_IRB.CreateSExt(isub, Int32Ty);
|
||||||
PN->addIncoming(sext, cur_cmp_bb);
|
PN->addIncoming(sext, cur_cmp_bb);
|
||||||
|
|
||||||
|
@ -463,8 +463,12 @@ bool SplitComparesTransform::simplifyOrEqualsCompare(CmpInst *IcmpInst,
|
|||||||
#else
|
#else
|
||||||
ReplaceInstWithInst(IcmpInst->getParent()->getInstList(), ii, PN);
|
ReplaceInstWithInst(IcmpInst->getParent()->getInstList(), ii, PN);
|
||||||
#endif
|
#endif
|
||||||
|
if (new_pred == CmpInst::ICMP_SGT || new_pred == CmpInst::ICMP_SLT) {
|
||||||
|
|
||||||
|
simplifySignedCompare(icmp_np, M, worklist);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
worklist.push_back(icmp_np);
|
|
||||||
worklist.push_back(icmp_eq);
|
worklist.push_back(icmp_eq);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -740,17 +744,24 @@ bool SplitComparesTransform::splitCompare(CmpInst *cmp_inst, Module &M,
|
|||||||
CmpInst *icmp_inv_cmp = nullptr;
|
CmpInst *icmp_inv_cmp = nullptr;
|
||||||
BasicBlock *inv_cmp_bb =
|
BasicBlock *inv_cmp_bb =
|
||||||
BasicBlock::Create(C, "inv_cmp", end_bb->getParent(), end_bb);
|
BasicBlock::Create(C, "inv_cmp", end_bb->getParent(), end_bb);
|
||||||
if (pred == CmpInst::ICMP_UGT || pred == CmpInst::ICMP_SGT ||
|
if (pred == CmpInst::ICMP_UGT) {
|
||||||
pred == CmpInst::ICMP_UGE || pred == CmpInst::ICMP_SGE) {
|
|
||||||
|
|
||||||
icmp_inv_cmp = CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_ULT,
|
icmp_inv_cmp = CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_ULT,
|
||||||
op0_high, op1_high);
|
op0_high, op1_high);
|
||||||
|
|
||||||
} else {
|
} else if (pred == CmpInst::ICMP_ULT) {
|
||||||
|
|
||||||
icmp_inv_cmp = CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_UGT,
|
icmp_inv_cmp = CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_UGT,
|
||||||
op0_high, op1_high);
|
op0_high, op1_high);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// Never gonna appen
|
||||||
|
if (!be_quiet)
|
||||||
|
fprintf(stderr,
|
||||||
|
"Error: split-compare: Equals or signed not removed: %d\n",
|
||||||
|
pred);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LLVM_MAJOR >= 16
|
#if LLVM_MAJOR >= 16
|
||||||
@ -1729,7 +1740,7 @@ bool SplitComparesTransform::runOnModule(Module &M) {
|
|||||||
if (!be_quiet && !debug) {
|
if (!be_quiet && !debug) {
|
||||||
|
|
||||||
errs() << "Split-floatingpoint-compare-pass: " << count
|
errs() << "Split-floatingpoint-compare-pass: " << count
|
||||||
<< " FP comparisons splitted\n";
|
<< " FP comparisons split\n";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ class SplitSwitchesTransform : public ModulePass {
|
|||||||
#if LLVM_VERSION_MAJOR >= 11 /* use new pass manager */
|
#if LLVM_VERSION_MAJOR >= 11 /* use new pass manager */
|
||||||
PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM);
|
PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM);
|
||||||
#else
|
#else
|
||||||
bool runOnModule(Module &M) override;
|
bool runOnModule(Module &M) override;
|
||||||
|
|
||||||
#if LLVM_VERSION_MAJOR >= 4
|
#if LLVM_VERSION_MAJOR >= 4
|
||||||
StringRef getPassName() const override {
|
StringRef getPassName() const override {
|
||||||
|
@ -1 +1 @@
|
|||||||
c8a72dc
|
512058a
|
||||||
|
@ -1 +1 @@
|
|||||||
202bace
|
bcf3e24
|
||||||
|
@ -1 +1 @@
|
|||||||
60c216bc9e
|
02a6f2aed3
|
||||||
|
@ -150,12 +150,12 @@ afl-cmin -i in_dir -o out_dir -X -- ./PACKAGE-DIRECTORY
|
|||||||
|
|
||||||
On each program startup of one the AFL++ tools in Nyx mode, a Nyx VM is spawned, and a bootstrapping procedure is performed inside the VM to prepare the target environment. As a consequence, due to the bootstrapping procedure, the launch performance is much slower compared to other modes. However, this can be optimized by reusing an existing fuzzing snapshot to avoid the slow re-execution of the bootstrap procedure.
|
On each program startup of one the AFL++ tools in Nyx mode, a Nyx VM is spawned, and a bootstrapping procedure is performed inside the VM to prepare the target environment. As a consequence, due to the bootstrapping procedure, the launch performance is much slower compared to other modes. However, this can be optimized by reusing an existing fuzzing snapshot to avoid the slow re-execution of the bootstrap procedure.
|
||||||
|
|
||||||
A fuzzing snapshot is automatically created and stored in the output directory at `out_dir/workdir/snapshot/` by the first parent process of `afl-fuzz` if parallel mode is used. To enable this feature, set the path to an existing snapshot directory in the `NYX_REUSE_SNAPSHOT` environment variable and use the tools as usual:
|
A fuzzing snapshot is automatically created and stored in the output directory at `out_dir/workdir/snapshot/` by the first parent process of `afl-fuzz` if parallel mode is used. To enable this feature, set the path to an existing snapshot directory in the `AFL_NYX_REUSE_SNAPSHOT` environment variable and use the tools as usual:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
afl-fuzz -i ./in_dir -o ./out_dir -Y -M 0 ./PACKAGE-DIRECTORY
|
afl-fuzz -i ./in_dir -o ./out_dir -Y -M 0 ./PACKAGE-DIRECTORY
|
||||||
|
|
||||||
NYX_REUSE_SNAPSHOT=./out_dir/workdir/snapshot/ afl-analyze -i in_file -X -- ./PACKAGE-DIRECTORY
|
AFL_NYX_REUSE_SNAPSHOT=./out_dir/workdir/snapshot/ afl-analyze -i in_file -X -- ./PACKAGE-DIRECTORY
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@ -311,7 +311,28 @@ command:
|
|||||||
```
|
```
|
||||||
|
|
||||||
If you want to disable fast snapshots (except for crashes), you can simply set
|
If you want to disable fast snapshots (except for crashes), you can simply set
|
||||||
the `NYX_DISABLE_SNAPSHOT_MODE` environment variable.
|
the `AFL_NYX_DISABLE_SNAPSHOT_MODE` environment variable.
|
||||||
|
|
||||||
|
### Nyx crash reports
|
||||||
|
|
||||||
|
If the Nyx agent detects a crash in the target application, it can pass
|
||||||
|
additional information on that crash to AFL++ (assuming that the agent
|
||||||
|
implements this feature). For each saved crashing input AFL++ will also create
|
||||||
|
an additional file in the `crashes` directory with a `.log` file extension.
|
||||||
|
Crash reports generated by the default agent shipped with the Nyx packer will
|
||||||
|
contain information such as the faulting address and signal number.
|
||||||
|
Additionally, if the target is compiled with AddressSanitizer, the crash report
|
||||||
|
will also contain the entire ASan report.
|
||||||
|
|
||||||
|
From a technical perspective, the crash report is passed from QEMU-Nyx to AFL++
|
||||||
|
via a shared memory region called Nyx Auxiliary Buffer which is by default 4096
|
||||||
|
bytes in size. In this shared memory region a specific amount is reserved for
|
||||||
|
the header (1408 bytes) and the remaining bytes can be used to transfer crash
|
||||||
|
reports (also the `hprintf` feature utilizes the very same shared memory for
|
||||||
|
transferring data). By default a crash report will be truncated to 2688 bytes.
|
||||||
|
However, if you want to increase the size of the shared memory region, you can
|
||||||
|
set the `AFL_NYX_AUX_SIZE` environment variable to a higher value (keep in
|
||||||
|
mind that this value must be a multiple of 4096).
|
||||||
|
|
||||||
### Run AFL++Nyx with a custom agent
|
### Run AFL++Nyx with a custom agent
|
||||||
|
|
||||||
|
@ -771,8 +771,8 @@ MAX_RELEASE_CHECK_RATE default: 4095 unless not HAVE_MMAP
|
|||||||
#include "/usr/include/malloc.h"
|
#include "/usr/include/malloc.h"
|
||||||
#else /* HAVE_USR_INCLUDE_MALLOC_H */
|
#else /* HAVE_USR_INCLUDE_MALLOC_H */
|
||||||
#ifndef STRUCT_MALLINFO_DECLARED
|
#ifndef STRUCT_MALLINFO_DECLARED
|
||||||
/* HP-UX (and others?) redefines mallinfo unless _STRUCT_MALLINFO is
|
/* HP-UX (and others?) redefines mallinfo unless _STRUCT_MALLINFO is
|
||||||
* defined */
|
* defined */
|
||||||
#define _STRUCT_MALLINFO
|
#define _STRUCT_MALLINFO
|
||||||
#define STRUCT_MALLINFO_DECLARED 1
|
#define STRUCT_MALLINFO_DECLARED 1
|
||||||
struct mallinfo {
|
struct mallinfo {
|
||||||
@ -1660,10 +1660,10 @@ extern size_t getpagesize();
|
|||||||
#define is_aligned(A) (((size_t)((A)) & (CHUNK_ALIGN_MASK)) == 0)
|
#define is_aligned(A) (((size_t)((A)) & (CHUNK_ALIGN_MASK)) == 0)
|
||||||
|
|
||||||
/* the number of bytes to offset an address to align it */
|
/* the number of bytes to offset an address to align it */
|
||||||
#define align_offset(A) \
|
#define align_offset(A) \
|
||||||
((((size_t)(A)&CHUNK_ALIGN_MASK) == 0) \
|
((((size_t)(A) & CHUNK_ALIGN_MASK) == 0) \
|
||||||
? 0 \
|
? 0 \
|
||||||
: ((MALLOC_ALIGNMENT - ((size_t)(A)&CHUNK_ALIGN_MASK)) & \
|
: ((MALLOC_ALIGNMENT - ((size_t)(A) & CHUNK_ALIGN_MASK)) & \
|
||||||
CHUNK_ALIGN_MASK))
|
CHUNK_ALIGN_MASK))
|
||||||
|
|
||||||
/* -------------------------- MMAP preliminaries ------------------------- */
|
/* -------------------------- MMAP preliminaries ------------------------- */
|
||||||
@ -1715,10 +1715,10 @@ static FORCEINLINE int unixmunmap(void *ptr, size_t size) {
|
|||||||
#define MUNMAP_DEFAULT(a, s) unixmunmap((a), (s))
|
#define MUNMAP_DEFAULT(a, s) unixmunmap((a), (s))
|
||||||
|
|
||||||
#else /* MAP_ANONYMOUS */
|
#else /* MAP_ANONYMOUS */
|
||||||
/*
|
/*
|
||||||
Nearly all versions of mmap support MAP_ANONYMOUS, so the following
|
Nearly all versions of mmap support MAP_ANONYMOUS, so the following
|
||||||
is unlikely to be needed, but is supplied just in case.
|
is unlikely to be needed, but is supplied just in case.
|
||||||
*/
|
*/
|
||||||
#define MMAP_FLAGS (MAP_PRIVATE)
|
#define MMAP_FLAGS (MAP_PRIVATE)
|
||||||
static int dev_zero_fd = -1; /* Cached file descriptor for /dev/zero. */
|
static int dev_zero_fd = -1; /* Cached file descriptor for /dev/zero. */
|
||||||
#define MMAP_DEFAULT(s) \
|
#define MMAP_DEFAULT(s) \
|
||||||
@ -1762,7 +1762,7 @@ static FORCEINLINE void *win32direct_mmap(size_t size) {
|
|||||||
static FORCEINLINE int win32munmap(void *ptr, size_t size) {
|
static FORCEINLINE int win32munmap(void *ptr, size_t size) {
|
||||||
|
|
||||||
MEMORY_BASIC_INFORMATION minfo;
|
MEMORY_BASIC_INFORMATION minfo;
|
||||||
char *cptr = (char *)ptr;
|
char *cptr = (char *)ptr;
|
||||||
|
|
||||||
while (size) {
|
while (size) {
|
||||||
|
|
||||||
@ -1965,7 +1965,7 @@ static FORCEINLINE void x86_clear_lock(int *sl) {
|
|||||||
|
|
||||||
#endif /* ... gcc spins locks ... */
|
#endif /* ... gcc spins locks ... */
|
||||||
|
|
||||||
/* How to yield for a spin lock */
|
/* How to yield for a spin lock */
|
||||||
#define SPINS_PER_YIELD 63
|
#define SPINS_PER_YIELD 63
|
||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_VER)
|
||||||
#define SLEEP_EX_DURATION 50 /* delay for yield/sleep */
|
#define SLEEP_EX_DURATION 50 /* delay for yield/sleep */
|
||||||
@ -2008,11 +2008,11 @@ static MLOCK_T malloc_global_mutex = 0;
|
|||||||
#define CURRENT_THREAD GetCurrentThreadId()
|
#define CURRENT_THREAD GetCurrentThreadId()
|
||||||
#define EQ_OWNER(X, Y) ((X) == (Y))
|
#define EQ_OWNER(X, Y) ((X) == (Y))
|
||||||
#else
|
#else
|
||||||
/*
|
/*
|
||||||
Note: the following assume that pthread_t is a type that can be
|
Note: the following assume that pthread_t is a type that can be
|
||||||
initialized to (casted) zero. If this is not the case, you will need
|
initialized to (casted) zero. If this is not the case, you will need
|
||||||
to somehow redefine these or not use spin locks.
|
to somehow redefine these or not use spin locks.
|
||||||
*/
|
*/
|
||||||
#define THREAD_ID_T pthread_t
|
#define THREAD_ID_T pthread_t
|
||||||
#define CURRENT_THREAD pthread_self()
|
#define CURRENT_THREAD pthread_self()
|
||||||
#define EQ_OWNER(X, Y) pthread_equal(X, Y)
|
#define EQ_OWNER(X, Y) pthread_equal(X, Y)
|
||||||
@ -2169,7 +2169,7 @@ static int pthread_init_lock(MLOCK_T *lk) {
|
|||||||
|
|
||||||
#endif /* ... lock types ... */
|
#endif /* ... lock types ... */
|
||||||
|
|
||||||
/* Common code for all lock types */
|
/* Common code for all lock types */
|
||||||
#define USE_LOCK_BIT (2U)
|
#define USE_LOCK_BIT (2U)
|
||||||
|
|
||||||
#ifndef ACQUIRE_MALLOC_GLOBAL_LOCK
|
#ifndef ACQUIRE_MALLOC_GLOBAL_LOCK
|
||||||
@ -3077,7 +3077,7 @@ static size_t traverse_and_check(mstate m);
|
|||||||
/* The size of the smallest chunk held in bin with index i */
|
/* The size of the smallest chunk held in bin with index i */
|
||||||
#define minsize_for_tree_index(i) \
|
#define minsize_for_tree_index(i) \
|
||||||
((SIZE_T_ONE << (((i) >> 1) + TREEBIN_SHIFT)) | \
|
((SIZE_T_ONE << (((i) >> 1) + TREEBIN_SHIFT)) | \
|
||||||
(((size_t)((i)&SIZE_T_ONE)) << (((i) >> 1) + TREEBIN_SHIFT - 1)))
|
(((size_t)((i) & SIZE_T_ONE)) << (((i) >> 1) + TREEBIN_SHIFT - 1)))
|
||||||
|
|
||||||
/* ------------------------ Operations on bin maps ----------------------- */
|
/* ------------------------ Operations on bin maps ----------------------- */
|
||||||
|
|
||||||
@ -3245,7 +3245,7 @@ static size_t traverse_and_check(mstate m);
|
|||||||
|
|
||||||
#else /* FOOTERS */
|
#else /* FOOTERS */
|
||||||
|
|
||||||
/* Set foot of inuse chunk to be xor of mstate and seed */
|
/* Set foot of inuse chunk to be xor of mstate and seed */
|
||||||
#define mark_inuse_foot(M, p, s) \
|
#define mark_inuse_foot(M, p, s) \
|
||||||
(((mchunkptr)((char *)(p) + (s)))->prev_foot = \
|
(((mchunkptr)((char *)(p) + (s)))->prev_foot = \
|
||||||
((size_t)(M) ^ mparams.magic))
|
((size_t)(M) ^ mparams.magic))
|
||||||
|
@ -80,8 +80,8 @@ static unsigned char __tmp_alloc_zone[TMP_ZONE_SIZE];
|
|||||||
#else
|
#else
|
||||||
|
|
||||||
// From dlmalloc.c
|
// From dlmalloc.c
|
||||||
void *dlmalloc(size_t);
|
void *dlmalloc(size_t);
|
||||||
void dlfree(void *);
|
void dlfree(void *);
|
||||||
#define backend_malloc dlmalloc
|
#define backend_malloc dlmalloc
|
||||||
#define backend_free dlfree
|
#define backend_free dlfree
|
||||||
|
|
||||||
|
Submodule qemu_mode/qemuafl updated: a1321713c7...b0abbe2e74
53
qemu_mode/util/qemu_get_symbol_addr.sh
Executable file
53
qemu_mode/util/qemu_get_symbol_addr.sh
Executable file
@ -0,0 +1,53 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Copyright 2023 AFLplusplus
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
target="$1"
|
||||||
|
symbol="$2"
|
||||||
|
base="$3"
|
||||||
|
|
||||||
|
test -z "$target" -o -z "$symbol" -o '!' -x "$target" && {
|
||||||
|
echo "Syntax: $0 executable function [baseaddress]"
|
||||||
|
echo
|
||||||
|
echo Help script to calculate the function address of a binary QEMU will load it to.
|
||||||
|
echo function is e.g. LLVMFuzzerTestOneInput, afl_qemu_driver_stdin, etc.
|
||||||
|
echo "baseaddress is tried to be auto-detected, you can use 'AFL_QEMU_DEBUG_MAPS=1 afl-qemu-trace ./executable' to see the maps."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
file=$(file $target|sed 's/.*: //')
|
||||||
|
|
||||||
|
arch=$(echo $file|awk -F, '{print$2}'|tr -d ' ')
|
||||||
|
bits=$(echo $file|sed 's/-bit .*//'|sed 's/.* //')
|
||||||
|
pie=$(echo $file|grep -wqi pie && echo pie)
|
||||||
|
|
||||||
|
test $(uname -s) = "Darwin" && symbol=_"$symbol"
|
||||||
|
tmp_addr=$(nm "$target" | grep -i "T $symbol" | awk '{print$1}' | tr a-f A-F)
|
||||||
|
|
||||||
|
test -z "$tmp_addr" && { echo Error: function $symbol not found 1>&2; exit 1; }
|
||||||
|
test -z "$pie" && { echo 0x$tmp_addr; exit 0; }
|
||||||
|
|
||||||
|
test -z "$base" && {
|
||||||
|
test "$bits" = 32 -o "$bits" = 64 || { echo "Error: could not identify arch (bits=$bits)" 1>&2 ; exit 1; }
|
||||||
|
test "$arch" = Intel80386 && base=0x40000000
|
||||||
|
test "$arch" = x86-64 && base=0x4000000000
|
||||||
|
test "$arch" = ARMaarch64 && base=0x5500000000
|
||||||
|
# add more here, e.g. "$arch" = ARM
|
||||||
|
}
|
||||||
|
|
||||||
|
test -z "$base" && { echo "Error: could not identify base address! bits=$bits arch=$arch" 1>&2 ; exit 1; }
|
||||||
|
|
||||||
|
hex_base=$(echo "$base" | awk '{sub("^0x","");print $0}' | tr a-f A-F )
|
||||||
|
echo $tmp_addr | echo "ibase=16;obase=10;$hex_base + $tmp_addr" | bc | tr A-F a-f | awk '{print "0x"$0}'
|
||||||
|
exit 0
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user