Создание apk-файла в android studio

Android — советы и подсказки. Разобрать, отредактировать и собрать заново APK файл проще всего с помощью APK Studio

Те, кому когда либо приходилось вносить изменения в APK файлы готовых приложений для Android смартфонов или планшетов, назовут множество инструментов, которые можно использовать для этого и самым распространенным из них будет, конечно же  — «классика жанра», программа APKTool.

Этим приложением давно и с успехом используют в своей работе моддеры и переводчики Android приложений в течение многих лет. Однако у этого проверенного годами инструмента для разборки сборки APK файлов присутствуют свои недостатки, одним из которых можно, например, назвать необходимость использования после декомпиляции приложения для редактирования его кода  дополнительного текстового редактора, такого как Notepad++

Если вы хотели бы иметь более универсальное средство, то советую вам обратить внимание на программу APK Studio

Это приложение, которое на днях обновилось до версии 4.0 можно назвать поистине универсальным инструментом для работы с аpk и .smali — APK Studio в отличие от APKTool умеет не только разбирать файлы приложений и собирать их заново, кроме этого в нем имеется встроенный редактор с подсветкой синтаксиса.

Таким образом, для того чтобы произвести изменения в Android приложении, вам не нужно будет использовать ничего другого, кроме единственной программы APKTool, установленной на вашем Windows компьютере, которую смело можно назвать «редактором APK файлов».

Скачать самую свежую версию программы APK Studio вы можете на форуме XDA-Developers в ветке его разработчика, расположенной по этому адресу.

Похожие материалы:

Ускоряем прокрутку страниц в Google Chrome с помощью скрытых настроек браузера 

Устанавливаем Веб-приложения на Android планшеты и смартфоны с помощью Firefox 

Исправить ошибку записи на карту памяти в Android KitKat можно с помощью SDFix 

Android Device Manager. Простой способ резервного копирования содержимого вашего планшета и телефона, установки/удаления программ, копирования файлов, установки рекавери, получения Root и многого другого

Структура файла APK

В заключении посмотрим на внутренности нашего apk-файла. Сразу же отмечу, что apk-файл можно открыть zip-архиватором,
например 7-Zip. Но многое останется недоступным. Лучше использовать анализатор apk-файлов от Android Studio. Далеко
ходить не надо : необходимо выбрать пункт меню «Build → Analyze APK …» (см. самый верхний скриншот). В
открывшемся диалоговом окне найти нужный пакет в файловой структуре, после чего в IDE будет открыта панель, как это
представлено на следующем скриншоте.

Интерфейс панели анализатора разделен на 2 части. В верхней части Вы видите корневую структуру apk-файла. В нижней
части можно просматривать структуру выделенного элемента верхней части.

Что сразу же бросается в глаза? Вспоминаем : в нашем примере/модуле была использована внешняя библиотека с
OSGi-фреймворком Felix org.apache.felix.framework-6.0.3.jar, расположенная в поддиректории lib
В структуре созданного пакета поддиректория lib. Все файлы внешней jar-библиотеки размещаются в корне по пакетам. Можно
предположить, что и дополнительное использование бандлов/модулей (а для чего использовать фреймворк, если не
использовать бандлы) приведет к тому, что и их содержимое также будет интегрировано в общий пакет. Таким образом, мы
лишаемся преимуществ использования OSGi-технологии при разработке приложений для android-устройств, поскольку любая
доработка отдельного модуля/бандла будет связана с обновлением всей сборки (apk-пакета). Кроме этого, отсутствует
возможность одновременного использования разноверсионных бандлов, а межмодульное взаимодействие посредством сервисов
становится «слишком дорогим» (можно и напрямую постучаться к классам бандла, зачем нам посредник-активатор). На данном
простом примере я не вижу преимуществ использования OSGi для создания многомодульного приложения.Буду признателен всем, кто опровергнет данное предположение и предложит значимое использование OSGi-технологии в
android-устройстве.

