Как посмотреть файлы приложения
Общеизвестно, что приложения для Android распространяются в виде файлов пакетов Android Application, или файлов APK для краткости. Тем не менее, большинство людей смотрит на APK как черный ящик и понятия не имеет, как оно создано или что внутри него. Даже у большинства разработчиков приложений есть только поверхностное понимание анатомии APK. В интегрированных средах разработки, таких как Android Studio, требуется всего один щелчок, чтобы преобразовать проект Android в APK.
В этом уроке мы рассмотрим приложение для Android. Другими словами, мы собираемся открыть APK и посмотреть его содержимое. Кроме того, поскольку APK является двоичным файлом, предназначенным только для чтения машинами, я также расскажу вам о нескольких инструментах, которые вы можете использовать для перевода его содержимого в более удобочитаемую форму.
Предпосылки
Чтобы следовать, вам нужно:
- последняя версия Android SDK
- Android-устройство или эмулятор под управлением Android 4.4 или выше
1. Зачем заглядывать внутрь в APK?
Многие люди делают это из чистого любопытства. Другие пользуются возможностью прямого доступа к изображениям, звукам и другим активам своих любимых игр или приложений. Однако есть более важные причины, по которым вы хотели бы заглянуть внутрь APK.
Обучение
Если вы только начали изучать разработку приложений для Android, вы можете многому научиться, просматривая APK-файлы популярных приложений или приложений, созданных профессионалами. Например, просмотрев файлы макета XML приложения, которые хорошо смотрятся на нескольких размерах экрана, вы можете улучшить свои собственные навыки создания макета.
Безопасность
Приложения, загруженные из ненадежных источников, могут содержать вредоносный код. Если вы уже являетесь опытным разработчиком приложений, разобрав такие приложения, вы можете посмотреть их код, чтобы лучше понять, что они действительно делают под капотом.
2. Как создается APK?
Не так много можно узнать из APK без базового понимания того, как он создается. Фактически, наиболее важные инструменты, используемые для анализа APK, также являются инструментами, используемыми для его создания.
Проекты Android состоят в основном из исходного кода Java, XML-макетов, метаданных XML и активов, таких как изображения, видео и звуки. Прежде чем операционная система Android сможет использовать все эти файлы, их необходимо преобразовать в форму, которую она понимает. Это преобразование включает в себя множество промежуточных задач, которые обычно называются процессом сборки Android. Конечным результатом процесса сборки является APK или пакет приложений для Android.
В проектах Android Studio Android-плагин для Gradle обрабатывает все промежуточные задачи процесса сборки.
Одной из первых важных задач является создание файла с именем R.java. Это файл, который позволяет разработчикам легко получать доступ к макету проекта и ресурсам в своем Java-коде с помощью числовых констант. Для создания файла используется инструмент под названием aapt, который является коротким для Android Asset Packaging Tool. Инструмент также преобразует все ресурсы XML вместе с файлом манифеста проекта в двоичный формат.
Все файлы Java, включая R.java, затем преобразуются в файлы классов с использованием компилятора Java. Как вы уже знаете, файлы классов состоят из байт-кода, который может быть интерпретирован механизмом выполнения Java. Однако Android использует специальный тип Android runtime (ART), который оптимизирован для мобильных устройств. Поэтому, как только все файлы классов были сгенерированы, инструмент, который называется dx, используется для перевода байт-кода в байт-код Dalvik, формат, который понимает ART.
После обработки ресурсов и файлов Java они помещаются в файл архива, который очень похож на файл JAR. Затем архивный файл подписывается с использованием закрытого ключа, который принадлежит разработчику приложения. Эти две операции выполняются плагином Gradle без использования каких-либо внешних инструментов. Ключ разработчика, однако, получен из хранилища ключей, управляемого keytool.
Наконец, c файлом архива делается несколько оптимизаций с использованием инструмента zipalign, чтобы убедиться, что память, которую приложение потребляет во время работы, сведена к минимуму. На данный момент архивный файл является допустимым APK, который может использоваться операционной системой Android.
3. Анализ содержания APK
Теперь, когда вы понимаете, как файлы APK создаются и используются, давайте откроем их и посмотрим на его содержимое. В этом уроке мы используем APK приложения под названием Sample Soft Keyboard, которое предварительно устанавливается на эмулятор Android. Однако, если вы предпочитаете использовать физическое устройство, вы можете так же легко использовать APK любого приложения, которое вы установили на нем.
Шаг 1: Перенос APK на компьютер
Чтобы проверить содержимое APK, вы должны перенести его с эмулятора на свой компьютер. Прежде чем вы это сделаете, вам нужно знать имя пакета и абсолютный путь APK. Используйте adb , чтобы открыть сеанс оболочки на вашем эмуляторе.
Когда вы увидите приглашение оболочки, используйте команду pm list , чтобы отобразить имена пакетов для всех установленных приложений.
Название пакета приложения, которое нас интересует, это com.example.android.softkeyboard. Вы должны увидеть его в списке. Передав имя пакета команде pm path , вы можете определить абсолютный путь APK.
Вывод команды выше выглядит следующим образом:
Теперь, когда вы знаете свой путь, вы можете выйти из оболочки и перенести APK на свой компьютер с помощью команды adb pull . Приведенная ниже команда передает его в каталог вашего компьютера /tmp:
Шаг 2: Извлечение содержимого APK
Ранее в этом уроке вы узнали, что APK - это ни что иное, как сжатый файл архива. Это означает, что вы можете использовать менеджер архива по умолчанию для своей операционной системы. Если вы используете Windows, вы можете сначала изменить расширение файла с .apk на .zip. После извлечения содержимого APK вы должны иметь возможность видеть файлы внутри APK.
Если вы разработчик приложений, многие файлы в APK должны выглядеть знакомыми. Однако, помимо изображений в папке res, файлы находятся в формате, с которым вы не можете работать без помощи нескольких инструментов.
Шаг 3: Расшифровка двоичных файлов XML
Android SDK включает в себя все инструменты, необходимые для анализа содержимого APK. Вы узнали ранее, что aapt используется для упаковки ресурсов XML во время процесса сборки. Он также может использоваться для чтения большого количества информации из APK.
Например, вы можете использовать опцию dump xmltre e для чтения содержимого любого двоичного XML-файла в APK. Вот как вы можете прочитать файл макета с именем res/layout/input.xml:
Результат должен выглядеть примерно так:
Это не XML, но благодаря отступу и ярлыкам, например N для пространства имен, E для элемента и атрибуту A, вы должны быть в состоянии прочитать его.
Шаг 4: Расшифровка строк
На предыдущем шаге вы видели, что дешифрованный XML имеет шестнадцатеричные числа вместо строк. Эти числа являются ссылками на строки в файле с именем resources.arsc, который представляет собой таблицу ресурсов приложения.
Вы можете использовать параметр dump resources для aapt для просмотра таблицы ресурсов. Вот как:
Из вывода команды вы можете определить точные значения строк, используемых в приложении. Вот запись для одного из шестнадцатеричных чисел в XML:
Шаг 5: Разборка Dalvik Bytecode
Наиболее важным файлом в APK является class.dex. Это файл, который используется во время работы приложения Android во время запуска приложения. Он содержит байт-код Dalvik, сгенерированный во время процесса сборки.
Если вы откроете classes.dasm, вы увидите, что у него есть сотни строк низкоуровневого кода, который выглядит так:
Объем информации, доступной в формате XML, меньше, но дает вам представление о классах Java, методах и полях, присутствующих в приложении.
Заключение
В этом уроке вы узнали, как создается APK и что он содержит. Вы также узнали, как использовать инструменты, доступные в Android SDK, для расшифровки содержимого файлов APK. Документации об этих инструментах не так много, но поскольку все они с открытым исходным кодом, вы можете попробовать прочитать их подробный код с комментариями, чтобы узнать о них больше.
Если вы ищете что-то более простое в использовании, вы можете попробовать использовать популярные сторонние инструменты, такие как dex2jar, который генерирует более читаемый дизассемблированный код или JADX, декомпилятор, который может генерировать Java-код.
Установили и тут же потеряли файл или программу на компьютере? Что же, и такое бывает. Рассказываем, как его отыскать на примере Яндекс.Браузера.
В статье мы показываем, как найти нужный файл или программу на примере Яндекс.Браузера. Просто подставляйте название вашего компонента вместо Я.Б., главное - обратите внимание, как осуществляется поиск элементов в вашей операционной системе.
Ищем Яндекс.Браузер в macOS
Через Launchpad
- Запускаем Launchpad, нажав на клавишу F4 или сомкнув четыре пальца на трекпаде (актуально для пользователей MacBook).
- Ищем иконку Яндекс.Браузера среди всех приложений.
Через Spotlight
- Запускаем поисковик Spotlight, нажав на сочетание клавиш Cmd + Пробел (в некоторых версиях системы вместо Cmd нужно нажимать Option ).
- Вводим в поиск название браузера.
- Нажимаем клавишу «Ввод» (Enter).
Через Finder
- Открываем приложение Finder, нажав на соответствующую иконку в панели избранных программ (Dock).
- Затем выбираем вкладку «Программы» в боковой панели слева.
- Ищем иконку Яндекс.Браузера в списке приложений.
Если вам нужен не файл запуска браузера, а его компоненты (файлы с закладкам, паролями и так далее), то делаем следующее:
- Открываем приложение Finder.
- В панели инструментов ищем вкладку «Переход» и нажимаем на нее.
- Зажимаем клавишу Option и кликаем по пункту «Библиотеки».
- Выбираем вкладку «Библиотеки» и переходим в папку YandexBrowser.
Ищем Яндекс.Браузер в Windows
Через встроенный поисковик
- Вводим туда слово Yandex.
- Нажимаем на клавишу «Ввод».
Через «Проводник»
С помощью встроенного файлового менеджера можно добраться не только до файла запуска браузера, но и других его компонентов, включая файл с закладками, паролями и другими важными данными.
Е сли Вам нужно найти EXE-файл программы в проводнике, есть быстрый способ сделать это, если у Вас есть доступ к ярлыку.
Сначала найдите ярлык, указывающий на приложение, EXE-файл которого Вам нужно найти, потому что Вам нужно будет открыть окно его свойств. Щелкните его правой кнопкой мыши и выберите «Свойства».
Если ярлык закреплен на панели задач, щелкните его правой кнопкой мыши, а затем щелкните правой кнопкой мыши его имя еще раз в меню, которое всплывает прямо над ним. В появившемся меню нажмите «Свойства».
Если ярлык находится в меню «Пуск», у Вас есть больше возможностей для перехода (и этот метод работает только с традиционными настольными приложениями Windows, а не с приложениями UWP). Щелкните правой кнопкой мыши ярлык в меню «Пуск» выберите «Дополнительно» > «Открыть расположение файла».
Откроется окно проводника, которое указывает на файл ярлыка приложения. Щелкните этот ярлык правой кнопкой мыши и выберите «Свойства».
Независимо от того, каким образом Вы открыли свойства ярлыка, появится окно свойств. Убедитесь, что Вы находитесь на вкладке «Ярлык», затем нажмите «Расположение файла».
Вы попадете прямо в папку, где содержится EXE файл приложения.
Если Вы не можете найти ярлык
Если ярлык программы, EXE-файл которой Вы хотите найти, недоступен, Вы можете просмотреть C:\Program Files или C:\Program Files (x86) на Вашем компьютере, чтобы найти основную папку программы приложения. Найдите папку с именем, похожим на название издателя программы или название самого приложения. Откройте ее, и Вы сможете найти EXE, который ищете.
В каких случаях может возникнуть ситуация, когда ваш ПК не находит решения для открытия файла? Например, вы скачали в интернете интересующий вас материал с определённым расширением, но на вашем ПК нет необходимой программы, которая работает с этим расширением.
Или компьютер спрашивает при открытии файла, какой программой вы хотите этот файл открыть, а вы вообще не имеете об этом понятия.
Начнём с того, что узнаем что такое расширение, и как определить расширение файла, который вы скачали и хотите открыть.
Расширение — это точка и несколько латинских букв после имени файла. В зависимости от настроек компьютера, вы можете видеть расширение или оно может быть скрыто.
Откроется окно, где есть информация о файле, в том числе и его тип. В данном примере файл имеет расширение .pdf
Перед нами открылся список расширений. Находим нужное расширение и жмём на него левой кнопкой.
Пролистав вниз мы найдём список программ для разных устройств, которыми можно открыть файл. Теперь мы знаем, какой программой открыть файл на компьютере. Возможно такая программа уже есть на ПК, просто нужно выбрать её в настройках для открытия файла.
Читайте также: