APICraft generates several fuzz drivers for each attack surface. For the five attack surfaces (font, image, rtf, pdf, audio in macOS) we evaluated, it generates fifty fuzz drivers. (fifty is the minimum value of the member size for APICraft's residents' population and the first Pareto Frontier of its residents)
We use one of the fifty candidates in our evaluation experiments. Our chosen strategy is selecting the fuzz driver which has biggest DIV objective score while its other two objectives' scores (EFF and COMP) are not significantly worse than others (if not better than). For all five attack surfaces, the selection is done manually but in seconds.
source code, the source code of the generated fuzz driver used in evaluation. It is an Objective C++ source code file.
data dependency topology graph, the tree-like data dependency graph of this generated fuzz driver. It can help people quickly get the main skeleton of generated fuzz driver.
source code, the source code of the generated fuzz driver used in evaluation. It is an Objective C++ source code file.
data dependency topology graph, the tree-like data dependency graph of this generated fuzz driver. It can help people quickly get the main skeleton of generated fuzz driver.
The fuzz drivers for the rest attack surfaces (rtf, pdf, audio in macOS) will be released once we think these attack surfaces have been sufficiently tested.