Как: Декомпилировать Android APK и включать функции в разработке в некоторых приложениях

Если вы следили за нами (или нашими друзьями на паре Android-блогов), вы, вероятно, знаете о небольшой вещи, которую мы делаем, под названием APK Teardowns. По сути, мы реверсируем приложения Google — такие как Allo, Duo, приложение Google Phone и другие — и показываем вам фрагменты кода (в большинстве случаев строки из файла strings.xml), которые могут указывать на будущие функции. В последнее время мы также нашли способы активировать невыпущенные функции в некоторых приложениях.

Но то, как именно это делается, до сих пор не было широко освещено, и вы можете быть удивлены, узнав, что это на самом деле довольно простой процесс…

Декомпилируйте APK, чтобы найти строки в strings.xml

Скачайте APK Tool

Первый и самый простой инструмент, который вам нужен для разбора APK — это APK Tool, бесплатное небольшое приложение, которое позволяет быстро и легко реверсировать Android APK-файлы. Вы можете использовать его практически для любого Android-приложения, включая те, которые не от Google. Вы можете найти ссылку для скачивания APK Tool здесь, а также нажать на ссылку «Current Version» в правом верхнем углу страницы, чтобы скачать последнюю версию.

Реклама — прокрутите дальше, чтобы узнать больше

Примечание: Если у вас есть опыт разработки, вы, вероятно, заметите, что это .jar-файл, и в сочетании с документацией по приложению на его веб-сайте вы будете знать, как его использовать. Если это про вас, вы можете перейти к разделу об активации невыпущенных функций в приложениях Google. Если нет, читайте дальше.

Как использовать APK Tool

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

1. Установите Java

Для тех, кто только начинает заниматься разработкой и копаться в Android-приложениях, вероятно, будет хорошей идеей установить Java Runtime Environment и Java SE Development Kit. Вам нужно будет убедиться, что вы установили правильные версии для вашей операционной системы. Для этого руководства мы будем использовать устройство macOS.

2. Настройте свою среду

Этот шаг просто облегчает объяснение и не является обязательным, если вы знаете, что делаете.

Создайте папку на вашем рабочем столе под названием «teardowns» (или что-то другое, что вам понравится). Перетащите .jar-файл APK Tool (он должен называться примерно apktool_2.2.4.jar) в эту папку. Переименуйте .jar-файл APK Tool во что-то простое, например, «apktool.jar», для упрощения ввода команд (позже).

3. Скачайте APK, который вы хотите декомпилировать

Скачайте APK, который вы хотите разобрать с APKMirror. Переименуйте его во что-то более простое, например, «allov9.apk» (тоже не обязательно, но, надеюсь, сделает ввод команды для запуска APK Tool немного менее запутанным). Перетащите .apk-файл приложения в ту же папку, что и файл apktool.jar. Когда все будет на месте, это должно выглядеть так:

4. Запустите APK Tool

На Mac или Linux откройте приложение Terminal (вы можете использовать Spotlight, чтобы быстро его найти).

Перейдите в каталог, содержащий оба вышеуказанных файла. На Mac вы можете использовать команду «ls» (введите «ls» и нажмите Enter), чтобы просмотреть файлы в текущем каталоге, и команду «cd», чтобы перейти в папку, находящуюся в текущем каталоге.

Например, если ваша папка «teardowns» (или как вы решили ее назвать в шаге 2 выше) находится на вашем рабочем столе, вам, скорее всего, потребуется открыть Terminal, ввести «cd desktop» (Enter), а затем «cd teardowns» (Enter). После этого вы должны увидеть, что находитесь в нужном каталоге.

(На ПК вам нужно будет использовать команду «dir» для просмотра текущего каталога и ту же команду «cd» для перехода в каталог с вашим .jar-файлом APK Tool.)

Отсюда вы можете ввести команду для декомпиляции приложения. Эта основная команда для декомпиляции Android APK выглядит так, а варианты этой команды вы можете найти на веб-сайте APK Tool:

java -jar apktool.jar d allo.apk

После этого вы должны увидеть новую папку, содержащую декомпилированное приложение.

5. Перейдите в strings.xml

Большинство самой интересной информации можно найти в файле strings.xml. И способ, которым мы узнаем, что нового, — это сравнение файла strings.xml недавно выпущенной сборки приложения с ранее выпущенными файлами strings.xml. Файл strings.xml находится в каталоге /res/values/.

Активация невыпущенных функций

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

1. Получите root-доступ к своему устройству

Первое, что вам нужно сделать, прежде чем вы сможете активировать функции в разработке, — это получить root-доступ к своему устройству. В этом кратком руководстве не хватает места, чтобы рассказать, как получить root-доступ для всех устройств (конечно), поэтому вам придется поискать это самостоятельно. Но само собой разумеется, что получить root-доступ будет намного проще, если у вас есть дружественное к разработке устройство, такое как Nexus 6P или Google Pixel.

2. Установите приложение для управления файлами, например Solid Explorer

После того, как вы получили root-доступ к своему устройству, вам нужно установить приложение для управления файлами. Мы предпочитаем использовать Solid Explorer File Manager, который можно найти в Play Store бесплатно. Хотя полные функции после пробного периода стоят немного.

3. Перейдите в data/data/

Из root вы будете использовать Solid Explorer (или любой другой выбранный вами файловый менеджер) для перехода от root к data/data. Там вы увидите список установленных приложений, и вам нужно выбрать то, для которого вы хотите активировать функции. В данном случае мы возьмем в качестве примера приложение Phone и активацию плавающего пузырька, о котором мы рассказывали на прошлой неделе. Поэтому мы перейдем в com.google.android.dialer, что соответствует приложению Google Phone.

4. Перейдите в shared_prefs & измените значения

Отсюда перейдите в shared_prefs и просмотрите XML-файлы внутри, чтобы найти функции, которые могут быть достойны активации. Как вы можете видеть ниже, мы перешли к файлу dialer_phenotype_flags.xml и нашли булево значение, связанное с return_to_call_bubble. Все, что мы сделали, чтобы активировать функцию, — это изменили булево значение с «false» на «true» и сохранили файл.

5. Принудительно перезапустите приложение

После того, как вы просмотрели файлы в shared_prefs и активировали нужные функции (обратите внимание, что некоторые значения имеют другие типы; это не всегда будет булево значение false/true), все, что вам нужно сделать, это сохранить файл, вернуться к лаунчеру и принудительно закрыть приложение (удалить его из многозадачности). Просто перезапустите приложение, и вы можете обнаружить, что новая функция активирована. Конечно, это требует много усилий и проб и ошибок, и именно поэтому мы будем продолжать делать это для вас.

Заключение

Разбор приложений для поиска строк, намекающих на будущие функции, а теперь и фактическая активация некоторых из этих функций для их просмотра в действии — это технически довольно тривиальный процесс. Все, что вам нужно, — это доступ к новой версии приложения для просмотра строк и рутованный телефон для активации некоторых функций в разработке. Но это не тривиальное количество терпения и навыков, которое требуется для тестирования десятков функций, чтобы увидеть, что они делают, и интерпретировать, что они могут означать.

Оставайтесь на связи с 9to5Google, поскольку мы продолжаем стремиться первыми сообщать вам новости. Чтобы ознакомиться с последними разборами, перейдите к разделу «Teardown».