Как разобрать apk файл изменить и собрать обратно

AndroidManifest.xml

The file is put together by the build system to help inform the Android OS how to set up the
environment for the app, what platform features it will need access to, and how to launch it. The
has the following content in its (some whitespace added for readability):

In the above, the following information provides insight into which version of the Android SDK was used to
build & compile this APK (but not necessarily to run it):

The above also gives us the package name of the application, .
This can be used to find the launch application’s deconstructed files in the folder, as it will be stored
under the folder . The APK is typically bundled not only
with the application classes, but also numerous other supporting classes, often from different authors, that implement
frameworks and utility libraries that the application employs.

The following XML describes what permissions the app will be asking for permission to use:

Unlike your general purpose PC, mobile platforms initially install apps with a “least privilege” access control. Apps
must then ask the owner of the device to access various data stores and features within the phone, explicitly, for
permission, which can be denied or permitted. This information can give insight to what data that a malicious application
is programmed to steal or corrupt.

The following XML tells us that the “main” class for the application is :

Many of the other fields are for more specific features, and I won’t go into them here. However, do use the following
Android documentation to help understand what the presence of each means within the XML file above.

App Manifest Overview (Android Developer Docs)

How To Install Apktool On Kali Linux

If you are working with Kali Linux and you wish to install Apktool, let me say that Apktool is pre-installed under penetration testing applications as illustrated.

Use the following command to install Apktool on Kali with any other packages on which it depends.

It will install Apktool. To check the version of the Apktool installed, click on the Apktool in the Kali Linux application. Also, you can open a terminal and hit the command below to view the version.

How to uninstall Apktool from Kali Linux

It is possible to uninstall Apktool from Kali Linux anytime you need to. To do this, just run the following command and remove just the Apktool package itself.

Also, you can uninstall Apktool and its dependencies. So, to remove the Apktool package and any other dependant packages which are no longer needed, type:

Local/config files can be deleted by running the command below. You just need to use it with care since the Purgedconfig/data will not be restored by reinstalling the package.

OR

Recommended Article: Introducing and how to Install WOL-E on kali linux

Простой способ модификации Android приложения / Хабр

Вот и у меня появилась задача модифицировать приложение имея всего лишь его apk. И те, кто занимался декомпиляцией приложений знают насколько тяжело его потом скомпилировать.

Декомпиляция
  • ApkTool для декомпиляции ресурсов.
  • Dex2Jar для преобразования dex в jar.
  • JD-GUI для получения исходников из jar.
  • еще рекомендую JAD, некоторые места лучше декомпилирует чем JD-GUI.

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

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

Переопределение классов

Таким способом можно отнаследоваться от Activity, Service, BroadcastReceiver и, возможно, некоторых других классов объявляемых в манифесте, так же в манифесте нужно будет указать новые имена классов, иначе они не будут использоваться.

Теперь можно переопределить виртуальные функции, но и только, тем более ключевое слово final не позволит это сделать и отнаследоваться тоже, поэтому идем дальше.

Замена классов

Не все так просто, для начала нужно скомпилировать проект. Чтобы использовать классы исходного приложения нужно его как-то присоединить к проекту, но при этом не экспортировать. Делается это просто: из папки libs Эклипс сам экспортирует библиотеки, поэтому перемещаем jar библиотеку в папку lib и подключаем к проекту, в Эклипсе это Project->Preferences->Java Build Path->Libraries->Add Jars… далее во вкладке Order and Export нужно убедиться, что не установлен чекбокс, потому что экспортировать библиотеку нам не нужно, все будет в class файлах.

Теперь берем какой-нибудь класс из декомпилированных исходников приложения, исправляем в нем ошибки компиляции, добавляем, например, показ диалога, чтоб убедиться, что используется именно новый класс. Далее очищаем проект, в Эклипсе это Project->Clean, копируем class файлы в папку bin/classes, собираем проект и все работает!

При следующих сборках проекта нет необходимости его очищать, так что использовать такой способ достаточно удобно. Для облегчения исправления ошибок после декомпиляции я использовал исходники полученные из JD-GUI и JAD, обычно этого было достаточно.

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

Заключение

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

Обновление классов в jar — идея замены классов пришла из этой возможности для jar библиотеки.

apktool Tutorial to Edit APK Files

We will cover only the basics of APK file manipulation. This only includes decompilation and compilation. Anything else lies outside of the scope of this article and should be covered in a separate writing.

Related Post
How to Install APK Using ADB Commands

Decompile, Edit and Recompile APK Files

First, download the APK file which you need to decompile and edit. In this guide, we will be using the Facebook Lite App APK as an example. You can download it here.

Next, open a terminal emulator or command prompt inside the folder you downloaded the APK file to. To do this on Windows, navigate to the folder using Windows Explorer and then type CMD in the address bar as shown below. Hit enter and a command prompt window will open.

Decompiling an APK file is quite simple. You just need to issue a command in the following form:

apktool d <APK filename>

For the Facebook Lite App, this will get into:

apktool d facebook_lite_v118.0.0.9.94.apk

Apktool will create a new folder with the same name as the APK file and place all the App data inside it.

The new folder will have a structure similar to the following:

  • The res folder contains everything that has to do with translations and user interface layout.
  • The smali folder contains App source code in the smali form. Smali is a language type similar to assembly. To make any changes apart from cosmetic ones to an App, these are the files you need to mess with.
  • The unknown folder contains everything else that comes packaged inside the APK file but does not follow Google’s guidelines for APK packaging.
  • Lastly, AndroidManifest.xml is the Manifest file. This contains information like the App name and characteristics, the Intents it listens to and the Permissions it uses.

Compile APK from a Modified Source

Compiling a modified source with apktool is as simple as decompiling. You can get the job done by just issuing a command in the form:

apktool b <app_source_path>

In our example with the Facebook Lite App, this will get into:

apktool b facebook_lite_v118.0.0.9.94

That is all you need to know if you want to compile and decompile APK files for Android. Stay tuned for special guides about manipulating App icons and colors and adding or removing functionalities to your apps! Try it now and let us know if you were able to decompile and compile an APK. I just hope our apktool tutorial will help you edit APK files yourself.

Read Next
Build.prop Tweak to Improve Interface FPS on Android

Часто задаваемые вопросы

Что такое обратная разработка Android?

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

Как получить исходный код из Apk?

Переименуйте Apk из app.apk в app.zip и извлеките zip-файл в папку. Используйте инструмент JADX для чтения исходного кода, присутствующего в файле classes.dex.

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

Для того чтобы декомпилировать приложение, вам необходимо установить APK-экстрактор на ваш телефон Android. Кроме того, для этого вам понадобятся Android SDK, dex3jar и JD_GUI.

Использование apktool

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

Программа apktool не имеет графического интерфейса. Это является минусом для тех, кто не привык работать с командной строкой. Но есть и плюс: в отличие от SmartAPKTool, мы будем видеть все ошибки, а значит будем знать, что исправить.

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

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

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

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

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

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

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

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

  1. Если при сборке будут ошибки, нужно найти их причину и исправить.
  2. Осталось подписать получившийся файл result.apk . Это можно сделать с помощью SmartAPKTool, как говорилось выше; в нём всё интуитивно понятно. Есть также прочие способы подписать apk-файл.
  3. При установке копии, при её запуске или работе также могут возникать ошибки. Их нужно отлавливать с помощью утилиты adb , входящей в состав Android SDK.

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

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

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

Декомпиляция и Компиляция APK приложения Android (Видео)

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

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

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

Декомпиляция и Компиляция APK приложения Android Необходимые компоненты

  1. — среда разработки; — программа декомпилятор; — bat файл; — подпись приложения APK.

Настройка Java

После установки Java JDK , необходимо, добавить ее в переменную Windows. Если кто не понял официальное куроводство то,

Скопируйте путь Java JDK:

Перейдите в меню Дополнительные настройки:

(Мой) Компьютер ->Свойства системы->Дополнительные параметры системы->Дополнительно->Системные переменные->Правка

Java JDK настроена!

Настройка ApkTool

  1. Создать папку на диске C:\ и в нее переместить файлы apktool_x_x.jar и apktool.bat
  2. Файл apktool_x_x.jar переименовать в apktool.jar

Если появилось наподобие такой вывод информации, то все сделано правильно.

Декомпиляция APK

Чтобы декомпилировать приложение, скопируйте файл APK приложения в папку где находится apktool, далее необходимо выполнить вот что, в командной строке ввести команду:

apktool d название.apk

apktool d browser.apk

Декомпиляция APK завершена.

После того как вы отредактируете или русифицируете APK, его надо компилировать обратно.

Компиляция APK

Вводим в командной строке:

apktool b имя_проекта

После чего перейдите в папку проекта ( в данном случае папка browser) и вы увидете две новые папки:

  • build
  • dist

В папке dist будет находится готовое приложение:

Если папки dist не обнаружили, значит apktool не смог собрать редактируемый проект, причиной тому может быть то, что имения которые вы вносили(«поломали») не позволяют собрать приложение apk.

После компиляции приложения apk его необходимо подписать.

Подпись APK

  1. Для этого Вам надо разархивировать архив Sign Android;
  2. Скопировать готовое приложение в папку с распакованным Sign Android;
  3. Потянуть приложение на файл Sign_APK.bat после чего приложение будет подписано!

Готовое подписанное приложение будет носить название apk_signed.apk

Работа с системными APK

Для того чтобы модифицировать системные приложения необходимо прежде всего необходимо скормить программе APKTOOL системный файл framework -res.apk который находиться в системном разделе Android:

/system/framework/framework -res.apk

Для того чтобы скормить Apktool данный файл необходимо, ввести команду:

apktool if framework -res.apk

Учитывайте что, команду нужно вводить относительно пути расположения, то есть если файл framework -res.apk находиться в папке C:\primer, то команда будет выглядеть следующим обзором:

apktool if С:\primer\framework -res.apk

Также для того чтобы можно было модифицировать системные файлы прошивка должна быть вначале Deodex-ирована.

Теперь как это можно все упросить! (не использовать командную строку)

Скачайте приложение SmartApkTool, данное программа имеет графический интерфейс и очень легкая в использование. Автор данной программы мой хороший друг Никита Коровкин (на данный момент работает в Surfingbird)! за что ему огромное Спасибо!

Как пользоваться SmartApkTool

Прежде всего вам надо установить и настроить Java JDK и Apktool как указано выше.

Откройте программу SmartApkTool

Если Вам необходимо Декомпилировать приложение в SmartApkTool, то выберите данный пункт и необходимое приложение

Если компилировать, то

и выбрать файл в проекте apktool.yml

Для подписи приложения APK, нажать обзор, выбрать приложение и подписать

Все так легко и просто!

Зачем мне устанавливать APK файл?

Наиболее часто с помощью APK файлов распространяются последние версии приложений, которые еще не доступны в официальном магазине. Это дает вам возможность получить доступ к новому функционалу приложений еще до их публикации в Play Store. Кроме того, некоторые приложения запрещены к официальному распространению в некоторых странах, как например самая популярная ныне игра Pokemon GO.

Очень часто обновления от самой Google можно гораздо быстрее установить используя APK файлы, чем ждать официальных каналов обновления ОС Андроид

Это важно для безопасности вашего телефона на базе Андроид. И конечно же многие владельцы смартфонов попросту вообще не имеют доступа к Google Play Store

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

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

Как открыть на телефоне

Если мобильное приложение для Android платформы загружается со стороннего ресурса или компьютера, то оно будет иметь расширение apk. Тогда его можно установить на телефон вручную.

Как открыть файл apk с телефона:

  • Подключите устройство к компьютеру используя USB кабель.
  • Скопируйте АПК файл на SD карту или в память телефона.
  • Запустите проводник или «Менеджер файлов».
  • Откройте нужную директорию и запустите скопированный APK.

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

Формат АПК

Ошибка при открытии

Как разрешить установку из неизвестных источников

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

Выполните следующие действия, чтобы включить ее:

  • Перейдите в меню «Настройки» и найдите здесь категорию «Личные данные».
  • Выберите пункт «Безопасность» и поставьте галочку напротив «Неизвестные источники (разрешить установку из неизвестных источников)».
  • Запустите АПК файл и продолжайте установку.

Если ошибка появляется, то в этом же меню уберите галочку напротив «Проверять приложения». Тогда Андроид не будет запрещать установку потенциально опасных приложений, которые могут нанести вред устройству. Используйте способ только если уверены в безопасности устанавливаемого АПК файла.

Как извлечь APK

Интерфейс APK Extractor

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

Порядок действий будет следующим:

  • Откройте Плей Маркет на телефоне и введите в поиске APK Extractor.
  • Выберите приложение из списка предложенных и начните его установку.
  • Выдайте все необходимые разрешения и продолжайте процесс инсталляции.
  • Запустите APK Extractor через меню или ярлык на рабочем экране.
  • Откроется список установленных на устройстве программ, игр. Пролистайте его и найдите нужное.
  • Нажмите на значок в виде трех точек. Появится контекстное меню, где можно посмотреть описание (через пункт «Информация») выбранного.
  • Нажмите «Отправить», чтобы извлечь АПК и поделиться им с другом. Сделать это можно по Bluetooth, электронной почте или с помощью любого доступного способа.

Как извлечь апк через APK Extractor

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

Эмуляторы для запуска APK файлов на ПК

Если вы хотите установить на компьютер мобильное приложение для ОС Андроид, то файл будет иметь расширение АПК. Чтобы установить его, понадобится специальный эмулятор. Они доступны для бесплатной загрузки.

Самые популярные:

Nox App Player

Интерфейс Nox App Player

Есть предустановленный Google Play. Программа не русифицирована, но сам Android свободно переключается на русский язык через настройки (как и на телефоне). Хорошая оптимизация, есть расширенные настройки для работы с АПК файлами.

Andy

Интерфейс Andy

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

Bluestacks

Интерфейс BlueStacks

