超详细的如何安装运行VisFuzz

本文详细指导了在Ubuntu18.04.5系统上安装LLVM10、Python3、Git,以及从源代码编译并配置VisFuzzfuzzing工具的过程,包括AFL集成和可视化Demo的设置。
摘要由CSDN通过智能技术生成

准备环境:

系统:Ubuntu 18.04.5
LLVM:llvm-10(推荐visfuzz使用的版本,以免版本不兼容)
在这里插入图片描述

python:Python 3
visfuzz源码地址:visfuzz源码地址

开始安装

贴上源码的安装方法,我们将安装此方法一步一步进行安装:

  1. Install LLVM (>= 8.0), python3.

  2. Download and compile VisFuzz:

     git clone https://github.com/ChijinZ/VisFuzz.git
     cd VisFuzz
     export DEMO_PATH=$PWD/demo
     export TOOL_PATH=$PWD/visfuzz
     cd $TOOL_PATH/fuzz
     mkdir build
     cd build
     cmake ../llvm/ .
     make
     export VISFUZZ_BUILD=$PWD
     cd $TOOL_PATH/fuzz/afl
     make
    
  3. Fuzz && visualize demo:

     cd $DEMO_PATH/re2
     sh compile.sh
     cd repo
     mkdir in
     echo a>in/seed
     nohup $TOOL_PATH/fuzz/afl/afl-fuzz -i in -o out ./app @@ &
     python $TOOL_PATH/open_file_server.py 6767
    
     # Open a new terminal
     cd $TOOL_PATH/visualization
     python -m http.server 8000
    
  4. Open browser (Chrome is recommended) and visit localhost:8000

1.Install LLVM (>= 8.0), python3. 以及git

①安装llvm-10

我们现在查询系统是否安装了llvm以及安装了llvm的版本

llvm-as --version

在这里插入图片描述
根据查询可知没有安装如何llvm版本
我们在搜索系统是否有llvm-10的版本

sudo apt search llvm-10

在这里插入图片描述
最后我们安装llvm-10
在这里插入图片描述
输入y 再回车等待安装完成后再执行查询目录下面是否已安装llvm-10。Ps:安装慢的可以进行换源设置,具体操作请自行百度。
在这里插入图片描述
在这里插入图片描述
此时我们发现文件夹中虽然有了llvm-10
但是通过

llvm-as --version

查询发现还是提示没有安装,这是因为没有设置环境变量

echo 'export PATH=/usr/lib/llvm-10/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

在这里插入图片描述
通过配置环境变量我们能查询单llvm版本了

②安装Python

同理我们对python进行安装

安装Python

sudo apt install python

在这里插入图片描述
查询Python版本命令

python --version

在这里插入图片描述

③安装git
sudo apt install git

在这里插入图片描述
查询是否安装git

git --version

在这里插入图片描述

2.Download and compile VisFuzz

①下载源码

我们在合适的目录下用git命令下载源码

git clone https://github.com/ChijinZ/VisFuzz.git

在这里插入图片描述

②执行readme中剩下的步骤

在这里插入图片描述
运行到cmake …/llvm/ . 我们发现提示我们没有这个命令,此时我们根据提示安装camke即可

sudo apt install cmake

在这里插入图片描述
安装完后继续执行
在这里插入图片描述
此时我们又发现一个错误信息。
在这里插入图片描述

安装clang clang++

sudo apt install clang-10
sudo apt install clang++-10

发现安装完成后还是报同样的错误,此时仔细研究发现提供的命令不对,可通过如下命令执行
原命令

cmake ../llvm/ .

新命令

 cmake ../llvm/

在这里插入图片描述
接着readme的教程执行命令:

make
export VISFUZZ_BUILD=$PWD
cd $TOOL_PATH/fuzz/afl
make

在这里插入图片描述

在这里插入图片描述

3.Fuzz && visualize demo:

cd $DEMO_PATH/re2
sh compile.sh
cd repo
mkdir in
echo a>in/seed
nohup $TOOL_PATH/fuzz/afl/afl-fuzz -i in -o out ./app @@ &
python $TOOL_PATH/open_file_server.py 6767

# Open a new terminal
cd $TOOL_PATH/visualization
python -m http.server 8000

当我们执行到python $TOOL_PATH/open_file_server.py 6767 发现报错
我们将此命令更改为

python3 $TOOL_PATH/open_file_server.py 6767

成功启动服务
在这里插入图片描述
我们在VisFuzz文件夹中右键空白处打开一个新的终端
在这里插入图片描述

依次输入:

 export DEMO_PATH=$PWD/demo
 export TOOL_PATH=$PWD/visfuzz
 cd $TOOL_PATH/visualization
 python3 -m http.server 8000

在这里插入图片描述

4.新的问题

此时我们发现打开的这个网址后并没有出现我们预计的效果,我们按F12打开浏览器的开发者面板
在这里插入图片描述
我们发现请求一直在报错,什么原因呢?跟着这些报错信息我们深究下去
通过查询服务地址我们并没有发现所谓的fuzzer_stats这个文件
在这里插入图片描述
我们此时查看的惹re2/compile.sh 这个脚本的内容:
compile.sh内容:

#!/bin/bash -eu
J8=-j8
CLANGPP=clang++-10
LLVMLINK=llvm-link-10
OPT=opt-10
CXXFLAGS='-g -flto'

