-
Notifications
You must be signed in to change notification settings - Fork 31
/
Dockerfile
74 lines (53 loc) · 3.05 KB
/
Dockerfile
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
############################################################
### BUILD STAGE #########################################
############################################################
FROM ubuntu:18.04 as build
# install Kitware's APT repo (for CMake)
RUN apt update && apt install -y apt-transport-https ca-certificates gnupg software-properties-common wget && wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null && apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main'
RUN apt-get update && apt-get install -y build-essential git cmake ninja-build patch && rm -rf /var/lib/apt/lists/*
############################################################
### retrieve LLVM source tree
ADD https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.1/llvm-10.0.1.src.tar.xz /usr/local/src
ADD https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.1/clang-10.0.1.src.tar.xz /usr/local/src
WORKDIR /usr/local/src
RUN tar -xf llvm-10.0.1.src.tar.xz && rm llvm-10.0.1.src.tar.xz
WORKDIR /usr/local/src/llvm-10.0.1.src/tools
RUN tar -xf ../../clang-10.0.1.src.tar.xz && rm ../../clang-10.0.1.src.tar.xz
#############################################################
#### add ropfuscator (essential files for build)
#
WORKDIR /usr/local/src/llvm-10.0.1.src/lib/Target/X86/ropfuscator
COPY cmake/ropfuscator.cmake ./cmake/ropfuscator.cmake
COPY src/ ./src/
COPY patches/ropfuscator_pass.patch ./
COPY thirdparty/ ./thirdparty
WORKDIR /usr/local/src/llvm-10.0.1.src/lib/Target/X86
RUN patch < ropfuscator/ropfuscator_pass.patch && rm ropfuscator/ropfuscator_pass.patch
#############################################################
#### configure LLVM + ropfuscator
#
WORKDIR /usr/local/src/build-ropfuscator
RUN cmake \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_TARGETS_TO_BUILD=X86 \
-GNinja \
/usr/local/src/llvm-10.0.1.src
###########################################################
## build LLVM + ropfuscator
RUN ninja
#RUN strip -s bin/llc bin/clang
############################################################
### RELEASE IMAGE ##########################################
############################################################
FROM ubuntu:18.04 as runtime
# install Kitware's APT repo (for CMake)
RUN apt update && apt install -y apt-transport-https ca-certificates gnupg software-properties-common wget && \
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null && \
apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main'
RUN dpkg --add-architecture i386 && apt-get update && apt-get install -y gcc-multilib g++-multilib cmake libsdl2-mixer-dev libsdl2-net-dev libsdl2-dev libc6 libc6-dev
COPY --from=build /usr/local/src/ /usr/local/src
WORKDIR /usr/local/src/build-ropfuscator
RUN cmake --install .
RUN update-alternatives --install /usr/bin/cc cc /usr/local/bin/clang 100
RUN update-alternatives --install /usr/bin/c++ c++ /usr/local/bin/clang++ 100
CMD /bin/bash