Что касается *.class’ов, то их также не будет в apk-файле. Им на смену пришли файлы *.dex .

Подписание apk-файла

Мне известно два способа подписания apk-файла:

  • С помощью
  • С помощью из состава Android SDK

Но хочу оговориться, что установить приложение сразу не получится. Дело в том, что Google Play блокирует установку приложений, у которых электронная подпись отличается от предыдущей версии. Сделано это в целях защиты от установки подложных приложений.

Поэтому «поверх» пересобранное приложение установить нельзя. Нужно предварительно удалить оригинальное и установить своё.

Либо изменить название и установить свой форк рядом с оригиналом.

Подписывание apk с помощью uber-apk-signer

Подписывание выполняется командой:

 Код bash:
  1. java -jar uber-apk-signer.jar —apks <имя проекта>/dist/<имя проекта>.apk

В результате в директории с исходным apk появится файл с именем <имя проекта>-aligned-debugSigned.apk

Это и есть наш подписанный файл.

Подписывание apk с помощью apksigner

В отличии от uber-apk-signer в этом приложении можно указать свои параметры для генерации электронной подписи.

На первой вкладке программы (Key Generator) мы создаем ключи, на второй вкладке (APK Signer) производим подписывание apk.

Для создания цифровой подписи необходимо заполнить на первой вкладке следующие поля:

  • Target File — файл хранилища ключей;
  • Password и Confirm — пароль хранилища;
  • Alias — имя ключа в хранилище;
  • Alias password и Confirm — пароль секретного ключа;
  • Validity — срок жизни ключа (в годах).

Также подпись можно проводить и из командной строки.

 Код bash:
  1. apksigner sign —ks <хранилище>.jks | —key <ключ>.pk8 —cert <сертификат>.pem параметры <имя приложения>.apk

Следующим шагом мы подписывем apk. На вкладке APK Signer нужно выбрать только что сгенерированный файл, ввести пароль хранилища, алиас ключа и пароль ключа, затем нужно выбрать файл apk и нажимаем кнопку «Sign».

Attachments:
URL File size Last modified
apktool.bat 1 kB 2022-04-15 20:06

Как открывать APK-файлы

Формат APK (сокращение от Android Package) является основным для распространения инсталляторов приложений, поэтому по умолчанию при запуске таких файлов начинается установка программы. Открыть такой файл для просмотра несколько труднее, но все так же осуществимо. Ниже мы распишем методы, которые позволят вам как вскрывать APK, так и устанавливать их.

Способ 1: MiXplorer

В MiXplorer есть встроенный инструмент для открытия и просмотра содержимого APK-файла.

  1. Запустите приложение. Проследуйте к папке, в которой находится целевой файл.
  2. Одиночное нажатие на APK вызовет следующее контекстное меню.
    Нам нужен пункт «Explore», который и следует нажать. Второй пункт, к слову, запустит процесс установки приложения из дистрибутива, но об этом ниже.
  3. Содержимое APK будет открыто для просмотра и дальнейших манипуляций.

Хитрость данного способа заключается в самой природе APK: несмотря на формат, он представляет собой модифицированный вариант GZ/TAR.GZ-архива, который, в свою очередь, является модифицированным вариантом сжатых папок ZIP.

В случае, если вы хотите не просмотреть, а установить приложение из установщика, проделайте следующее.

  1. Зайдите в «Настройки» и найдите в них пункт «Безопасность» (иначе может называться «Настройки безопасности»).
    Зайдите в этот пункт.
  2. Найдите вариант «Неизвестные источники» и поставьте напротив него галочку (или активируйте переключатель).
  3. Заходите в MiXplorer и перейдите к каталогу, где размещен пакет установщика в формате APK. Тап по нему откроет знакомое вам контекстное меню, в котором уже надо выбрать пункт «Установщик пакетов».
  4. Запустится процесс установки выбранного приложения.

Подобный инструментарий есть и во многих других файловых менеджерах (например, Root Explorer). Алгоритм действий для другого приложения-проводника практически идентичен.

Способ 2: Total Commander

Второй вариант просмотра APK-файла как архива — Total Commander, одно из самых навороченных приложений-проводников для Android.

  1. Запустите Тотал Коммандер и проследуйте к папке с файлом, который желаете открыть.
  2. Как и в случае с MiXplorer, одиночное нажатие на файл запустит контекстное меню с вариантами открытия. Для просмотра содержимого APK следует выбрать «Открыть как ZIP».
  3. Файлы, упакованные в дистрибутив, станут доступны для просмотра и манипуляций с ними.

Для установки APK-файла с помощью Тотал Коммандера проделайте следующее.

  1. Активируйте «Неизвестные источники», как описано в Способе 1.
  2. Повторите шаги 1-2, но вместо «Открыть как ZIP» выбирайте вариант «Установить».

Этот способ можно рекомендовать пользователям, которые используют Total Commander в качестве основного файлового менеджера.

Способ 3: My APK

Можно ускорить процесс установки приложений из APK-дистрибутива, воспользовавшись таким приложением, как My APK. Это продвинутый менеджер для работы как с установленными программами, так и с их инсталляторами.

  1. Включите установку приложений из неизвестных источников методом, описанным в Способе 1.
  2. Запустите Май АПК. Вверху в центре нажмите на кнопку «apks».
  3. После непродолжительного сканирования приложение отобразит все имеющиеся на устройстве APK-файлы.
  4. Найдите среди них нужный, воспользовавшись кнопкой поиска вверху справа или с помощью фильтров по дате обновления, имени и размеру.
  5. Обнаружив APK, который хотите открыть, тапните по нему. Появится окошко расширенных свойств. Ознакомьтесь с ним, если нужно, затем нажмите на кнопку с тремя точками внизу справа.
  6. Откроется контекстное меню. В нем нас интересует пункт «Установка». Нажмите на него.
  7. Запустится знакомый процесс установки приложения.

My APK удобен в случае, когда точно неизвестно местоположение APK-файла или у вас их действительно много.

Способ 4: Системные средства

Для установки скачанного APK системными средствами можно обойтись и без файлового менеджера. Делается это так.

  1. Убедитесь, что вы включили опцию установки приложений из неизвестных источников (описано в Способе 1).
  2. Воспользуйтесь браузером, чтобы скачать APK-файл со стороннего сайта. Когда загрузка будет окончена, нажмите на уведомление в строке состояния.
    Постарайтесь не удалять это уведомление.
  3. Нажатие на загрузку запустит стандартный для Андроид процесс установки приложения.

Как видите, с этим сможет справиться каждый. Аналогичным образом можно установить и любой другой APK-файл, достаточно лишь найти его на накопителе и запустить.

Мы рассмотрели существующие варианты, с помощью которых можно как просматривать, так и устанавливать APK-файлы на Андроид.

Помогла ли Вам статья?
Да
Нет

Скачивание и установка Kali Linux

Чтобы установить Kali Linux на ваше устройство, вам потребуется:

  • Загрузочный USB-диск или DVD с образом Kali Linux
  • Компьютер или ноутбук с поддержкой загрузки с USB (или DVD-привода)

Для скачивания Kali Linux, следуйте этим шагам:

После скачивания вы можете установить Kali Linux на ваше устройство. Для этого:

  1. Запишите загрузочный диск с образом Kali Linux на DVD или создайте загрузочный USB-диск.
  2. Включите компьютер и настройте загрузку с DVD или USB в BIOS.
  3. Перезагрузите компьютер с помощью загрузочного диска Kali Linux.
  4. Следуйте инструкциям на экране для установки Kali Linux на ваше устройство.
  5. После завершения установки перезагрузите компьютер и войдите в систему с использованием учетной записи Kali Linux.

Теперь у вас установлена Kali Linux и вы можете продолжить скачивание и установку apktool.

Quick Check

  1. Is at least Java 1.8 installed?
  2. Does executing java -version on command line / command prompt return 1.8 or greater?
  3. If not, please install Java 8+ and make it the default. (Java 7 will also work at this time)
  • Windows:
    1. Download Windows wrapper script (Right click, Save Link As )
    2. Download apktool-2 (find newest here)
    3. Rename downloaded jar to
    4. Move both files ( & ) to your Windows directory (Usually )
    5. If you do not have access to , you may place the two files anywhere then add that directory to your Environment Variables System PATH variable.
    6. Try running apktool via command prompt
  • Linux:
    1. Download Linux wrapper script (Right click, Save Link As )
    2. Download apktool-2 (find newest here)
    3. Rename downloaded jar to
    4. Move both files ( & ) to (root needed)
    5. Make sure both files are executable ()
    6. Try running apktool via cli
  • macOS:
    1. Download Mac wrapper script (Right click, Save Link As )
    2. Download apktool-2 (find newest here)
    3. Rename downloaded jar to
    4. Move both files ( & ) to (root needed)
    5. Make sure both files are executable ()
    6. Try running apktool via cli

    Or you can install apktool via Homebrew:

    1. Install Homebrew as described in this page
    2. Execute command in terminal (no root needed).
      The latest version will be installed in and linked to .
    3. Try running apktool via cli

Product Details

Developer: BrutSize: 19.1 MBLicense:  FreewareOS Support:  Windows 11/10/8/7/Vista/XPDownloads: 860921Version: 2.6.1VTUrl Scan: https://www.virustotal.com

Disclaimer

“Apktool” THE INFORMATION PROVIDED ON THIS WEBSITE IS PROVIDED “AS IS “All trademarks, service marks, trade names, logos and product names “Brut” used on this site are trademarks or registered trademarks “Brut”. in the US and other countries. All other company, brand and product names are trademarks or registered trademarks of their respective owners. This webpage is not affiliated with, and is not associated or sponsored by any of the trademark owners

Сборка приложения с помощью Apktool: полное руководство

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

Шаг 1: Декомпиляция приложения

Первым шагом является декомпиляция APK-файла с использованием команды Apktool. Откройте командную строку (или терминал) и перейдите к папке, в которой находится APK-файл. Затем выполните следующую команду:

Где «your_app.apk» — это имя вашего APK-файла.

Эта команда декомпилирует приложение и создаст новую папку с именем вашего приложения, в которой будут содержаться все ресурсы и исходный код.

Шаг 2: Изменение ресурсов и кода

Теперь, когда приложение декомпилировано, вы можете изменять его ресурсы и код. Навигируйтесь в папку вашего приложения и исследуйте ее содержимое. Вы можете открыть файлы ресурсов (например, XML-файлы макетов) и код Java приложения для внесения необходимых изменений.

Шаг 3: Сборка приложения

После внесения изменений в ресурсы и код необходимо выполнить сборку приложения с помощью Apktool. Для этого выполните следующую команду:

Где «your_app_folder» — это имя папки вашего декомпилированного приложения.

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

Шаг 4: Установка и тестирование

Теперь, когда новый APK-файл создан, вы можете установить его на устройство или эмулятор Android для тестирования. Просто передайте APK-файл на устройство и установите его, как обычно делаете с другими приложениями.

И вот, ваше собранное и модифицированное приложение готово для использования!

Использование Apktool позволяет изучить внутреннее устройство Android-приложений, а также предоставляет возможность модифицировать и собирать их снова. Не забывайте, что модификация приложений может быть для личного использования и не должна нарушать законы или права авторства. Удачи в изучении Android разработки!

Отладка приложений для Android без исходного кода на Java

В этой статье я сжато, без «воды», расскажу как отлаживать приложения для Android не имея их исходного кода на Java. Статья не совсем для новичков. Она пригодиться прежде всего тем кто более или менее понимает синтаксис Smali и имеет некоторый опыт в reversing engineering приложений для Android.

