diff options
Diffstat (limited to 'utils/scripts/modify_apk.sh')
| -rwxr-xr-x | utils/scripts/modify_apk.sh | 50 |
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" |
