libfuzzer 和 AFL 的理解和不同用法

Understanding and different usage between libfuzzer and AFL

我是模糊区域的菜鸟,看过 AFL 实现。

AFL 似乎将 stdin 文件描述符替换为 input file 描述符。每当目标程序遇到标准输入时,目标程序都会从​​ input file 而不是 stdin.

获取输入

所以,我的问题就是从这里弹出来的。

假设我们创建了一个库,我们想进行单元测试以使用模糊器查找一些实现错误。在这种情况下,我们不接受任何 standard input,只接受使用我们库的开发人员的函数参数。因此,AFL 在这种情况下不起作用。

Libfuzzer 在这种情况下似乎是合适的解决方案,因为生成的输入可以输入到我们特定的有趣函数中。

这样理解对吗?还是 AFL 也可以作为 libfuzzer 用于单元测试?

谢谢

Afl 支持通过文件提供输入,而不仅仅是 stdin。要测试通过参数接收输入的库,您可以编写一个简单的可执行文件来打开输入文件、读取其内容、使用从该文件读取的参数值调用所需的库函数并关闭文件。