diff --git a/reverse_engineering/.gitignore b/reverse_engineering/.gitignore new file mode 100644 index 0000000..117d79c --- /dev/null +++ b/reverse_engineering/.gitignore @@ -0,0 +1,4 @@ +* +!.gitignore +!Containerfile +!extract diff --git a/reverse_engineering/Containerfile b/reverse_engineering/Containerfile new file mode 100644 index 0000000..9f58cd4 --- /dev/null +++ b/reverse_engineering/Containerfile @@ -0,0 +1,6 @@ +FROM debian:testing +RUN apt-get update && apt-get install --no-install-recommends -y apktool ca-certificates curl default-jdk +RUN cd /opt && curl -sSL https://download-cdn.jetbrains.com/idea/ideaIC-2023.3.3.tar.gz | gzip -d | tar -x +RUN cd /opt && curl -sSL https://github.com/pxb1988/dex2jar/releases/download/v2.4/dex-tools-v2.4.zip > dex2jar.zip && unzip dex2jar.zip && rm dex2jar.zip +COPY extract / +CMD /extract diff --git a/reverse_engineering/extract b/reverse_engineering/extract new file mode 100755 index 0000000..0f4e4d4 --- /dev/null +++ b/reverse_engineering/extract @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +set -euo pipefail +shopt -s nullglob + +dir="$(realpath .)" +tmp="$(mktemp -d)" +cd "$tmp" + +for apk in "$dir"/*.apk; do + name="$(basename "$apk" .apk)" + apktool decode --no-res --no-src --output "$name" "$apk" + cd "$name" + mkdir classes + + for f in *.dex; do + /opt/dex-tools-v2.4/d2j-dex2jar.sh --output "$f.jar" "$f" + (cd classes && jar -xvf "../$f.jar") + done + + mkdir src + java -cp \ + '/opt/idea-IC-233.14015.106/plugins/java-decompiler/lib/java-decompiler.jar' org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler \ + -dgs=true \ + classes/com/ikawacoffee src/ + + cd .. + cp -r "$name" "$dir/" +done + +cd / +rm -rf "$tmp"