回归灰盒模糊测试工具 AFLCHURN 环境搭建(ubuntu 18.04 + llvm 11.1.0)

论文讲解见知乎小号 21-CCS-Regression Greybox Fuzzing

闲话 🗣️

最近莫名其妙又一直在搭环境,主要是 LLVM 的环境配置要求属实逆天,能不能 work 是玄学问题🙄。好在功夫不负有心人,总算是摸索出可行的环境了。总结的经验就是,尽量与 github 中 README 文档的要求保持一致,这样可以少走点弯路。

一、环境参数

  • ubuntu 18.04 LTS,4GB 内存,48GB 磁盘空间
  • gcc 版本 7.5.0
  • g++ 版本 7.5.0
  • make 版本 4.1
  • cmake 版本 3.25.1 (手动安装的最新版,建议版本不宜过旧,参考 该博客
  • llvm 版本 11.1.0(git clone,然后源码安装)

二、安装 LLVM 11.1.0

源码安装方式,按顺序执行以下内容

git clone https://github.com/llvm/llvm-project

更新工具链(工具链版本尽可能与 “一、环境参数” 中一致)

sudo apt install gcc
sudo apt install g++
sudo apt install make
sudo apt install cmake  // cmake 安装可以考虑采用源码,安装较新版本

编译/安装 llvm(make -j4 需要好几个小时,请耐心等待⌛️)
make -j4 表示多线程编译,数字取决于 CPU 核心数,若核心数较少,不要配置较大数值的多线程。
make 过程出现问题看下报错解决,环境不同,问题不同。

cd llvm-project
git checkout release/11.x
mkdir build
cd build
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ../llvm -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi;compiler-rt;clang-tools-extra;openmp;lldb;lld"
make -j4
sudo make install

测试安装是否成功

llvm-config --version

若安装成功,则会显示 11.1.0 。

三、运行 AFLCHURN

根据 github 上的指导,执行如下命令构建 aflchurn

git clone https://github.com/aflchurn/aflchurn.git
cd aflchurn
export AFLCHURN=$PWD
make clean all
cd llvm_mode
make clean all

构建完成后,需要对待测程序进行插桩操作。这里的插桩,就是用构建完的 aflchurn 去编译待测程序代码。

CC=$AFLCHURN/afl-clang-fast CXX=$AFLCHURN/afl-clang-fast++ ./configure
make

CC 用于指定C语言的编译器,使用 aflchurn 下的 afl-clang-fast 编译C代码;CXX 用于指定C++语言的编译器,使用 aflchurn 下的 afl-clang-fast++ 编译C++代码。./configure 指的是运行当前目录下的 configure 文件,它本质上是一个 SHELL 脚本程序,通过执行它生成 Makefile 文件,再通过 make 命令完成编译。以插桩 yara 代码为例:

git clone https://github.com/VirusTotal/yara.git
cd yara

yara 源代码中没有 configure 文件,但有 configure.ac 和 Makefile.am,执行 bootstrap.sh 生成 configure 文件。然后执行 “CC=$AFLCHURN/ … ./configure”,make 和 sudo make install 命令。在 make install 时可能会报错❌如下,即缺失某个共享库

error while loading shared libraries: libyara.so.9: cannot open shared object file: No such file or directory.

执行以下命令解决:

sudo su
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig

这样,yara 就插桩完毕,可以作为待测程序被 aflchurn 运行。进入 aflchurn 目录,启动 afl-fuzz

./afl-fuzz -i testcases_dir -o output_dir yara(待测程序路径) 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值