-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
88 lines (75 loc) · 3.76 KB
/
Copy pathDockerfile
File metadata and controls
88 lines (75 loc) · 3.76 KB
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
# Set alpine as base of image
FROM alpine
# Set build arguments
ARG JDK_VERSION=17
ARG ANDROID_VERSION=34
ARG BUILD_TOOLS_VERSION=34.0.0
ARG APKTOOL_VERSION=2.9.0
ARG BACKSMALI_VERSION=2.5.2
ARG JADX_VERSION=1.4.7
ARG REFLUTTER_VERSION=0.7.7
# Remark: Alpine uses musl libc
ARG FRIDA_VERSION=16.1.4
ARG FRIDA_ARCH=x86_64-musl
ARG KRAKATAU_COMMIT_HASH=b469447310dd6f61d95cfc672ceff547825276f7
# Set environment variables
ENV ANDROID_HOME=/usr/lib/android-sdk
ENV ANDROID_JAR=$ANDROID_HOME/platforms/android-$ANDROID_VERSION/android.jar
ENV BUILD_TOOLS_PATH=$ANDROID_HOME/build-tools/$BUILD_TOOLS_VERSION
ENV PATH=$BUILD_TOOLS_PATH/jadx/bin:$BUILD_TOOLS_PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/cmdline-tools/latest/bin:$PATH
# Install requirements
RUN apk add \
# Shell
bash \
# Android SDK
openjdk$JDK_VERSION \
libc++ \
libgcc \
gcompat \
curl \
# Frida
python3 \
py3-pip \
python3-dev \
gcc \
musl-dev
# Install last version of Android SDK
RUN mkdir -p "$ANDROID_HOME/cmdline-tools/latest" && \
curl -Ls "https://dl.google.com/android/repository/`curl -Ls https://developer.android.com/studio | grep -Eo 'commandlinetools-linux-.*_latest\.zip' | head -1`" -o '/commandlinetools-linux.zip' && \
unzip -q '/commandlinetools-linux.zip' -d "$ANDROID_HOME/tmp" && \
mv "$ANDROID_HOME/tmp/cmdline-tools/"* "$ANDROID_HOME/cmdline-tools/latest" && \
rm -rf "$ANDROID_HOME/tmp/" && \
rm '/commandlinetools-linux.zip'
# Install required build tools and platforms for Android SDK
RUN yes | sdkmanager --licenses && \
sdkmanager 'platform-tools' && \
sdkmanager "build-tools;$BUILD_TOOLS_VERSION" "platforms;android-$ANDROID_VERSION"
# Build debug keystore
RUN keytool -genkey -v -keystore '/root/.android/debug.keystore' -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname 'C=US, O=Android, CN=Android Debug'
# Install required Apktool
RUN curl -Ls "https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_$APKTOOL_VERSION.jar" -o "$BUILD_TOOLS_PATH/apktool.jar" && \
curl -Ls 'https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool' -o "$BUILD_TOOLS_PATH/apktool" && \
chmod +x "$BUILD_TOOLS_PATH/apktool"
# Install required Backsmali
RUN curl -Ls "https://bitbucket.org/JesusFreke/smali/downloads/baksmali-$BACKSMALI_VERSION.jar" -o "$BUILD_TOOLS_PATH/backsmali.jar" && \
curl -Ls "https://bitbucket.org/JesusFreke/smali/downloads/smali-$BACKSMALI_VERSION.jar" -o "$BUILD_TOOLS_PATH/smali.jar"
# Install required Jadx
RUN curl -Ls "https://github.com/skylot/jadx/releases/download/v$JADX_VERSION/jadx-$JADX_VERSION.zip" -o '/jadx.zip' && \
unzip -q '/jadx.zip' -d "$BUILD_TOOLS_PATH/jadx" && \
rm '/jadx.zip'
# Install required Krakatau
RUN curl -Ls "https://codeload.github.com/martin-feaux/Krakatau-fix201/zip/$KRAKATAU_COMMIT_HASH" -o '/krakatau.zip' && \
unzip -q '/krakatau.zip' -d "$BUILD_TOOLS_PATH/krakatau" && \
mv "$BUILD_TOOLS_PATH/krakatau/Krakatau-fix201-$KRAKATAU_COMMIT_HASH/"* "$BUILD_TOOLS_PATH/krakatau" && \
rm -rf "$BUILD_TOOLS_PATH/krakatau/Krakatau-fix201-$KRAKATAU_COMMIT_HASH" && \
rm '/krakatau.zip'
# Install ReFlutter
RUN pip install --root-user-action=ignore reflutter==$REFLUTTER_VERSION
# Install required Frida
RUN mkdir -p '/frida-core-devkit' && \
curl -Ls "https://github.com/frida/frida/releases/download/$FRIDA_VERSION/frida-core-devkit-$FRIDA_VERSION-linux-$FRIDA_ARCH.tar.xz" -o '/frida-core-devkit/frida-core-devkit.tar.xz' && \
tar -Jxf '/frida-core-devkit/frida-core-devkit.tar.xz' -C '/frida-core-devkit' && \
FRIDA_CORE_DEVKIT='/frida-core-devkit' pip install --root-user-action=ignore frida-tools && \
rm -rf '/frida-core-devkit'
# Start container
ENTRYPOINT ["/bin/bash"]