如何对 stdarg.h 函数进行模糊测试?

How do I fuzz a stdarg.h function?

我写了一个类似printf运行的函数,想fuzz一下查bug。 afl-fuzz 给了我一个输入文件,但我正在努力想办法把它变成可变参数输入。

有什么方法可以动态构建 va_list 或者动态构建参数列表吗?

libffi 可用于 assemble 可变参数函数的参数并调用它们。

具体需要使用ffi_prep_cif_var函数:https://github.com/libffi/libffi/blob/master/doc/libffi.texi#L152-L153

dyncall 似乎已经被写成做你想做的事,虽然我没有亲自使用它。

另一种方法是生成源代码,使用大量输入调用相关函数。它不太优雅,但编程应该很简单。