本文主要是介绍AFL黑盒测试FFmpeg,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本来想参考这篇博客AFL++实战(一)-黑盒测试FFmpeg,但是卡在了他的make distrib里。
AFL安装
我最终还是跑起来了,流程是这样的。
直接去官网下载压缩包,我下载的是这个
解压后在目录中打开终端输入:
- make
- sudo make install
输入以上命令后基本就能安装成功了,在终端输入afl-后tab,就能出现以下这些命令了
afl使用了qemu模式进行测试,只要在之前的命令的基础上加上-Q的参数即可
但是要先进行安装,在afl的根目录打开终端执行以下命令
-
cd qemu_mode
-
./build_qemu_support.sh
我在build的时候出现了2次错误:
第一个
按照这个博客【AFL-qemu安装问题】出现util/memfd.c:40:12: error: static declaration of ‘memfd_create’ follows non-static d,在qemu文件夹的patches里添加补丁。
第二个
也加了个补丁。AFL QEMU模式安装报错(afl-2.52b & qemu-2.10.0)
打完补丁,patches里是这样的
- cd ..
- make instal
ffmpeg的安装
按照那个博客做的应该就行,我当时是从gitee上找的镜像git clone下来的。
wget https://ffmpeg.org/releases/ffmpeg-4.0.2.tar.bz2
tar -jxvf ffmpeg-4.0.2.tar.bz2
cd ffmpeg-4.0.2/
./configure
make
make install
给测试的输入和输出新建fuzz_in和fuzz_out文件夹,在fuzz_in文件夹里把测试数据放进去,可以用这个命令
cd fuzz_in
# 通过wget指令可以下载测试语料库,这里只给出一个测试集
wget http://samples.ffmpeg.org/tests/DivX-test/Xmen-OpenDivX-200-slow.avi
正在测试的fuzz_in长这个样子
整个ffmpeg文件夹是这样子的:
最后跑到ffmpeg文件目录下运行:
afl-fuzz -Q -m none -i fuzz_in -o fuzz_out ./ffmpeg -i @@
有可能出现这种错误:
[-] PROGRAM ABORT : Pipe at the beginning of 'core_pattern'
Location : check_crash_handling(), afl-fuzz.c:7275
- sudo su
- echo core >/proc/sys/kernel/core_pattern
参考链接:
https://blog.csdn.net/qq_36711003/article/details/107016408
https://blog.csdn.net/wxh0000mm/article/details/108827326
https://blog.csdn.net/geniusle201/article/details/111028697
https://blog.csdn.net/liyihao17/article/details/109981662
这篇关于AFL黑盒测试FFmpeg的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!