Инструменты

Нам понадобится NetBeans 6.8. Да-да, именно эти древние версии! С более новыми версиями отладка к сожалению «не заводится», о чем уже неоднократно упоминалось в различных обсуждениях (см. например тут и тут).

На установке подробно не останавливаюсь. NetBeans устанавливается по умолчанию, просто запускам инсталляцию и кликаем Next-Next-Next. Установка Apk-tools заключается в обычной распаковке файла apktool.jar в любую папку.

Также по ходу дела нам понадобится DDMS — он есть в Android SDK.

Отладка

В этом разделе дана пошаговая инструкция. Она писалась для Windows, но вероятно сработает и на Linux и Mac OS. Черновик этой инструкции на английском также есть у меня в блоге, но ссылку не дам, ибо правила. Эта инструкция более или менее повторяет оригинальную инструкцию с Apk-tool wiki, однако содержит некоторые дополнительные пункты, без которых отладка может «не завестись». В своё время у меня не заводилась, и я нашел эти дополнительные пункты методом усиленного гугления и «научного тыка». Надеюсь, теперь мой опыт кому-то сэкономит время.

Пожалуйста, следуйте инструкции в точности – это важно!

  1. Декодируйте свой .apk файл в директорию out с помощью Apk-tool. Для этого используйте опцию -d :

Подводные камни

Без подвоха тут конечно никак. Обычно всё идёт хорошо, строго по инструкции, аж до шага 13. А вот на шаге 13 люди часто ставят breakpoint в самом начале кода приложения: например в методе onCreate(. ) в activity с которой начинается выполнение приложения. Оно вроде бы и логично – если не совсем понятно откуда начинать отлаживать приложение, лучше начинать с самого начала. Однако в большинстве случаев дело не идёт. Отлаживаемое приложение работает себе как ни в чем не бывало, а подлый breakpoint в onCreate(. ) ни в какую не желает срабатывать.

Это происходит из-за того что мы подсоединяем отладчик к уже работающему приложению. Это значит код в начале приложения (например в том же методе onCreate в activity с которой начинается выполнение приложения) уже выполнился, и ставить на него breakpoint’ы как правило (хотя не всегда конечно) бесполезно. Более того, когда мы присоединяем отладчик к работающему приложению, оно не останавливается пока не сработает наш breakpoint или пока мы его сами не остановим – об этом моменте также стоит помнить.

В своей следующей статье я показываю трюк, который позволяет отлаживать Java приложения для Android без исходного кода с самого начала, т.е. именно с того самого первого метода onCreate(. ) (или даже конструктора) в activity с которой начинается выполнение приложения.

📚 Prerequisites

You would need basic knowledge of using the Android SDK and how an Android app is built.

Java JRE/JDK

At least Java 1.8 should be installed to use Apktool. If you intend to rebuild the app, you would need JDK to use the command and .

To check your Java version, run on command prompt. To install Java, click here.

To install JDK, click here.

Apktool

Click here to learn how to install Apktool for Windows, Linux and macOS.

If you want to use the command globally, you can install Apktool on . But if you plan to only use it for a short time, you can install Apktool on your project folder to only use it in the folder.

Apktool Online (optional)

If you only intend to decompile the app without rebuilding the app to the format, you can use Apktool online without installing Apktool on your computer.

If you intend to build the app with the changes you made, you need to install Apktool.

APK Decompiler (optional)

If you intend to analyze the source codes such as Java classes, you need to use dex2jar compiler. You can use it online from here.

Tip: I recommend using both Apktool and APK decompiler in order to trace which resource is used where and how.

Создание APK-файлов всех модулей проекта

Чтобы использовать самый простой способ создания apk-файла, выберите в Android Studio пункт меню
«Build → Build Bundle(s)/APK(s) → APK(s)», как это представлено на следующем скриншоте.

