Данная статья является переводом соответствующей статьи Aditya Agrawal. Оригинал доступен по ссылке.

Файл AndroidManifest.xml является достаточно важной частью файла APK (особенно когда речь идёт о безопасности).

В файле AndroidManifest.xml должен быть упомянут каждый Service, ContentProvider, Activity, Broadcast Receiver.

Давайте разберёмся поподробнее в AndroidManifest.xml.

Но сначала я хотел бы рассказать о нескольких важных методах просмотра декомпилированного файла AndroidManifest.xml.

 

Метод #1: с использованием Drozer.

В Drozer есть модуль, который называется app.package.manifest, который показывает содержимое файла AndroidManifest.xml указанного приложения в консоли Drozer.
Введите в консоль Drozer run app.package.manifest org.owasp.goatdroid.fourgoats, и на экран выведется информация, приведённая ниже.

AndroidManifest.xml

[свернуть]

 

Метод #2: после декомпиляции APK-файла с использованием apktool.

Введите в консоль apktool d «OWASP GoatDroid-FourGoats Android App.apk», после чего указанный APK-файл приложения FourGoats будет декомпилирован.

Теперь вы можете просто открыть файл AndroidManifest.xml из созданной программой папки.

7-1

 

Метод #3: с использованием AndroGuard.

Используется плагин AndroGuard в Sublime Text, который который производит все действия намного проще, чем работая с файлами androguard.
Ниже приведена анимация, которая описывает данный процесс:

7-2

Я бы посоветовал придерживаться метода #1, т.к. остальные методы имеют ограниченную область применения. Я не отрицаю тот факт, что apktool и AndroGuard — тоже хорошие инструменты, но не полностью подходят для этой цели.

В Android компонент считается открытым, если атрибут exported (в AndroidManifest.xml) установлен в true. Но он также является открытым, если для него установлен атрибут intent-filter (intent-фильтр, «фильтр назначения»). Однако разработчики могут в явном виде делать компоненты закрытыми (несмотря ни на какие intent-фильтры), устанавливая атрибут exported в false. Разработчики могут также устанавливать значения атрибута permission («разрешения») для получения некоторых разрешений для отдельных компонентов, таким образом ограничивая их права.

AndroidManifest.xml (с пояснениями)

[свернуть]

Надеюсь, что я доступно объяснил, что из себя представляет файл AndroidManifest.xml.