APK инъекция, перекомпиляция Android манифеста

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

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

Короткий фон

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

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

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

Эта проблема

Так как я разбираю apktool d --no-res app-debug.apk без флага res сгенерированный манифест 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

отказ

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

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

3 ответа

Решение

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

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

Чтобы создать АПК, а затем:

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

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

Затем с помощью jarsigner подписать пакет:

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

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

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

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

У меня тоже были похожие проблемы, но мне повезло с инструментом Easy APK . Я открыл приложение, затем перешел в options->apktool и проверил, не декодировать classes.dex. Затем я смог успешно перекомпилировать приложение. Другой альтернативой является использование aapt, как уже сказал Ben , но для этого требуется значительно больше знаний и усилий.

Другие вопросы по тегам