Вскрываем, модифицируем и запаковываем Android-приложения.
Иногда некоторые приложения на Android чем-то не устраивают пользователя. В качестве примера можно привести назойливую рекламу. А то бывает и так - всем хороша программа, да только перевод в ней или кривой, или вовсе отсутствует. Или, например, программа триальная, а получить полную версию возможности нет. Как же изменить ситуацию?
В этой статье мы поговорим о том, как разобрать пакет АРК с приложением, рассмотрим его внутреннюю структуру, дизассемблируем и декомпилируем байт-код, а также попробуем внести в приложения несколько изменений, которые могут принести нам ту или иную выгоду. Поэтому запасайтесь терпением, наливайте ароматный кофе в любимую чашку, устраивайтесь поудобнее – будем начинать. Если вы еще не обзавелись чашкой, на которой нанесено ваше фото, то сублимацию, фото на чашках, фото на футболках можно заказать на web-ресурсе http://fotofan.od.ua/.
Чтобы модифицировать и запаковывать Android-приложения самостоятельно, потребуются хотя бы начальные знания языка Java, на котором пишутся приложения для Android, и языка XML, который используется в Android повсеместно - от описания самого приложения и его прав доступа, до хранения строк, которые будут выведены на экран.
Также понадобится умение обращаться со специализированным консольным софтом.
Итак, что же представляет собой пакет АРК, в котором распространяется абсолютно весь софт для Android?
Устройство АРК-пакетов и их получение
Пакет приложения Android, по сути, является обычным ZIP-файлом, для просмотра содержимого и распаковки которого никаких специальных инструментов не требуется. Достаточно иметь архиватор - 7-Zip для Windows или консольный unzip в Linux. Но это что касается обертки. А что внутри? Внутри же у нас в общем случае такая структура:
•МЕТА-INF/ - содержит цифровой сертификат приложения, удостоверяющий его создателя, и контрольные суммы файлов пакета;
•res/ - различные ресурсы, которые приложение использует в своей работе, например изображения, декларативное описание интерфейса, а также другие данные;
•AndroidManifest.xml - описание приложения. Сюда входит, например, список требуемых разрешений, требуемая версия Android и необходимое разрешение экрана;
•classes.dex - компилированный байт-код приложения для виртуальной машины Dalvik;
•resources.arse - тоже ресурсы, но другого рода - в частности, строки (да-да, этот файл можно использовать для русификации!).
Перечисленные файлы и каталоги есть если не во всех, то, пожалуй, в абсолютном большинстве АРК. Однако стоит упомянуть еще несколько не столь распространенных файлов/каталогов:
•assets - аналог ресурсов. Основное отличие - для доступа к ресурсу необходимо знать его идентификатор, список asset'ов же можно получать динамически, используя MeTOflAssetManager.listll в коде приложения;
•lib - нативные Linux-библиотеки, написанные с помощью NDK(Native Development Kit). Этот каталог используют производители игр, помещая туда движок игры, написанный на C/C++, а также создатели высокопроизводительных приложений (например, Google Chrome). С устройством разобрались. Но как же получить сам файл пакета интересующего приложения? Поскольку без рута с устройства забрать файлы АРК не представляется возможным (они лежат в каталоге /data/app), a рутить не всегда целесообразно, имеется, как минимум три способа получить файл приложения на компьютер:
•расширение АРК Downloadeгдля Chrome lbn.lv/ADuOgbl:
•приложение Real АРК Leecher [bit. 1у/ yKbhm6l:
•различные файлообменники и варезники.
Какой из них взять на вооружение - дело вкуса; мы предпочитаем использовать отдельные приложения, поэтому опишем Real АРК Leecher, тем более что написан он на Java и, соответственно, работать будет хоть в винде, хоть в никсах.
После запуска программы необходимо заполнить три поля: Email, Password и Device ID - и выбрать язык. Первые два - e-mail и пароль твоего гуглоаккаунта, который ты используешь на устройстве. Третий же является идентификатором устройства, и его можно получить, набрав на номеронабирателе код 8255 и затем найдя строку Device ID. При заполнении надо ввести только ID без префикса android.
После заполнения и сохранения нередко выскакивает сообщение «Error while connecting to server». Оно не имеет отношения к Google Play, поэтому смело его игнорируй и ищи интересующие тебя пакеты.