APK инъекция, перекомпиляция Android манифеста
Чего бы я хотел достичь
Декомпилируйте файл AndroidManifest.xml, упакованный в apk, из двоичного файла в обычный xml-файл, отредактируйте его и перекомпилируйте обратно в двоичный файл, приемлемый для apk. В основном мне нужен драйвер для файлов AXML
Короткий фон
Я работаю над проектом внедрения APK. Моя цель
- Разберите двоичный файл далвика
- Прочитайте AndroidManifest xml и добавьте в него модификации, такие как изменение основной активности и добавление разрешений
- перестройте и подпишите файл 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 , но для этого требуется значительно больше знаний и усилий.