Как проанализировать файл AndroidManifest.xml в .apk пакете

Этот файл, кажется, находится в двоичном формате XML. Каков этот формат и как он может быть проанализирован программно (в противоположность использованию инструмента дампа aapt в SDK)?

Этот двоичный формат не обсужден в документации здесь.

Примечание: Я хочу получить доступ к этой информации снаружи среды Android, предпочтительно от Java.

169
задан twlkyao 5 January 2014 в 13:42
поделиться

2 ответа

Используйте android-apktool

Существует приложение, которое считывает файлы apk и декодирует XML в почти оригинальную форму.

Использование:

apktool d Gmail.apk && cat Gmail/AndroidManifest.xml

Проверьте android-apktool для получения дополнительной информации

171
ответ дан 23 November 2019 в 20:51
поделиться

Вы можете использовать axml2xml.pl инструмент, разработанный некоторое время назад в рамках проекта android-random. Он сгенерирует текстовый файл манифеста (AndroidManifest.xml) из бинарного.

Я говорю "текстовый", а не "оригинальный", потому что, как и многие инструменты реверс-инжиниринга, этот не совершенен, и результат не будет полным. Я предполагаю, что либо он никогда не был полным, либо просто несовместим (с более новой схемой двоичного кодирования). Независимо от причины, инструмент axml2xml.pl не сможет правильно извлечь все значения атрибутов. Такими атрибутами являются minSdkVersion, targetSdkVersion и практически все атрибуты, которые ссылаются на ресурсы (например, строки, иконки и т.д.), т.е. корректно извлекаются только имена классов (действий, сервисов и т.д.).

Однако, вы все еще можете найти эту недостающую информацию, запустив aapt инструмент на оригинальном файле приложения Android (.apk):

aapt l -a

16
ответ дан 23 November 2019 в 20:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: