Abstract:We propose a fuzzing method based on function importance, because the existing fuzzing methods lack fine-grained knowledge of the program’s internal information, use isolated factors for seed filtering, and result in the unfairness of time consumption and gain. First, the Attributed Interprocedural Control Flow Graph (AICFG) is used to comprehensively characterize function information and functional relationships. Then, the seed is scored and evaluated in light of the characterization and then a more effective seed filtering strategy is proposed. At the same time, the attribute range of the interprocedural control flow graph is adjusted according to the number of function hits, and the graph propagation algorithm is employed to propagate attribute changes. The experimental results show that the two optimization strategies have improved the number of paths by 11.6% and 13.7% respectively compared with the baseline fuzzing tool, Azmerican Fuzzy Lop (AFL), during the testing of flvmeta. The tool FunAFL implemented also achieves higher coverage during the testing of common software such as jhead, flvmate, and libtiffin than mainstream fuzzing tools, MOPT, and FairFuzz. FunAFL finds 7 bugs and gets 1 CVE number during the test of binutils, ffjpeg, xpdf, jhead, libtiff, and libelfin.