Перейти к содержимому

Как редактировать приложения на андроид

  • автор:

Как отредактировать чужой апк в Android Studio?

Читал, что для работы с приложениями, точнее, над приложениями, используют прогу под названием Android Studio. Но не знаю, как. И плюс было бы круто если бы был способ обойтись без компа, т.е. сделать все с мобилы Моей целью является «подправить» название пакейджа файла, а заодно и номер версии. Дело в том, что у меня на самсунге камера ну капец лагучая, а вот сторонний софт — очень даже ниче так. И вот я вытащил 2 апк файла, у одного имя com.sec.android.camera, у другого net.sourceforge.opencamera. Я хочу в OpenCamera’вском манифесте поменять имя пакета и изменить версию, чтобы накатом «обновить» системную камеру до сторонней.

Отслеживать
задан 22 мар 2022 в 13:06
3 1 1 серебряный знак 4 4 бронзовых знака

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Тогда можно просто скачать исходники с SourceForge и в gradle.build изменить package на нужный Вам. Плюс в манифесте и коде надо автозаменой найти всё связанное с net.sourceforge.opencamera .

Но поверх стандартного приложения оно не встанет, см. в конце ответа.

А ниже общая информация по модификации APK:

Android Studio обычно используется для создания и сборки приложений при наличии исходного кода.

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

  • Ресурсы ( res/* ),
  • Код приложения ( smali/ , smali_classes2/ . ),
  • Двоичные файлы ( assets/ ),
  • Библиотеки, если есть ( lib// ),
  • Файлы другого типа, манифест и инфа для apktool ( other , AndroidManifest.xml и apktool.json соответственно).

При этом привычного Java-кода Вы там не встретите, classes.dex «конвертируется» в Smali — это по сути, ассемблер для Android. Чтобы с таким кодом работать, нужно знать его устройство.
А ресурсы и манифест можно спокойно редактировать.

Пакет можно менять и вручную, заменяя все вхождения в manifest.xml и smali, но лучше пользоваться патчерами по типу Batch ApkTool + плагин AllInOne:

  • Декомпилировать,
  • Запустить AllInOne,
  • Поставить ✓флажок на «Клонировать APK»,
  • Ввести имя пакета,
  • Рекомпилировать,
  • Подписать.

Но без root-прав камеру поверх стандартной поставить не получится, т.к. не будут совпадать подписи!
Нужно будет применять патч на проверку подписи в packagemanager, например, через LuckyPatcher: Инструменты -> Настройки Xposed -> Включить 2 и 3.

Модификация исходного кода android-приложения с использованием apk-файла

Так уж получилось, что приложение для чтения комиксов и манги, которое я использую на своем android-смартфоне, после обновления стало показывать рекламу в конце каждой главы комикса. Данное приложение пару лет назад было доступно на Google Play (платная версия которого и была мной куплена), но было удалено в силу «нарушения авторских прав», после чего ушло в подполье и стало распространятся через сайт разработчика. Увы, достойных альтернатив этому приложению на android и iOS я не нашел, но и смотреть рекламу особо не было желания, тем более я уже покупал версию без рекламы. Сам разработчик почему-то не сделал возможности отключить ее, а на просьбы добавить такую возможность не отозвался. Поэтому пришлось искать альтернативные методы ее отключения. Первое, что пришло в голову, это то, что android-приложения пишутся на java, а значит есть вероятность, что автор не обфусцировал свое приложение и его можно попытаться декомпилировать. Немного подумав, я приступил к работе.

Для начала был загружен сам apk-файл приложения. Затем недолгий поиск по интернету привел меня на сайт http://www.decompileandroid.com/. С его помощью можно было загрузить apk-файл с приложением и на выходе получить набор исходников. Увы, декомпиляция в java-классы происходит не совсем идеально и поэтому восстановить полностью сам проект приложения в IDE(Idea) у меня не получилось, но это позволило проанализировать саму структуру проекта и разобраться как он примерно работает. После проведения анализа, было найдено два перспективных метода в классе BaseReaderFragment.javaplaceAdViewIfNeeded и removeAdViewIfNeeded.

Код метода placeAdViewIfNeeded:

if (adViewPlaced || adView == null) < return; >else

Самое простое, что пришло на ум после чтения кода, это убрать все лишнее, и оставить лишь вызов return;

Но, как уже было сказано, даже если бы я изменил в java-классе что-либо, я бы не смог в итоге скомпилировать приложение в IDE. Поэтому пришлось искать альтернативу. Оказалось, что smali-файлы, которые создаются в процессе декомпиляции, позволяют также после внесения нужных изменений, вновь собрать модифицированное приложение. Увы, сайт, что был приведен выше, позволял лишь получать исходники, но не собирать новые. Поэтому пришлось искать способы сделать это самостоятельно.
Была найдена утилита ApkTools, которая позволяла декомпилировать и компилировать apk-файлы. Кроме того, потребовалась утилита aapt.exe, которая была взята мной из стандартного SDK под андроид в папке android-sdk\build-tools\20.0.0.

Для удобства вызова утилиты из под windows был создан скрипт apktool.bat:

@echo off set PATH=%CD%;%PATH%; java -jar "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9 

Для декомпиляции приложения были выполнены команды:

apktool if .apk apktool d .apk 

После чего, в полученных исходниках был найден файл BaseReaderFragment.smali и нужные нам методы были изменены следующим образом:

.method protected placeAdViewIfNeeded(Landroid/view/ViewGroup;)V .locals 3 .param p1, "layoutAds" # Landroid/view/ViewGroup; .prologue const/4 v2, -0x2 return-void .end method .method protected removeAdViewIfNeeded(Landroid/view/ViewGroup;)V .locals 1 .param p1, "layoutAds" # Landroid/view/ViewGroup; .prologue .line 149 const/16 v0, 0x8 return-void .end method 

Далее пришла очередь сборки apk-файла из исходников.

Сделать это можно cледующей командой:

apktool b

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

Распаковываем архив, выполняем команду:

java -jar signapk.jar certificate.pem key.pk8 .apk .apk 

Полученный apk-файл можно загружать на телефон, чтобы проверить наше модифицированное приложение. Однако в процессе тестирования изменений оказалось, что объявления больше не показываются, однако сама страница для их показа создается, что не очень приятно. Снова был проанализирован код приложения, найден класс BaseSeamlessReaderFragment, а в нем метод appendPages.

В нем было видно, что строчка:

addPage(new MangaPage(i - 1, null, chapteritem, true), false); 

создает дополнительную страницу, помимо тех, что есть в главе манги, с параметром, отвечающим за показ объявлений. Было решено удалить эту строчку и посмотреть результат. Снова заглядываем в аналогичный smali-файл(BaseSeamlessReaderFragment$4) и удаляем строчку:

invoke-virtual , Lorg/mangawatcher/android/fragments/BaseSeamlessReaderFragment;->addPage(Lorg/mangawatcher/android/fragments/BaseSeamlessReaderFragment$MangaPage;Z)V 

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

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

  • android
  • декомпиляция
  • разработка под android
  • reverse engineering
  • Информационная безопасность
  • Разработка под Android

APK чем открыть и как редактировать?

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

Что такое APK файл? ↑

APK — формат операционной системы Android, использующийся для архивных исполняемых файлов-приложений, причем название самого файла может быть любым, а вот расширение должно выглядить только так .apk. Аналогами APK в других ОС являются в Windows .msi, в Symbian — .sis, в Linux — .rpm или .deb.

Смотрим что внутри
По сути .apk это ZIP архив, поэтому посмотреть на внутреннее устройство можно воспользовавшись любым файловым менеджером или архиватором, например WinRAR или мобильным приложением X-plore.

При этом стоит помнить что вы получаете лишь визуальный доступ к внутренним ресурсам, возможности редактирования крайне ограничены.

  • AndroidManifest.xml — это своего рода «паспорт» приложения из которого можно узнать все основные моменты, требования, версию, разрешения и прочее.
  • META-INF этот фаил содержит метаданные, то есть данные о данных, контрольные суммы, пути к данным, пути и контрольные суммы ресурсов, сертификаты. Открыть этот фаил можно любым текстовым редактором, но рекомендуется использовать Notepad++.
  • Папка res содержит все ресурсы программы, графические, такие как иконки, картинки, текстовые, элементы графического интерфейса. Получить доступ к папке так же можно без труда.
  • classes.dex — непосредственный программный код приложения, выполняемый виртуальной машиной Dalvik VM, увидеть что внутри этого файла можно лишь декомпилировав .apk, об этом мы расскажем в других статьях. resources.arsc -скомпилированный файл XML, данный фаил содержит данные о всех ресурсах задействованных в программе.
  • lib — папка с нативными библиотеками, получить доступ к ресурсам которой можно лишь при использовании специализированных программ. Так же в APK могут встречаться такие файлы и папки как com, org, udk, но далеко не всегда.

Теперь рассмотрим внутреннюю структуру более подробно для этого нам понадобиться программа для декомпиляции, Java и АПК-файл. Основным инструментом для разборки .apk является Apktool, но данная программа работает только со строки, что не очень удобно. Для более быстрого и удобного разбора можно использовать APKing, это все та же Apktool, но с возможностью работы из контекстного меню.

И так устанавливаем APKing как любое приложение для Windows и выбрав .apk нажимаем на него правой клавишей мыши и одновременно Shift, после чего увидим следующее:

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

Открыв папку мы получим доступ ко всем ресурсам АПК файла.

Теперь все текстовые файлы можно редактировать, при этом соблюдая основные правила, можно использовать популярную программу Notepad++, для примера рассмотрим AndroidManifest.xml

Редактировать подобные ресурсы можно как обычный текстовый фаил.

После применения изменений необходимо собрать и подписать АПК. Нажимаем на папку с ресурсами правой кнопкой и Shift, выбираем скомпилировать и подписать, после завершения программа создат готовый файл в папке dist.

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

Редактирование приложений

После публикации приложения в Google Play его нельзя сделать платным или, наоборот, бесплатным и невозможно удалить навсегда. Удаление приложения лишь означает, что оно удаляется из Google Play, но никак не из консоли разработчика, и пользователи не смогут его установить. Все уже установленные на устройствах людей приложения остаются на месте. Разработчик по прежнему имеет доступ к статистике удалённого приложения, может отредактировать его описание и опубликовать повторно.

Чтобы скрыть удалённые приложения в консоли выберите «Фильтровать» и поставьте галочку напротив пункта «Удаленные». Таким образом вы уберёте из списка все удалённые приложения, но оставите возможность возвращаться к ним при необходимости через отключение фильтра.

Скрытие удалённых приложений

Скрытие удалённых приложений

Для редактирования любого приложения перейдите во вкладку «Все приложения» и щёлкните по названию. Откроется панель, похожая на то, что вы видели при добавлении приложения. Соответственно, можно изменить содержимое — отредактировать описание, изменить скриншоты, иконки и т.д. Кроме того, доступна статистика, где можно посмотреть количество установок, версию Андроида, страны и другую информацию.

Статистика

Во вкладке «Финансовая информация» доступны сведения о доходах и продажах приложения. Естественно, данные будут только для платных приложений или тех, внутри которых реализованы продажи.

Во вкладке «Оценки и отзывы» доступно число оценок пользователей, распределение оценок и средняя оценка, а также отзывы. На любой отзыв можно ответить.

Отзывы

Вкладка «Сбои и ANR» показывает все возникшие у пользователей проблемы с вашим приложением. ANR означает, что приложение перестало отвечать на запросы. Такие отчёты нужны для устранения имеющихся багов или нахождения ещё не выявленных.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *