Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(95)

Side by Side Diff: third_party/afl/src/docs/sister_projects.txt

Issue 2075883002: Add American Fuzzy Lop (afl) to third_party/afl/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix nits Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/afl/src/docs/perf_tips.txt ('k') | third_party/afl/src/docs/status_screen.txt » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 ===============
2 Sister projects
3 ===============
4
5 This doc lists some of the projects that are inspired by, derived from,
6 designed for, or meant to integrate with AFL. See README for the general
7 instruction manual.
8
9 ----------------------------
10 Support for other languages:
11 ----------------------------
12
13 Python AFL (Jakub Wilk)
14 -----------------------
15
16 Allows fuzz-testing of Python programs. Uses custom instrumentation and its
17 own forkserver.
18
19 http://jwilk.net/software/python-afl
20
21 Go-fuzz (Dmitry Vyukov)
22 -----------------------
23
24 AFL-inspired guided fuzzing approach for Go targets:
25
26 https://github.com/dvyukov/go-fuzz
27
28 afl.rs (Keegan McAllister)
29 --------------------------
30
31 Allows Rust features to be easily fuzzed with AFL (using the LLVM mode).
32
33 https://github.com/kmcallister/afl.rs
34
35 OCaml support (KC Sivaramakrishnan)
36 -----------------------------------
37
38 Adds AFL-compatible instrumentation to OCaml programs.
39
40 https://github.com/ocamllabs/opam-repo-dev/pull/23
41 http://canopy.mirage.io/Posts/Fuzzing
42
43 AFL for GCJ Java and other GCC frontends (-)
44 --------------------------------------------
45
46 GCC Java programs are actually supported out of the box - simply rename
47 afl-gcc to afl-gcj. Unfortunately, by default, unhandled exceptions in GCJ do
48 not result in abort() being called, so you will need to manually add a
49 top-level exception handler that exits with SIGABRT or something equivalent.
50
51 Other GCC-supported languages should be fairly easy to get working, but may
52 face similar problems. See https://gcc.gnu.org/frontends.html for a list of
53 options.
54
55 AFL-style in-process fuzzer for LLVM (Kostya Serebryany)
56 --------------------------------------------------------
57
58 Provides an evolutionary instrumentation-guided fuzzing harness that allows
59 some programs to be fuzzed without the fork / execve overhead. (Similar
60 functionality is now available as the "persistent" feature described in
61 ../llvm_mode/README.llvm.)
62
63 http://llvm.org/docs/LibFuzzer.html
64
65 AFL fixup shim (Ben Nagy)
66 -------------------------
67
68 Allows AFL_POST_LIBRARY postprocessors to be written in arbitrary languages
69 that don't have C / .so bindings. Includes examples in Go.
70
71 https://github.com/bnagy/aflfix
72
73 ----------------
74 Network fuzzing:
75 ----------------
76
77 Preeny (Yan Shoshitaishvili)
78 ----------------------------
79
80 Provides a fairly simple way to convince dynamically linked network-centric
81 programs to read from a file or not fork. Not AFL-specific, but described as
82 useful by many users. Some assembly required.
83
84 https://github.com/zardus/preeny
85
86 -------------------------------------------
87 Distributed fuzzing and related automation:
88 -------------------------------------------
89
90 roving (Richo Healey)
91 ---------------------
92
93 A client-server architecture for effortlessly orchestrating AFL runs across
94 a fleet of machines. You don't want to use this on systems that face the
95 Internet or live in other untrusted environments.
96
97 https://github.com/richo/roving
98
99 Distfuzz-AFL (Martijn Bogaard)
100 ------------------------------
101
102 Simplifies the management of afl-fuzz instances on remote machines. The
103 author notes that the current implementation isn't secure and should not
104 be exposed on the Internet.
105
106 https://github.com/MartijnB/disfuzz-afl
107
108 afl-launch (Ben Nagy)
109 ---------------------
110
111 Batch AFL launcher utility with a simple CLI.
112
113 https://github.com/bnagy/afl-launch
114
115 AFL Utils (rc0r)
116 ----------------
117
118 Simplifies the triage of discovered crashes, start parallel instances, etc.
119
120 https://github.com/rc0r/afl-utils
121
122 afl-fuzzing-scripts (Tobias Ospelt)
123 -----------------------------------
124
125 Simplifies starting up multiple parallel AFL jobs.
126
127 https://github.com/floyd-fuh/afl-fuzzing-scripts/
128
129 afl-sid (Jacek Wielemborek)
130 ---------------------------
131
132 Allows users to more conveniently build and deploy AFL via Docker.
133
134 https://github.com/d33tah/afl-sid
135
136 -----------------------------------------------------------
137 Crash triage, coverage analysis, and other companion tools:
138 -----------------------------------------------------------
139
140 afl-crash-analyzer (Tobias Ospelt)
141 ----------------------------------
142
143 Makes it easier to navigate and annotate crashing test cases.
144
145 https://github.com/floyd-fuh/afl-crash-analyzer/
146
147 Crashwalk (Ben Nagy)
148 --------------------
149
150 AFL-aware tool to annotate and sort through crashing test cases.
151
152 https://github.com/bnagy/crashwalk
153
154 afl-cov (Michael Rash)
155 ----------------------
156
157 Produces human-readable coverage data based on the output queue of afl-fuzz.
158
159 https://github.com/mrash/afl-cov
160
161 RecidiVM (Jakub Wilk)
162 ---------------------
163
164 Makes it easy to estimate memory usage limits when fuzzing with ASAN or MSAN.
165
166 http://jwilk.net/software/recidivm
167
168 aflize (Jacek Wielemborek)
169 --------------------------
170
171 Automatically build AFL-enabled versions of Debian packages.
172
173 https://github.com/d33tah/aflize
174
175 afl-ddmin-mod (Markus Teufelberger)
176 -----------------------------------
177
178 A variant of afl-tmin that uses a more sophisticated (but slower)
179 minimization algorithm.
180
181 https://github.com/MarkusTeufelberger/afl-ddmin-mod
182
183 -------------------------------
184 Narrow-purpose or experimental:
185 -------------------------------
186
187 Cygwin support (Ali Rizvi-Santiago)
188 -----------------------------------
189
190 Pretty self-explanatory. As per the author, this "mostly" ports AFL to
191 Windows. Field reports welcome!
192
193 https://github.com/arizvisa/afl-cygwin
194
195 Pause and resume scripts (Ben Nagy)
196 -----------------------------------
197
198 Simple automation to suspend and resume groups of fuzzing jobs.
199
200 https://gist.github.com/bnagy/8f0eb29eb125653f73fd
201
202 Static binary-only instrumentation (Aleksandar Nikolich)
203 --------------------------------------------------------
204
205 Allows black-box binaries to be instrumented statically (i.e., by modifying
206 the binary ahead of the time, rather than translating it on the run). Author
207 reports better performance compared to QEMU, but occasional translation
208 errors with stripped binaries.
209
210 https://github.com/vrtadmin/moflow/tree/master/afl-dyninst
211
212 AFL PIN (Parker Thompson)
213 -------------------------
214
215 Early-stage Intel PIN instrumentation support (from before we settled on
216 faster-running QEMU).
217
218 https://github.com/mothran/aflpin
219
220 AFL-style instrumentation in llvm (Kostya Serebryany)
221 -----------------------------------------------------
222
223 Allows AFL-equivalent instrumentation to be injected at compiler level.
224 This is currently not supported by AFL as-is, but may be useful in other
225 projects.
226
227 https://code.google.com/p/address-sanitizer/wiki/AsanCoverage#Coverage_counter s
228
229 AFL JS (Han Choongwoo)
230 ----------------------
231
232 One-off optimizations to speed up the fuzzing of JavaScriptCore (now likely
233 superseded by LLVM deferred forkserver init - see llvm_mode/README.llvm).
234
235 https://github.com/tunz/afl-fuzz-js
236
237 AFL harness for fwknop (Michael Rash)
238 -------------------------------------
239
240 An example of a fairly involved integration with AFL.
241
242 https://github.com/mrash/fwknop/tree/master/test/afl
243
244 Building harnesses for DNS servers (Jonathan Foote, Ron Bowes)
245 --------------------------------------------------------------
246
247 Two articles outlining the general principles and showing some example code.
248
249 https://www.fastly.com/blog/how-to-fuzz-server-american-fuzzy-lop
250 https://goo.gl/j9EgFf
251
252 Fuzzer shell for SQLite (Richard Hipp)
253 --------------------------------------
254
255 A simple SQL shell designed specifically for fuzzing the underlying library.
256
257 http://www.sqlite.org/src/artifact/9e7e273da2030371
258
259 Support for Python mutation modules (Christian Holler)
260 ------------------------------------------------------
261
262 https://github.com/choller/afl/blob/master/docs/mozilla/python_modules.txt
263
264 Support for selective instrumentation (Christian Holler)
265 --------------------------------------------------------
266
267 https://github.com/choller/afl/blob/master/docs/mozilla/partial_instrumentatio n.txt
268
269 Kernel fuzzing (Dmitry Vyukov)
270 ------------------------------
271
272 A similar guided approach as applied to fuzzing syscalls:
273
274 https://github.com/google/syzkaller/wiki/Found-Bugs
275 https://github.com/dvyukov/linux/commit/33787098ffaaa83b8a7ccf519913ac5fd61259 31
OLDNEW
« no previous file with comments | « third_party/afl/src/docs/perf_tips.txt ('k') | third_party/afl/src/docs/status_screen.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698