Fuzz无源码程序

AFL依赖QEMU实现了这个功能,qemu是一个仿真器。

无源码测试FFmpeg,参考:https://blog.csdn.net/qq_36711003/article/details/107016408

FFmpeg是一个自由软件,可以运行音频和视频多种格式的录影、转换、流功能,包含了libavcodec ─这是一个用于多个项目中音频和视频的解码器库,以及libavformat——一个音频与视频格式转换库。

$ 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

执行./configure 会报错 yasm/nasm not found or too old on linux

分析:yasm是汇编编译器,ffmpeg为了提高效率使用了汇编指令,如MMX和SSE等。所以系统中未安装yasm时,就会报上面错误。

解决错误:安装yasm编译器。安装方法如下:

$ wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
$ tar -xvf yasm-1.3.0.tar.gz
$ cd yasm-1.3.0
$ make
$ make install

参考:https://www.jianshu.com/p/3df64cc8b896

再次进入 ffmpeg-4.0.2/ 文件夹

$ ./configure
$ make
$ make isntall

构建语料库

ffmpeg黑盒测试主要就是用的官网上的语料库,本次实验主要是用的test数据集下的一些avi测试集。构建语料库代码如下

$ mkdir in     # 当前文件夹下创建in文件下
$ cd in
# 通过wget指令可以下载测试语料库,这里只给出一个测试集
$ wget http://samples.ffmpeg.org/tests/DivX-test/Xmen-OpenDivX-200-slow.avi

对没有源代码的程序进行测试,这时就要用到AFL的QEMU模式了。启用QEMU模式,要先编译。进入afl-2.52b下的qemu_mode文件夹

$ cd qemu_mode
$ ./build_q./build_qemu_support.sh

执行./build_q./build_qemu_support.sh语句会报错’libtool’ not found, please install first,执行下列语句解决

$ apt-get install libtool
$ apt-get install libtool-bin

再次执行./build_q./build_qemu_support.sh,会报错 ‘***’ not found, please install first,执行下列语句解决

$ apt-get install python
$ apt-get install bison

再次执行./build_q./build_qemu_support.sh,会报错 devel version of ‘glib2’ not found, please install first,执行下列语句解决,解决后再次执行./build_q./build_qemu_support.sh即成功。

参考: https://www.dazhuanlan.com/halailai/topics/1539321

$ apt-get install libgtk2.0-dev

接下来进入ffmpeg-4.0.2 文件夹下,执行下列命令语句

afl-fuzz -Q -m none -i in -o out ./ffmpeg -i @@

报错 failed to locate ‘afl-qemu-trace’,原因:使用apt方式安装的afl没有afl-qemu-trace(不支持使用QEMU模式),所以我们需要下载afl的源码自己编译。

或者不用重新下载afl的源码,执行下列命令 好像 也可以开始fuzz

afl-fuzz -n -m none -i in -o out ./ffmpeg -i @@