В данном случае для всех модулей проекта будут созданы apk-файлы. Здесь необходимо отметить, что apk-файлы будут без
цифровой подписи и распространению не подлежат. Но на них можно «», что мы и сделаем в
последнем разделе статьи, а также можно проверить работоспособность на android-устройстве. Загрузку apk-файла на
android-устройство мы рассмотрим в ближайшее время отдельной статьей. Также отдельной статьей я представлю процесс
создания apk-файла с цифровой подписью при выборе пункта меню «Build → Generate Signed Bundle/APK».

А сейчас Вы должны увидеть, что для всех модулей проекта создаются apk-файлы, которые располагаются в поддиректориях
проекта //build/outputs/apk/debug/. Т.е. в поддиректории модуля
build/outputs/apk/debug/ будет размещаться созданный apk-файл, наименование которого включает наименование модуля
с постфиксом «-debug». В нашем примере будет создан файл p13osgi-debug.apk.

Определение типа apk : debug-release

Постфикс «-debug», добавляемый к наименованию пакета, определен по умолчанию. Вы можете самостоятельно переименовать файл,
и он останется работоспособным. Но можно и изменить настройки. Для этого необходимо указателем мыши нажать на расположенную
в левом нижнем углу маленькую кнопочку, как это представлено на нижнем левом скриншоте. Данная кнопка открывает окно со
специальными ярлыками различных вспомогательных окон. При простом наведении указателя мыши на эту кнопку, появляется список
всех этих окон для быстрого выбора нужного.

Откроем окно Build Variants и в дополнительно открытом окне (скриншот справа) найдем модуль p13osgi (наш пример).

Если в выпадающем списке переключить режим сборки с debug на release, то будет создаваться пакет
p13osgi-release-unsigned.apk в поддиректории «build/outputs/apk/release/».

 

Попробуй apktool запустить через командную строку

На данный момент вам нужно только войти и найти apktool.bat, а затем:

Содержит некоторую базовую информацию, а также некоторые общие операции использования, такие как:

Итак, установка завершена. В следующей статье будет рассказано, как ее использовать.

В статье про изготовление копий приложений для Android я упоминал о приложении SmartAPKTool. Оно может распаковывать, запаковывать и подписывать изменённые apk-файлы. Её достоинством является наличие графического интерфейса. Однако есть и серьёзный недостаток. SmartAPKTool давно не обновлялся, и программа некорректно распаковывает и запаковывает приложения для свежих версий Android. Поэтому здесь я попытаюсь объяснить, как пользоваться для этих целей приложением apktool.

Скачаем два архива: один общий для всех систем, другой для нашей системы (в примере — Windows):

Распакуем оба архива в одну и ту же пустую папку (в нашем примере C:\apktool\ ). Её содержимое должно получиться таким:

С этого момента мы можем использовать программу apktool.

В эту же папку мы кладём тот файл, который нам нужно распаковать. Например, пусть он назвыается orig.apk Нажав клавишу Shift и удерживая её, щёлкаем правой кнопкой мыши на любом пустом пространстве папки (щёлкать не по файлам!). После этого выбираем пункт „Открыть окно команд“

В появившейся консоли набираем :

Теперь у нас в директории C:\apktool\ есть папка с распакованным приложением. Называется она так же, как и исходный файл, за вычетом расширения: C:\apktool\orig\ . Мы можем менять исходные файлы так, как описано в статье Android: как установить два одинаковых приложения на один телефон. После того, как мы сделали изменения, соберём копию приложения, запаковав исходные файлы в apk:

Здесь result.apk — имя файла, которое мы придумали для билда копии. Если ошибок нет, то файл соберётся:

Остальное выходит за рамки темы статьи:

Подписывать приложение надо обязательно, иначе оно не установится. Ошибки же встречаются не так часто, и самые распространённые вызывающие их проблемы описаны в статье Android: как установить два одинаковых приложения на один телефон.

