0%

编译运行Peach

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# 使用 Ubuntu 14.04 作为基础镜像
FROM ubuntu:14.04

ARG DEBIAN_FRONTEND=noninteractive

# 安装基础依赖和Python 2
RUN apt-get update && apt-get install -y \
build-essential \
mono-complete \
g++-multilib \
python2.7 \
# 安装旧版GCC/G++ 4.8以兼容Pin工具包
gcc-4.8 \
g++-4.8 \
gcc-4.8-multilib \
g++-4.8-multilib \
# 安装其他必要依赖
libpng-dev \
wget \
git \
&& ln -s /usr/bin/python2.7 /usr/bin/python \
# 设置默认编译器为gcc-4.8/g++-4.8
&& update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 100 \
&& update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 100 \
&& rm -rf /var/lib/apt/lists/*

WORKDIR /peach

# 复制Peach源代码到容器
COPY ./peachfuzz-code/ .

WORKDIR /peach/3rdParty/pin

#pin文件
COPY ./pin-3.19-98425-gd666b2bee-gcc-linux.tar.gz .

RUN tar -xzf pin-3.19-98425-gd666b2bee-gcc-linux.tar.gz \
&& mv pin-2.13-61206-gcc.4.4.7-linux/ pin-2.13-61206-gcc.4.4.7-linux-back/ && mv pin-3.19-98425-gd666b2bee-gcc-linux/ pin-2.13-61206-gcc.4.4.7-linux/

# 确保waf有执行权限并编译
RUN chmod +x ./waf && \
./waf configure && \
./waf build && \
./waf install

WORKDIR /peach/output

# 设置默认启动命令
CMD ["/bin/bash"]

使用 Ubuntu 14.04 作为基础镜像

编译peach3.x版本,版本比较老,需要用到比较老的mono版本,Ubuntu 14相应的mono为3.x版本,可以编译通过。

Ubuntu 14.04.1 16.04.1 18.04.1
linux 3.13.0 4.4.0 4.15.0
mono 3.2.8 4.2.1.102 4.6.2.7

安装基础依赖和Python 2

主要注意gcc、python版本也要低,python2执行waf

自己安装mono

下载源码 https://origin-download.mono-project.com/sources/mono/

1
2
3
4
5
6
7
8
9
apt-get install bison
apt-get install gettext

tar  jvxf  mono-xxx.tar.bz2
cd /mono-xxx

./configure --prefix=/usr
make
make install

WORKDIR 命令

WORKDIR命令指定工作目录,可对后续代码产生影响。

而RUN命令只对当前命令有效,cd只影响当前命令,命令执行完,下一个RUN会回到workdir工作目录

COPY 命令

COPY 指令中,./XXX/ 末尾的 / 表示复制XXX目录下的所有内容,而不是整个目录。

去掉末尾的/,则连着文件名也复制过来

Pin文件

下载的Peach3.1.124源码中,/3rdParty/pin下的包编译时会出错,好像是损坏了。

直接网上下载了个pin3.x的过去顶上,结果编译也成功了

https://software.intel.com/sites/landingpage/pintool/downloads/pin-3.19-98425-gd666b2bee-gcc-linux.tar.gz

总结

最终在mono3.x+pin3.x+gcc4.x+peach3.x这个环境下编译成功了!!

------------- Thank you for reading -------------

Title - Artist
0:00