Hành trình decode Android app

・Published on:

Tool sử dụng

  • Apktool

      https://github.com/iBotPeaches/Apktool

      • Jadx

      https://github.com/skylot/jadx

      • Adb

      https://developer.android.com/tools/adb

      Danh sách package trên thiết bị

      adb shell pm list packages | grep "bird"

      Pull tất cả apk và decode 1 app

      # pull.sh
      #!/bin/sh
      
      # package name, e.g. com.example.helloandroid expected as first argument
      # ./pull.sh com.example.helloandroid
      # apktool expected on $PATH env var
      
      APK_PATH=data/$1/apks
      DECOMPILE_PATH=data/$1/decompile
      JADX_DECOMPILE_PATH=data/$1/jadx-decompile
      
      mkdir -p $APK_PATH
      
      adb shell pm path $1 | awk -F: '{print $2}' | xargs -L1 adb pull
      
      ALL_APKS=$(ls -1 *.apk)
      
      for apk in ${ALL_APKS}; do
         mv ${apk} $APK_PATH
      done
      
      ALL_APKS=$(ls -1 $APK_PATH/*.apk)
      echo "Output APKs: ${ALL_APKS}"
      
      # SPLIT_CONFIG_APKS=$(ls -1 split_config*.apk | sed -e 's/\.apk//g')
      
      for apk in ${ALL_APKS}; do
          echo "Decompiling ${apk}";
          apktool d -f ${apk} -o $DECOMPILE_PATH/`basename ${apk%.*}`;
          jadx -d ${JADX_DECOMPILE_PATH} ${apk}
      done
      • Bạn chỉ cần chạy lệnh sau để decode lấy mã smali và mã .java:
      pull.sh <package_name>