如何使afl-fuzz在达到超时时不跳过测试用例



我目前正在尝试用AFL模糊器(American Fuzzy Lop(模糊PDF查看器。

我的问题很简单,afl-fuzz希望应用程序接受输入并在处理后关闭。但是,PDF查看器的目的是打开文档并保持打开直到关闭。结果是afl-fuzz达到所有初始输入的超时,并决定在此停止。

...
[*] Validating target binary...
[*] Attempting dry run with 'id:000000,orig:myPDFsample00.pdf'...
[*] Spinning up the fork server...
[+] All right - fork server is up.
[!] WARNING: Test case results in a timeout (skipping)
[*] Attempting dry run with 'id:000001,orig:myPDFsample01.pdf'...
[!] WARNING: Test case results in a timeout (skipping)
[*] Attempting dry run with 'id:000002,orig:myPDFsample02.pdf'...
[-] PROGRAM ABORT : All test cases time out, giving up!
Location : perform_dry_run(), afl-fuzz.c:2883

我想知道如何告诉AFL考虑达到超时并终止程序是测试用例的"正常"行为。

事实上,通常的方法似乎只是通过在解析后添加exit(0)来插入您正在查看的软件的代码。

这看起来很基本,但我工作。。。

另一种方法可以是更改AFL软件中超时的含义。但是,当你的软件可能进入一个永无止境的循环时,它不会检测到"挂起"。

因此,最好的方法似乎是在解析完成后在目标软件中添加exit(0)(如果您在main()中,则为return 0(。

最新更新