本人是在VMWare虚拟机中执行的Peach编译步骤,所使用的原始镜像为; ubuntu-16.04.6-server-i386.iso Peach的编译所需部件较多,请在尝试编译时保持耐心

本文所有步骤参考自下列网址: [1]. Gitlab官方仓库:https://gitlab.com/gitlab-org/security-products/protocol-fuzzer-ce.git [2]. BruceWayne09的博客:ubuntu 16.04 安装peach - BruceWayne09 - 博客园 (cnblogs.com)

前置条件

关于Linux编译执行前的环境,Peach官方给出了下图中所示的要求,这些步骤所指代的工具在linux中的安装步骤不分先后,但个人建议初学者(本人是初学者qwq)在成功安装所给出的8条工具后(除了mono-complete 之外,从 Ubuntu16.04 到 Intel Pin 一共8条)就拍摄系统快照,以免在编译的最后一步切换 mono-complete 版本时出了差错等等原因导致无法正确退回前一步。

具体步骤

下述将会频繁用到apt命令,而原始apt来源下载过慢,请参照下述博客更换为对应系统版本的文件 ubuntu 提升下载速度—更换阿里源 - 知乎 (zhihu.com)

第一步:安装 gcc 和 g++

sudo apt install gcc

sudo apt install g++

第二步:安装 g+±multilib

sudo apt install g++-multilib

第三步:安装 python2.7

sudo apt install python2.7

which python2.7

sudo ln -s /usr/bin/python2.7 /usr/bin/python

第四步:安装 ruby2.3

sudo apt install ruby2.3

第五步:安装 doxygen、java、xmllint、xsltproc

sudo apt install doxygen

sudo apt install openjdk-8-jdk

sudo apt install libxml2-utils

sudo apt install xsltproc

第六步:安装 nodejs、tsc

sudo apt install nodejs

sudo apt install npm

sudo npm install -g typescript@2.8

sudo ln -s /usr/bin/nodejs /usr/bin/node

第七步:安装 Intel Pin

在windows中点击该链接下载Intel Pin工具包linux版,之后可以用文件传输工具发往你的linux主机中,并解压:

tar -zxvf pin-3.19-98425-gd666b2bee-gcc-linux.tar.gz

更改解压后的文件名:

mv pin-3.19-98425-gd666b2bee-gcc-linux pin-3.19-98425-gcc-linux

第八步:下载peach项目

将peach项目下载并拷贝到linux中,之后将第七步解压后的 pin-3.19-98425-gcc-linux 拷贝到peach项目中 3rdParty/pin/ 目录下,命令如下(请根据你自己的路径更改命令):

mv pin-3.19-98425-gcc-linux/ protocol-fuzzer-ce-main/3rdParty/pin/

更改peach项目文件 protocol-fuzzer-ce-main/core/BasicBlocks/bblocks.cpp ,添加一行宏定义:

建议保存一次系统快照

第九步:安装 mono-complete

下述指令参照mono官方网址

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF

sudo apt install apt-transport-https ca-certificates

echo "deb https://download.mono-project.com/repo/ubuntu stable-xenial main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list

sudo apt update

第十步:开始编译(先进入你自己的peach目录下,即第八步中的 protocol-fuzzer-ce-main )

sudo python waf configure

效果如下(只要有一个linux开头的variant是available就可以):

sudo python waf build

效果如下:

删除第九步中下载的mono-complete v6.12,参照下述指令安装mono v4.8.1:

由于我的电脑缺少一些工具,执行完其中的 ./autogen.sh 命令后,会出现下面的打印信息,根据你自己的打印信息,用 sudo apt install xxx 安装缺少的组件即可:

安装完成后再次执行 ./autogen.sh 命令,打印信息如下:

发现还缺少两个组件,再次安装:

sudo apt install libtool-bin

sudo apt install cmake

再次执行 ./autogen.sh 命令,成功信息如下:

依次执行 sudo make 和 sudo make install ,等待时间较长,结果如图:

之后再次进入peach项目根目录下,执行 sudo python waf install

成功编译!目录如下:

编译好的peach项目就在output目录下,自由选择使用。