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这个环境下编译成功了!!