|  | # MOpt(imized) AFL by <puppet@zju.edu.cn> | 
|  |  | 
|  | ### 1. Description | 
|  | MOpt-AFL is a AFL-based fuzzer that utilizes a customized Particle Swarm | 
|  | Optimization (PSO) algorithm to find the optimal selection probability | 
|  | distribution of operators with respect to fuzzing effectiveness. | 
|  | More details can be found in the technical report. | 
|  |  | 
|  | ### 2. Cite Information | 
|  | Chenyang Lyu, Shouling Ji, Chao Zhang, Yuwei Li, Wei-Han Lee, Yu Song and | 
|  | Raheem Beyah, MOPT: Optimized Mutation Scheduling for Fuzzers, | 
|  | USENIX Security 2019. | 
|  |  | 
|  | ### 3. Seed Sets | 
|  | We open source all the seed sets used in the paper | 
|  | "MOPT: Optimized Mutation Scheduling for Fuzzers". | 
|  |  | 
|  | ### 4. Experiment Results | 
|  | The experiment results can be found in | 
|  | https://drive.google.com/drive/folders/184GOzkZGls1H2NuLuUfSp9gfqp1E2-lL?usp=sharing. | 
|  | We only open source the crash files since the space is limited. | 
|  |  | 
|  | ### 5. Technical Report | 
|  | MOpt_TechReport.pdf is the technical report of the paper | 
|  | "MOPT: Optimized Mutation Scheduling for Fuzzers", which contains more deatails. | 
|  |  | 
|  | ### 6. Parameter Introduction | 
|  | Most important, you must add the parameter `-L` (e.g., `-L 0`) to launch the | 
|  | MOpt scheme. | 
|  |  | 
|  | Option '-L' controls the time to move on to the pacemaker fuzzing mode. | 
|  | '-L t': when MOpt-AFL finishes the mutation of one input, if it has not | 
|  | discovered any new unique crash or path for more than t minutes, MOpt-AFL will | 
|  | enter the pacemaker fuzzing mode. | 
|  |  | 
|  | Setting 0 will enter the pacemaker fuzzing mode at first, which is | 
|  | recommended in a short time-scale evaluation. | 
|  |  | 
|  | Other important parameters can be found in afl-fuzz.c, for instance, | 
|  |  | 
|  | 'swarm_num': the number of the PSO swarms used in the fuzzing process. | 
|  | 'period_pilot': how many times MOpt-AFL will execute the target program | 
|  | in the pilot fuzzing module, then it will enter the core fuzzing module. | 
|  | 'period_core': how many times MOpt-AFL will execute the target program in the | 
|  | core fuzzing module, then it will enter the PSO updating module. | 
|  | 'limit_time_bound': control how many interesting test cases need to be found | 
|  | before MOpt-AFL quits the pacemaker fuzzing mode and reuses the deterministic stage. | 
|  | 0 < 'limit_time_bound' < 1, MOpt-AFL-tmp. | 
|  | 'limit_time_bound' >= 1, MOpt-AFL-ever. | 
|  |  | 
|  | Have fun with MOpt in AFL! |