Важное замечание по apktool версий 2.x

В версии 2.0.0-Beta7 нужно применять ключ —output , чтобы указать директорию при декомпиляции и результирующий файл при сборке:

Для того чтобы редактировать APK приложения. Прежде всего их нужно декомпилировать, а после скомпилировать! Как это сделать и чем можно узнать в этом уроке.

В прошлом уроке вы узнали из чего состоят основные внутренности приложения, а также что данные что APK приложения (в дальнейшем просто APK) можно открыть архиватором, но что либо изменить у вас не получиться! Нужна Декомпиляция APK приложения Android!

  1. Необходимые инструменты
  2. Настройка
  3. Декомпиляция приложения с помощью Apktool через командную строку
  4. Компиляция приложения с помощью Apktool через командную строку
  5. Что необходимо чтобы работать с системными APK
  6. Графические надстройки утилиты ApkTool

Установка apktool в kali linux

Apktool представляет собой инструмент, который позволяет деассемблировать и собирать файлы Android APK. В этом руководстве мы рассмотрим процесс установки apktool в kali linux.

Шаг 1: Установка зависимостей

Перед установкой apktool в kali linux необходимо установить несколько зависимостей. Откройте терминал и выполните следующие команды:

Шаг 2: Установка apktool

Далее необходимо скачать и установить apktool. Выполните следующие команды в терминале:

Теперь apktool установлен и готов к использованию. Вы можете проверить его работоспособность, выполнив команду:

Шаг 3: Настройка apktool

По умолчанию apktool использует системную директорию для временных файлов. Чтобы изменить эту настройку, создайте новую директорию и установите переменную окружения APKTOOL_TEMP_DIR, указывающую на эту директорию. Например:

Теперь apktool готов к использованию в kali linux. Вы можете деассемблировать APK-файлы следующей командой:

Кроме того, можно собрать APK-файлы следующей командой:

Теперь вы знаете, как установить и использовать apktool в kali linux. Успешной работы!

Backstory

You might be wondering what fueled this curiosity so let me explain. I was in high school and was preparing for my advanced maths exam. I had recently learned that I could use a certain app to get step-by-step solutions to my problems. I was excited. I tried the app and it worked! It only required a one time purchase fee and that was it. I had a lot of questions about how the app worked under the hood:

  • Was the processing happening on the phone?
  • Were they making any API calls?
  • If so then what were the calls?

Simple, innocent questions that led me into a rabbit hole. I tried reverse-engineering the app but couldn’t get far. I eventually decided to put the project on the back burner and come back to it once I had more time and experience. It only took 3 years, a whole lot of learning, and a renewed interest in reverse-engineering for me to come back to this project.

I decided to have a fresh start at the problem and figure out if I even need to go as far as decompiling the APK. Maybe just a simple MITM attack would be enough to snoop the API calls and craft my own?

I currently have an iPhone so I installed the Android Emulator on my Linux machine and install the app on that. Then I launched mitmproxy and started intercepting the traffic from the emulator. Whenever I made a query, this API call was made:

So far so good. No need for learning how to reverse-engineer the app. Surely I can figure out what those query parameters are? As it turns out it was extremely hard to figure out how the parameter was being generated. Everything else seemed generic enough but was dynamic and changed with a change in .

I tried modifying the input slightly just to check if the API was even checking the parameter. As it turns out, it was. The endpoint returned an invalid signature error even on the slightest change in input:

was some sort of hash but I wasn’t sure what kind or how it was being generated and now this required a little bit of reverse engineering.

Note: While trying to proxy the android emulator requests via mitmproxy, you might see the error: . To fix this, make sure you run mitmproxy with the block_global flag set to false: . You will also have to install the mitmproxy certificate on the device to decrypt the SSL traffic. Follow these instructions to do that.

Понравилась статья? Поделиться с друзьями:
Цифровой взгляд 👁
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: