-
Notifications
You must be signed in to change notification settings - Fork 4
/
Dockerfile
146 lines (125 loc) · 5.58 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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
################################################# Image #################################################
FROM nvidia/cuda:11.7.0-devel-ubuntu20.04
############################################# Date and Time #############################################
ENV TZ="America/Sao_Paulo"
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get update -y && apt-get install -y \
locales \
curl \
sudo \
&& rm -rf /var/lib/apt/lists/* \
&& localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
ENV LANG en_US.utf8
############################################## LLVM 10.0.1 ##############################################
RUN curl https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - \
&& echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-10 main" | tee -a /etc/apt/sources.list \
&& apt-get update -y
################################################# OLLVM #################################################
RUN apt-get update -y \
&& apt-get install -y \
gcc-7 \
g++-7 \
libssl-dev \
tar \
wget \
apt-utils \
git \
python3 \
python-is-python3
RUN wget --quiet https://github.com/Kitware/CMake/releases/download/v3.5.1/cmake-3.5.1.tar.gz
RUN tar xzf cmake-3.5.1.tar.gz \
&& cd cmake-3.5.1 \
&& ./configure --prefix=/opt/cmake-3.5.1 \
&& make -j 8 \
&& make install \
&& cd .. \
&& rm -rf cmake-3.5.1*
RUN git clone -b llvm-4.0 https://github.com/obfuscator-llvm/obfuscator.git
RUN mkdir ollvm \
&& cd ollvm \
&& /opt/cmake-3.5.1/bin/cmake -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7 -DCMAKE_INSTALL_PREFIX=/opt/ollvm -DLLVM_INCLUDE_TESTS=OFF \
-DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_DOCS=OFF -DCMAKE_BUILD_TYPE=Release ../obfuscator \
&& make -j 8 \
&& make install \
&& cd .. \
&& rm -rf obfuscator
RUN apt-get purge -y gcc-7 g++-7
RUN apt autoremove -y
RUN rm -rf /opt/cmake-3.5.1
############################################## More Tools ###############################################
RUN apt-get update -y \
&& apt-get install -y \
llvm-10 \
clang-10 \
libclang1-10 \
libclang-10-dev \
libclang-common-10-dev \
gcc g++ \
cmake \
vim \
libssl-dev \
zip unzip \
python3-dev python3-pip python3-virtualenv python3-setuptools \
libeigen3-dev \
bc \
time \
graphviz \
libgraphviz-dev \
lsb-release
################################################ IR2Vec #################################################
RUN git clone https://github.com/IITH-Compilers/IR2Vec.git
RUN cd IR2Vec \
&& git checkout llvm10 \
&& mkdir -p build \
&& cd build \
&& cmake ../src \
&& make -j 8 \
&& make install \
&& mv bin/ir2vec /usr/local/bin \
&& mv /usr/local/seedEmbeddingVocab-300-llvm10.txt /usr/local/lib \
&& cd ../.. \
&& rm -rf IR2Vec
####################################### Creating a Non-root User ########################################
RUN useradd --create-home --gid sudo --shell /bin/bash --system ml4code \
&& echo "ml4code ALL=(ALL) NOPASSWD:ALL" | tee -a /etc/sudoers
##################################### Switching to a non-root user ######################################
USER ml4code
WORKDIR /home/ml4code
################################################# YaCos #################################################
RUN pip3 install --no-warn-script-location protobuf==3.19.4
RUN git clone https://github.com/ComputerSystemsLaboratory/YaCoS.git
RUN sudo pip3 install numpy==1.23.5
RUN cd YaCoS \
&& ./install_deps.sh
RUN cd YaCoS \
&& sed -i '/install_requires = \[/a "chardet==5.0.0",' setup.py \
&& sed -i 's/numpy~=1.19.2/numpy==1.23.5/g' setup.py \
&& sed -i 's/gensim==3.4.0/gensim/g' setup.py \
&& sed -i 's/six==1.15.0/six/g' setup.py \
&& sed -i 's/pygmo/pygmo==2.16.1/g' setup.py \
&& pip3 install --no-warn-script-location .
RUN cd YaCoS \
&& mv examples ~/YaCoS.examples \
&& cd .. \
&& rm -rf YaCoS \
&& sed -i 's/padding += list(embeddings\[unk_idx\])/padding.append(embeddings\[unk_idx\])/g' ~/YaCoS.examples/representation/extract_inst2vec.py
RUN pip3 install --no-warn-script-location memory-profiler==0.60.0
RUN pip3 install typing
RUN sudo apt-get install -y libpcre3-dev
############################################ Histogram Pass #############################################
COPY ./HistogramPass/ /HistogramPass
RUN sudo mkdir -p /HistogramPass/build
RUN cd /HistogramPass/build && sudo cmake .. -D LLVM_INSTALL_DIR=/usr
RUN cd /HistogramPass/build && sudo make
######################################### Compilation Scripts ###########################################
COPY --chown=ml4code:sudo Compilation /home/ml4code/yali/Compilation
######################################### Histogram Extraction ##########################################
COPY --chown=ml4code:sudo Extraction /home/ml4code/yali/Extraction
############################################ Classification #############################################
COPY --chown=ml4code:sudo Classification /home/ml4code/yali/Classification
############################################ Representations #############################################
COPY --chown=ml4code:sudo Representations /home/ml4code/yali/Representations
############################################ Representations #############################################
COPY --chown=ml4code:sudo HistogramPass/opcodes.csv /home/ml4code/yali/HistogramPass/opcodes.csv
############################################ Entrypoint #############################################
COPY --chmod=755 ./Entrypoint/start.sh /