FROM ubuntu:22.04 ENV DEBIAN_FRONTEND=noninteractive ENV JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 ENV ANDROID_SDK_ROOT=/home/user/android-sdk ENV PATH="${JAVA_HOME}/bin:${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin:${PATH}" RUN apt-get update && apt-get install -y \ openjdk-21-jdk wget unzip python3 curl ca-certificates \ && rm -rf /var/lib/apt/lists/* RUN useradd -m -u 1000 user WORKDIR /home/user # Android command-line tools RUN mkdir -p "$ANDROID_SDK_ROOT/cmdline-tools" && \ cd /tmp && \ wget -q https://dl.google.com/android/repository/commandlinetools-linux-14742923_latest.zip -O cmd.zip && \ unzip -q cmd.zip && \ mv cmdline-tools "$ANDROID_SDK_ROOT/cmdline-tools/latest" && \ rm -f cmd.zip # Install official NDK RUN yes | sdkmanager --sdk_root="$ANDROID_SDK_ROOT" --licenses >/dev/null && \ sdkmanager --sdk_root="$ANDROID_SDK_ROOT" "ndk;29.0.14206865" # Ghidra ENV GHIDRA_URL=https://github.com/NationalSecurityAgency/ghidra/releases/download/Ghidra_12.0.4_build/ghidra_12.0.4_PUBLIC_20260303.zip RUN wget -q "$GHIDRA_URL" -O ghidra.zip && \ unzip -q ghidra.zip && \ mv ghidra_* ghidra && \ test -x /home/user/ghidra/support/analyzeHeadless && \ rm ghidra.zip RUN mkdir -p /data /home/user/android_libs COPY --chown=user:user libmsaoaidsec.so /home/user/libmsaoaidsec.so COPY --chown=user:user export_all.py /home/user/export_all.py # Copy REAL ARM64 libraries from the NDK sysroot RUN set -eux; \ ndk_root="$(find "$ANDROID_SDK_ROOT/ndk" -mindepth 1 -maxdepth 1 -type d | sort | tail -n 1)"; \ test -n "$ndk_root"; \ arm64_sysroot="$(find "$ndk_root/toolchains/llvm/prebuilt" -type d -path '*/sysroot/usr/lib/aarch64-linux-android' | head -n 1)"; \ test -n "$arm64_sysroot"; \ for lib in \ liblog.so \ libandroid.so \ libEGL.so \ libGLESv2.so \ libGLESv3.so \ libGLESv1_CM.so \ libc.so \ libm.so \ libdl.so \ libz.so; do \ src="$(find "$arm64_sysroot" -type f -name "$lib" | head -n 1)"; \ test -n "$src"; \ cp "$src" "/home/user/android_libs/$lib"; \ done # UI RUN cat > /home/user/index.html <<'HTML'
Target: libmsaoaidsec.so
Real ARM64 Android libraries are loaded from the official NDK sysroot.
Output: /data/libmsaoaidsec_pseudocode.cpp