American Fuzzy Lop(AFL) Fuzz无源码程序相关推荐

  1. [课业] | 软件安全 | 使用American Fuzzy Lop工具挖掘C/C++程序漏洞

    文章目录 概念介绍 1. 模糊测试的概念 1.1 模糊测试技术的核心思想 1.2 模糊测试的方法 2. 模糊测试的过程 2.1 确定测试目标 2.2 确定预期输入 2.3 生成模糊测试用例 2.4 执 ...

  2. American Fuzzy Lop(AFL)的安装与简单使用

    American Fuzzy Lop 1.AFL安装与试用 AFL不支持在Windows下使用,所以安装在Linux下,我的是Ubuntu系统. 安装LLVM 和 CLANG $ sudo apt-g ...

  3. American Fuzzy Lop(AFL)介绍

    American Fuzzy Lop是一个结合了极其简单但是有坚如磐石的工具指引的遗传算法的暴力fuzzer.它使用了一个边缘覆盖的修改的表单来轻易地pick up不易察觉的,局部尺度变化到程序控制流 ...

  4. AFL(American Fuzzy Lop)源码详细解读(1)

    AFL(American Fuzzy Lop)源码详细解读(1) 多亏大佬们的文章,对读源码帮助很大: https://eternalsakura13.com/2020/08/23/afl/ http ...

  5. AFL(American Fuzzy Lop)源码详细解读(8)

    这篇记录 llvm mode 中的 afl-llvm-pass.so.cc 文件和 afl-llvm-rt.o.c 文件,以及整体流程的简述. 对llvm这部分理解还比较浅. 可以阅读大佬的这篇文章: ...

  6. AFL(American Fuzzy Lop)源码详细解读(3)

    AFL(American Fuzzy Lop)源码详细解读(3) 本篇是关于主循环阶段的内容,整个AFL最核心的部分,篇幅较长.最后简述一下afl_fuzz整体流程. 多亏大佬们的文章,对读源码帮助很 ...

  7. AFL(American Fuzzy Lop)源码详细解读(2)

    AFL(American Fuzzy Lop)源码详细解读(2) 本篇是关于 dry run (空跑.演练) 阶段的内容,一直到主循环之前. 多亏大佬们的文章,对读源码帮助很大: https://et ...

  8. AFL(american fuzzy lop)学习一

    AFL(american fuzzy lop)学习一 @sizaf AFL 的模糊方法 基于改进的边缘覆盖 插桩法引导的遗传算法 流程: 插桩 从源码编译程序时进行插桩,以记录代码覆盖率(Code C ...

  9. AFL(American Fuzzy Lop)-afl-fuzz.c

    转载AFL(American Fuzzy Lop)源码详细解读(1) AFL(American Fuzzy Lop)源码详细解读(1) 多亏大佬们的文章,对读源码帮助很大: https://etern ...

最新文章

  1. 北大华为鹏城联合首次提出视觉 Transformer 后量化算法!
  2. 这两天被木马程序搞得好烦
  3. C#集合类(HashTable, Dictionary, ArrayList)与HashTable线程安全
  4. 2020年餐饮B2B服务产业创新报告
  5. 【干货】一文带你看透深度学习框架演进
  6. Python 监控主机程序,异常后发送邮件(我的第一只Python程序)
  7. 拖动小游戏html,Cocos Creator 入门篇-拖拽小游戏(一)
  8. 在WPF中开启摄像头扫描二维码(Media+Zxing)
  9. PHP仿网易云原创音乐分享平台网站源码
  10. ensp的p2p网络与虚拟专线实验
  11. 配置vps服务器,拨号换ip(一)
  12. H5标签 marquee 滚动字幕
  13. 三、cadence ic 5141 ——打开cadence软件
  14. 详解共享锁(S锁)和排它锁(X锁)
  15. Laravel5.5 项目开发文档,精简版,不适合新手使用。
  16. ubuntu 播放视频黑屏,没声音没画面,无法播放视频怎么办--已解决
  17. 为什么要分库分表?一个业务场景来理顺它!
  18. c语言完美素数反思,《素数和合数》优秀教学反思
  19. Flutter 中文文档:Flutter 应用里的国际化
  20. 淘宝芝麻信用分提升方法技巧

热门文章

  1. java arraycopy 并发_java用arraycopy实现多击事件
  2. 【云栖大会】共探云计算如何加持视觉行业生态
  3. selenium自动化常用元素定位方法
  4. oracle 11g 之 result cache
  5. 利用ucloud自带工具管理对象存储
  6. 【Nd4j 运行异常解决方案】
  7. nxp管理芯片的封装与基本原理
  8. 4月26日,每日互动(个推)与您相约第六届数字中国建设峰会
  9. 【学习笔记】薛定谔的喵咪Cat—球盒问题(全详解)
  10. 软件测试面试题:现有一个学生标准化考试批阅试卷,产生成绩报告的程序。其规格说明如下:程序的输入文件由一些有80个字符的记录组成,如右图所示,所有记录分为3组?