rohanpadhye / JQF

JQF + Zest: Coverage-guided semantic fuzzing for Java.
BSD 2-Clause "Simplified" License
658 stars 110 forks source link

JQF x AFL Pilot run failed Error #254

Closed llaumegui27 closed 2 months ago

llaumegui27 commented 2 months ago

Hello, I've just discovered this tool and wanted to try JQF with AFL functionality so I looked the Wiki with the Tutorial but It didn't work for me, after compiling my target (the code sample in the tutorial) I tried to start the test :

ubuntu@ubuntu:~/Documents/JQF/test-code/afl-test$ /full/path/to/jqf/bin/jqf-afl-fuzz -i /full/path/to/jafl/testcases/images/png/ PngTest testRead

The error :

Performing pilot run....  ERROR: Pilot run failed!!!
Exception in thread "main" java.lang.NoClassDefFoundError: edu/berkeley/cs/jqf/fuzz/afl/PngTest (wrong name: PngTest)
        at java.base/java.lang.ClassLoader.defineClass1(Native Method)
        at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1022)
        at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
        at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800)
        at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:398)
        at edu.berkeley.cs.jqf.fuzz.junit.GuidedFuzzing.run(GuidedFuzzing.java:157)
        at edu.berkeley.cs.jqf.fuzz.junit.GuidedFuzzing.run(GuidedFuzzing.java:123)
        at edu.berkeley.cs.jqf.fuzz.repro.ReproDriver.main(ReproDriver.java:64)

My jqf-afl-fuzz is installed :

ubuntu@ubuntu:~/Documents/JQF/test-code/afl-test$ ../../jqf/bin/jqf-afl-fuzz 
Usage: ../../jqf/bin/jqf-afl-fuzz [options] TEST_CLASS TEST_METHOD
Options: 
  -c JAVA_CLASSPATH  Classpath used to find your test classes (default is '.')
  -i AFL_INPUT_DIR   Seed inputs for AFL (default is a few seeds of random data)
  -o AFL_OUTPUT_DIR  Where AFL should save fuzz results (default is './fuzz-results')
  -x AFL_DICT        Provide a dictionary to AFL (default is no dictionary)
  -S WORKER_ID       A unique identifier when running in parallel mode
  -T AFL_TITLE       Customize title banner (default is TEST_CLASS#TEST_METHOD)
  -m MEM_LIMIT       Set a memory limit in MB (default is 8192)
  -t TIMEOUT         Set a single-run timeout in milliseconds (default is 10000)
  -v                 Enable verbose logging (in file 'jqf.log')
  -a                 Enable AFL-proxy logging (in file 'proxy.log')

In my current directory :

ubuntu@ubuntu:~/Documents/JQF/test-code/afl-test$ ls
PngTest.class  PngTest.java

If someone one have any idea, thx in advance :)

llaumegui27 commented 2 months ago

Sorry, I've just realized that I've added an unnecessary line to the example:

package edu.berkeley.cs.jqf.fuzz.afl;

Sorry again for that :/