[[ -d repo ]] || git clone https://github.com/google/re2.git repo
mkdir -p repo/bitcode
cd repo
make clean
cp ../target.cc ./
git checkout -f 499ef7eff7455ce9c9fae86111d4a77b6ac335de
CXX="$CLANGPP" CXXFLAGS="$CXXFLAGS" make "$J8" obj/libre2.a
"$CLANGPP" $CXXFLAGS ./target.cc -c -o bitcode/target.o -I .
cd bitcode
ar x ../obj/libre2.a
"$LLVMLINK" *.o -o combined.bc
"$OPT" -load=$VISFUZZ_BUILD/libVisFuzz.so -visfuzz -fvisfuzz-export=static.json \
       combined.bc -o instru.bc
"$CLANGPP" -g -fuse-ld=lld instru.bc $VISFUZZ_BUILD/libVisFuzzDriver.a -pthread -o app
cp {app,static.json} ..

此时我在想是不是这个脚本出现了问题,于是我决定自己执行这些脚本的内容,当然我做了一些改动:
我们新打打开一个终端,重新定义一下局部变量

cd VisFuzz
export DEMO_PATH=$PWD/demo
export TOOL_PATH=$PWD/visfuzz
cd $TOOL_PATH/fuzz
cd build
export VISFUZZ_BUILD=$PWD
cd $DEMO_PATH/re2

在这里插入图片描述

接下来我们开始手动运行脚本里面的命令:

cd repo
make clean
cp ../target.cc ./
git checkout -f 499ef7eff7455ce9c9fae86111d4a77b6ac335de
"clang++-10" -g -flto ./target.cc -c -o bitcode/target.o -I .
cd bitcode
ar x ../obj/libre2.a
"llvm-link-10" *.o -o combined.bc
"opt-10" -load=$VISFUZZ_BUILD/libVisFuzz.so -visfuzz -fvisfuzz-export=static.json \
>        combined.bc -o instru.bc
"clang++-10" -g -fuse-ld=lld-8 instru.bc $VISFUZZ_BUILD/libVisFuzzDriver.a -pthread -o app

在这里插入图片描述
在这里插入图片描述
运行到此处又发现了一个报错信息,我们解决这个报错,将 -fuse-ld=lld-8删除掉

"clang++-10" -g instru.bc $VISFUZZ_BUILD/libVisFuzzDriver.a -pthread -o app
cp {app,static.json} ..

在这里插入图片描述
然后重新再执行

nohup $TOOL_PATH/fuzz/afl/afl-fuzz -i in -o out ./app @@ &

在这里插入图片描述
最后在re2的文件夹中有如下文件即可

在这里插入图片描述
在这里插入图片描述

make clean
cp ../target.cc ./
git checkout -f 499ef7eff7455ce9c9fae86111d4a77b6ac335de
CXX="clang++-10" CXXFLAGS="-g -flto" make "-j8" obj/libre2.a
"clang++-10" -g -flto ./target.cc -c -o bitcode/target.o -I .
cd bitcode
ar x ../obj/libre2.a
"llvm-link-10" *.o -o combined.bc
"opt-10" -load=$VISFUZZ_BUILD/libVisFuzz.so -visfuzz -fvisfuzz-export=static.json \
       combined.bc -o instru.bc
"clang++-10" -g instru.bc $VISFUZZ_BUILD/libVisFuzzDriver.a -pthread -o app
cp {app,static.json} ..

界面效果

发现在Ubuntu中安装的edge浏览器还是有点问题,可以改用自带firefox浏览器打开
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

命令总结

//准备工作
sudo apt install llvm-10
echo 'export PATH=/usr/lib/llvm-10/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
sudo apt install python
sudo apt install git
sudo apt install clang-10
sudo apt install clang++-10
//配置运行环境
git clone https://github.com/ChijinZ/VisFuzz.git
cd VisFuzz
export DEMO_PATH=$PWD/demo
export TOOL_PATH=$PWD/visfuzz
cd $TOOL_PATH/fuzz
mkdir build
cd build
cmake ../llvm/
make
export VISFUZZ_BUILD=$PWD
cd $TOOL_PATH/fuzz/afl
make
//下载测试代码

cd $DEMO_PATH/re2
sh compile.sh
// 手动执行脚本里面命令
cd repo
make clean
cp ../target.cc ./
git checkout -f 499ef7eff7455ce9c9fae86111d4a77b6ac335de
"clang++-10" -g -flto ./target.cc -c -o bitcode/target.o -I .
cd bitcode
ar x ../obj/libre2.a
"llvm-link-10" *.o -o combined.bc
"opt-10" -load=$VISFUZZ_BUILD/libVisFuzz.so -visfuzz -fvisfuzz-export=static.json \
>        combined.bc -o instru.bc
"clang++-10" -g instru.bc $VISFUZZ_BUILD/libVisFuzzDriver.a -pthread -o app
cp {app,static.json} ..
//执行fuzz过程
cd repo
mkdir in
echo a>in/seed
nohup $TOOL_PATH/fuzz/afl/afl-fuzz -i in -o out ./app @@ &
python3 $TOOL_PATH/open_file_server.py 6767
//运行VisFuzz
cd $TOOL_PATH/visualization
python3 -m http.server 8000

结束语

如果发现并没有呈现想要的效果,可以检测是否联网,因为一些效果是通过引用互联网的样式文件才得以实现,如果想要断网情况实现效果可以将互联网文件下载到本地,修改web代码即可,这里就不做演示了。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值