Внедрение APK, повторная компиляция андроида

Что я хотел бы достичь

Декомпилируйте AndroidManifest.xml, упакованный в apk из двоичной формы в обычный xml файл, отредактируйте его и перекомпилируйте обратно в двоичный файл, приемлемый для apk. В основном мне нужен драйвер для файлов AXML

Короткий фон

Я работаю над проектом инъекции APK. Моя цель

  1. Разберите dalvik двоичный
  2. Прочитайте файл AndroidManifest xml и добавьте в него изменения, например, измените основное действие и добавьте разрешения
  3. перестроить и подписать файл apk

Я использую apktool для сборки и разборки apk. Однако инструмент apk работает только с параметром --no-res, если apk не разбирается с ресурсами, которые он не может восстановить. Вот проблема github, описывающая эту ошибку.

Эта проблема

Поскольку я apktool d --no-res app-debug.apk без флага res, apktool d --no-res app-debug.apk манифест android появляется в двоичной форме. Я могу разобрать манифест, используя apktool но я не могу его восстановить.

Что я хочу сделать

Мне нужно:

  • Найдите способ разобрать манифест, а затем собрать его обратно в двоичную форму
  • Найти способ использования apktool с ресурсами

То, что я пробовал до сих пор

  • Заменив бинарный файл AndroidManifest.xml на версию с открытым текстом, а затем выполните сборку. apktool будет строить. Однако при установке приложения на устройство происходит сбой "Ошибка анализа при возникновении проблемы при разборе пакета".
  • Использование различных версий apktool: v2.3.2, v2.3.1, v2.3.0, v2.2.0, v2.2.1, v2.2.2
  • Компиляция axml с использованием следующих проектов: https://github.com/rednaga/axmlprinter; https://github.com/ZaratustraN/axml-parser; https://github.com/shazam/axmlparser

отказ

Хотя stackoverflow - это сообщество для обмена знаниями, а не суждение о том, для чего он используется, - я вижу, что многие люди выбирают других в подобных вопросах с обвинениями в незаконной деятельности.

То, что я делаю, абсолютно законно и не будет использоваться для кого-либо.

Ответ 1

Единственный надежный способ, который я обнаружил, чтобы переупаковать приложение с открытым текстом androiod manifest, - это переупаковать его с помощью aapt напрямую.

aapt package -f -M ./AndroidManifest.xml -S res1/ -S res2/ ... -I android.jar -F MyProject.apk.unaligned

Чтобы создать apk, а затем:

aapt add -f MyProject.apk.unaligned classes.dex

Добавить скомпилированные источники в пакет.

Затем, используя jarsigner для подписи пакета:

jarsigner -storepass <keystore password> -keystore <keystore filename> MyProject.apk.unaligned <key name>

Ответ 2

При установке может возникнуть ошибка синтаксического анализа при следующем условии, см., Если кто-либо встретился с вами -

  • Имя пакета изменяется после подписания: используйте точное имя в качестве подписанного пакета (вместо этого отредактируйте имя в манифесте)
  • Пакет. скомпилирован на более высоком уровне API: Исправьте уровень API в файле манифеста.
  • Пакет выполняется с SD-карты: Запустите (установите) apk -file из памяти телефона или используйте команду adb для ее установки.

Вы можете вручную подписать свой apk, как указано здесь.