如何使 afl-fuzz 在达到超时时不跳过测试用例
How to make afl-fuzz not skip test cases when a timeout is reached
我目前正在尝试使用 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 考虑达到超时并终止程序是测试用例的 "normal" 行为。
事实上,通常的做法似乎只是通过在解析后添加 exit(0)
来检测您正在查看的软件的代码。
看起来很基础,但我工作...
另一种方法可能是更改 AFL 软件中超时的含义。但是,当您的软件可能进入永无止境的循环时,它不会检测到 'hangs'。
所以,最好的方法似乎是在解析完成后立即在目标软件中添加一个 exit(0)
(或者 return 0
,如果你在 main()
)。
我目前正在尝试使用 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 考虑达到超时并终止程序是测试用例的 "normal" 行为。
事实上,通常的做法似乎只是通过在解析后添加 exit(0)
来检测您正在查看的软件的代码。
看起来很基础,但我工作...
另一种方法可能是更改 AFL 软件中超时的含义。但是,当您的软件可能进入永无止境的循环时,它不会检测到 'hangs'。
所以,最好的方法似乎是在解析完成后立即在目标软件中添加一个 exit(0)
(或者 return 0
,如果你在 main()
)。