Отличается хорошей производительностью в играх и позволяет запускать ресурсозатратные приложения. Главная особенность — функция Bluestacks TV. Нужна для проведения онлайн трансляций на Twitch.

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

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

Разборка (декомпиляция) APK файла с помощью Apktool

Вам понадобится программа Apktool и Java. Файл, который будете разбирать (в нашем случае (smart.apk)

Установка Apktool на компьютер

Скачиваем и Устанавливаем Java. Скачиваем ApkTool (apktool1.4.3.tar.bz2 и apktool-install-windows-r04-brut1.tar.bz2) и распаковываем в директорию С:\Windows\

Для запуска Apktool нужно нажать сочетание клавиш Win+R

Пишем cmd — переходим в командную строку и пишем apktool.Весь процесс происходит в командной строке.

Но сделать иначе, есть графический интерфейс ApkTool с названием Smartapktool. Скачиваем приложение Smartapktool (ссылка скачать внизу статьи) распаковываем его в папку

Очень важно, чтобы файлы apktool лежали в папке Windows, не путать с Smartapktool. Запускаем интерфейс SmartApkTool.exe и переходим в меню Распаковать/Запаковать

Выбирайте Ваше приложение ~name .apk (Важно! Отсутствие пробелов, кириллицы, знаков препинания).

После распаковки приложения вы обнаружите рядом папку с таким же названием.

Инструменты для декомпиляции APK-файлов

1. Java Decompilers

Это отличный онлайн инструмент для декомпиляции APK. Этот инструмент использует декомпилятор APK и DEX с открытым исходным кодом, известный как Jadx. Он поможет вам получить исходный код из APK файла всего за один клик.

Как декомпилировать APK онлайн в исходный код

  • Перейдите по этой ссылке .
  • Теперь выберите файл APK с помощью опции Choose File и нажмите на Upload and Decompile

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

2. Show Java — декомпилятор Java

Show Java — это декомпилятор java, который может легко извлечь исходный код APK (приложение для Android). Это декомпилятор, который извлекает исходный код приложения Android, включая XML-файлы и изображения. Он работает непосредственно с вашего устройства Android. Вы также можете выбрать CFR 0.110 или Jadx 0.6.1 для использования в качестве декомпилятора.

3. Java N-IDE

Java N-IDE — это консоль Java для Android. Она представляет собой конструктор Apk. Вы можете создать и запустить java-файл с JDK 1.7. Она поддерживает java компилятор 1.7, java редактор, java автозаполнение кода, java отладчик. Он запускает java-файл, файл класса, декомпилирует класс, jar. Он поддерживает построитель макетов для Android, а также поддерживает VCS. Наряду с этим, в проект включены следующие инструменты ( Javac — Java компилятор, Aapt — Android asset package tool, Dx — Dex для dalvik vm, Zip Signer, Apk Builder). Это отличное приложение для людей, которые хотят изучать Java, а также декомпилировать Android Apk.

4. JaDX — Декомпилятор

JaDX — это декомпилятор для файлов «apk», «dex», «jar», «class». Это адаптированная для Android версия JaDX. Эта программа не декомпилирует XML файлы и другие ресурсы. Эта программа только декомпилирует классы. Она также извлекает папку assets, которая включает бинарные файлы.

5. ApkTool

ApkTool — это инструмент для обратной разработки закрытых & бинарных приложений Android. Этот инструмент может декодировать ресурсы до почти оригинальной формы и восстанавливать их после внесения некоторых изменений. ApkTool облегчает работу с приложениями благодаря проектной структуре файлов и автоматизации некоторых повторяющихся задач, таких как сборка apk и т.д. Его можно использовать для локализации, добавления некоторых функций или поддержки пользовательских платформ, анализа приложений и многого другого, но он не предназначен для пиратства и других нелегальных целей.

Функции:

  • Распределяет ресурсы в новую оригинальную форму (включая resources.arsc, classes.dex и XMLs)
  • Помогает выполнять повторяющиеся задачи.
  • Восстанавливает декодированные ресурсы обратно в двоичный APK/JAR.
  • Отладка Smali.

Reassembling APKs

The utility also has the capability to reconstruct an APK from a modified application folder created from
. There are some limitations to this, but the underlying principle is that you could make some small
modifications, and then repackage the APK.

The utility is useful for converting between the DEX and JAR formats. The main benefit to this is so that
you
may analyze and work with the Android app using tools that were designed to work on JAR files. Similar to
, it has features to translate the DEX contents, as well as create them from the file types it can output.
It supports java as well as the Smali format we discussed. Unlike , is primarily focused
on working with the files.

On the Kali image that was provided to you all, there are the following tools that are part of this package:

You can use to convert the into a :

tags:

malware

android

apk

mobile

lecture

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

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

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