We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Массовая автоматизация реверс‑инжиниринга APK‑файлов через Termux: использование apktool, jadx и custom‑скриптов

Termux — это удобная среда для работы на Android, которая позволяет запускать консольные инструменты анализа и сборки. В задачах исследований приложений часто возникает потребность в массовой обработке APK: извлечь ресурсы, понять структуру, быстро просмотреть код и зависимости. В этой статье мы разберём подход к автоматизации реверс‑инжиниринга APK через Termux с использованием apktool, jadx и собственных сценариев. Акцент — на организацию рабочего процесса, повторяемость и соблюдение требований законодательства и условий использования исходных материалов.

Важно: любые действия с APK должны выполняться в рамках закона РФ и при наличии прав на анализ конкретного ПО (например, если это ваш проект, вы имеете разрешение правообладателя или исследование допускается условиями лицензии).

Что именно автоматизируем

Под “массовой автоматизацией” обычно понимают следующий конвейер:

  • Сбор входных файлов: подготовка папки с APK (или их выборка по шаблону имени).
  • Извлечение ресурсов и манифеста с помощью apktool (ресурсы, ресурсо‑строки, структуры XML).
  • Разбор Java/Kotlin кода с помощью jadx (генерация псевдокода/представления классов для навигации).
  • Структурирование результатов по папкам (например, “appname/version/date”).
  • Логирование (что обработано, какие ошибки возникли).
  • Повторяемость: одинаковые команды и параметры для каждого APK.

Технически это реализуется через bash‑скрипты в Termux и работу с каталогами и файлами.

Подготовка Termux и базовая настройка рабочего пространства

Рекомендуется заранее создать структуру папок, чтобы скрипты были стабильными и не ломались при смене контекста.

# Создаём папки для входных APK, результатов и логов
mkdir -p ~/workspace/apk_in
mkdir -p ~/workspace/apk_out
mkdir -p ~/workspace/apk_logs

Далее поместите APK в ~/workspace/apk_in. Для корректной работы убедитесь, что файлы доступны Termux (через файловый менеджер или копирование).

Установка apktool

apktool обычно запускают как Java‑приложение. На практике в Termux требуется наличие Java и установка самой утилиты.

Пример типового сценария (точные команды установки Java и apktool могут отличаться в зависимости от версии репозиториев):

# Примерно: обновление пакетов
pkg update && pkg upgrade -y

# Установка Java (как правило, требуется для apktool)
pkg install -y openjdk-17

# Установка утилиты apktool:
# В некоторых случаях apktool ставят через пакетные менеджеры,
# в других — скачивают jar и запускают командой java -jar.
# Для ясности ниже — вариант с jar-файлом (если у вас он уже есть).
# Пример (путь и способ могут отличаться):
# curl -L -o ~/apktool.jar "URL_на_apktool.jar"
# chmod +x ~/apktool.jar

Если вы используете jar‑подход, удобно будет завести переменную в скриптах. Например, путь к файлу apktool.jar хранить в переменной.

Установка JADX

JADX часто используют как утилиту, которая запускается из терминала и генерирует разбор в папку. В зависимости от версии инструмента и способа установки (пакет/архив) команды могут отличаться.

Практическая рекомендация: используйте тот способ установки, который даёт вам исполняемый jadx (в PATH) или понятный путь к исполняемому файлу. Далее в скриптах вы будете вызывать его по этому пути.

Логика конвейера: как структурировать результаты

Чтобы массовая обработка была удобной, результаты лучше организовать так, чтобы вы могли быстро найти:

  • папку проекта (одна APK — одна папка);
  • подпапки для ресурсов и для кода;
  • логи по каждому APK;
  • итоговые артефакты (например, декодированные ресурсы и дерево классов).

Ниже — пример структуры:

~/workspace/apk_out/
  app1_2026-06-05/
    resources/        (apktool output)
    code/             (jadx output)
    meta/
      apk_info.txt
~/workspace/apk_logs/
  app1_2026-06-05.log

Пример custom‑скрипта: массовая обработка APK

Ниже представлен шаблон bash‑скрипта для Termux. Он:

  • обходит APK в ~/workspace/apk_in;
  • создаёт папку для каждого приложения;
  • запускает apktool для ресурсов;
  • запускает jadx для представления кода;
  • пишет лог в ~/workspace/apk_logs.

Вам потребуется подставить корректные пути к apktool.jar и к исполняемому jadx.

# Файл: ~/workspace/run_mass_apk.sh
# Редактируйте переменные TOOL_APKTOOL_JAR и JADX_BIN под вашу установку.

#!/data/data/com.termux/files/usr/bin/bash
set -euo pipefail

IN_DIR="$HOME/workspace/apk_in"
OUT_DIR="$HOME/workspace/apk_out"
LOG_DIR="$HOME/workspace/apk_logs"

mkdir -p "$OUT_DIR" "$LOG_DIR"

TOOL_APKTOOL_JAR="$HOME/apktool.jar"
JADX_BIN="$HOME/bin/jadx"  # или просто "jadx", если он в PATH

DATE_TAG="$(date +%F)"

shopt -s nullglob
for apk_path in "$IN_DIR"/*.apk; do
  apk_file="$(basename "$apk_path")"
  base_name="${apk_file%.apk}"

  run_dir="$OUT_DIR/${base_name}_${DATE_TAG}"
  resources_dir="$run_dir/resources"
  code_dir="$run_dir/code"
  meta_dir="$run_dir/meta"

  mkdir -p "$resources_dir" "$code_dir" "$meta_dir"

  log_file="$LOG_DIR/${base_name}_${DATE_TAG}.log"

  {
    echo "== Processing: $apk_file =="

    # 1) Логику декомпозиции ресурсов задаём через apktool
    # Для apktool: пример — decode (используется режим декодирования ресурсов)
    # Варианты параметров зависят от версии apktool.
    echo "-- apktool: decode resources"
    java -jar "$TOOL_APKTOOL_JAR" decode -f "$apk_path" -o "$resources_dir"

    # 2) Разбор кода через JADX
    echo "-- jadx: decompile/parse code"
    # Параметры могут отличаться в зависимости от версии JADX.
    # Обычно указывают входной файл и выходную папку.
    "$JADX_BIN" -d "$code_dir" "$apk_path"

    echo "-- Done: $apk_file"
    echo
  } >"$log_file" 2>&1

  echo "Processed $apk_file -> $run_dir (log: $log_file)"
done

Сделайте файл исполняемым и запустите:

chmod +x ~/workspace/run_mass_apk.sh
~/workspace/run_mass_apk.sh

Если у вас много APK, стоит учитывать время работы и нагрузку на устройство. При необходимости можно добавлять обработку “по одному” с паузами или параллелизмом (но параллелизм на Android часто приводит к нестабильности из‑за памяти).

Ускорение и устойчивость: полезные практики

  • Идентификаторы запусков: используйте дату/таймштамп, чтобы результаты не перетирались.
  • Повторная обработка: можно добавлять проверку, существует ли целевая папка, и пропускать уже обработанные APK.
  • Логи на каждый APK: так проще диагностировать проблемы точечно.
  • Контроль места: декомпиляция и разбор ресурсов иногда дают большой объём данных.
  • Согласованность версий: фиксируйте версии apktool и jadx (или хотя бы фиксируйте способ установки), чтобы поведение не менялось от “запуска к запуску”.

Пример расширения: пропуск уже обработанных файлов

Если вы хотите, чтобы скрипт не перерабатывал APK, для которых уже создана папка результата, добавьте проверку в начале цикла.

# Внутри цикла перед созданием run_dir:
if [ -d "$run_dir" ]; then
  echo "Skip (already exists): $apk_file" >> "$LOG_DIR/summary_${DATE_TAG}.log"
  continue
fi

Локальная сеть и коллективная работа (опционально)

Если вы ведёте анализ в команде и хотите, чтобы инструменты/файлы были доступны другим устройствам в вашей локальной среде, можно организовать локальную сеть (например, через точку доступа). Это относится к созданию локального контура для обмена данными и рабочего процесса и не предназначено для обхода блокировок.

О правовых аспектах и этике исследователя

Реверс‑инжиниринг может подпадать под ограничения в зависимости от того, что именно вы делаете и к каким материалам обращаетесь. Для легальности важно следовать принципам:

  • анализируйте только те APK, на которые у вас есть право (ваши проекты, лицензированные исходники, разрешение правообладателя);
  • не используйте автоматизацию для несанкционированного извлечения закрытых данных или подготовки противоправных действий;
  • соблюдайте условия лицензий используемых инструментов (apktool, jadx) и правила распространения результатов.

Если вы планируете коммерческое использование результатов анализа, желательно заранее согласовать правовой контур и формат применения.

Заключение

Массовая автоматизация работы с APK в Termux через apktool и JADX — практичный способ ускорить исследовательские задачи: декодировать ресурсы, получить представление кода, разложить результаты по структуре папок и вести аккуратные логи. Ключ к стабильности — продуманный конвейер, единообразные параметры инструментов, корректная организация каталогов и внимание к правовым аспектам.

Если вам нужна консультация по настройке Termux‑рабочей станции, подбору инструментов, отладке скриптов и организации процесса анализа под ваши требования, обращайтесь в РыбинскЛАБ. Мы поможем выстроить рабочий пайплайн и повысить эффективность ваших исследований.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен и доработан перед публикацией.

Нужна помощь с настройкой Termux, Linux и серверов?

Я оказываю ИТ-услуги: настройка серверов, автоматизация, безопасность, помощь с Linux и инфраструктурой. Материалы сайта — только в ознакомительных и образовательных целях.

Связаться со мной
Поддержать проект