aboutsummaryrefslogtreecommitdiff
path: root/utils/scripts/modify_apk.sh
diff options
context:
space:
mode:
Diffstat (limited to 'utils/scripts/modify_apk.sh')
-rwxr-xr-xutils/scripts/modify_apk.sh50
1 files changed, 50 insertions, 0 deletions
diff --git a/utils/scripts/modify_apk.sh b/utils/scripts/modify_apk.sh
new file mode 100755
index 0000000..e682598
--- /dev/null
+++ b/utils/scripts/modify_apk.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+TMP_DIR="/tmp/driedlamu/modify_apk"
+
+decompile() {
+ local file="$1"
+ local file_name="$(basename "$file" .apk)"
+ local working_dir="$TMP_DIR/$file_name"
+
+ mkdir -p "$working_dir"
+
+ if ! java -Xmx2048m -jar "./utils/jar/apktool.jar" d -q -f "$file" -o "$working_dir/decompile"; then
+ echo "Error: Failed to decompile $file with apktool"
+ exit 1
+ fi
+}
+
+repack() {
+ local file="$1"
+ local file_name="$(basename "$file" .apk)"
+ local output_location="$2"
+ local working_dir="$TMP_DIR/$file_name"
+ local modified_apk="$working_dir/${file_name}_unsigned.apk"
+
+ if ! java -Xmx2048m -jar "./utils/jar/apktool.jar" b -q -f "$working_dir/decompile" -o "$working_dir/${file_name}_unsigned.apk"; then
+ echo "Error: Failed to recompile $file with apktool"
+ exit 1
+ fi
+
+ apksigcopier copy "$file" "$modified_apk" "${output_location}/${file_name}.apk"
+}
+
+mkdir -p $TMP_DIR
+
+apk_cli() {
+ case $1 in
+ unpack)
+ decompile "$2"
+ ;;
+ repack)
+ repack "$2" "$3"
+ ;;
+ *)
+ echo "Please specify a valid type of task you wish to do (unpack, repack)."
+ exit 1
+ ;;
+ esac
+}
+
+apk_cli "$1" "$2" "$3"