В этой статье мы познакомимся с работой программы Apktool – редкого в своём роде инструмента по тестированию APK ресурсов для приложений под ОС Андроид. Мы с вами установим Apktool в Кали Линукс и Windows и скачаем/установим тренировочное приложение для применения программы. Так что подробности работы самой утилиты, а также того, с чем придётся работать, я решил всё-таки разместить в следующей статье.
Apktool представляет собой программу, входящую в список инструментов Реверсивной Инженерии (обратной разработки, а попросту – копирования) ресурсов Андроид-приложений (APK – Android Package Kit). Этот инструмент позволяет расшифровывать APK-проекты, перехватывая его функции на лету, изменяя под собственные нужды, и формировать уже обновлённый APK файл. Для работы с Apktool требуется среда Java 7 (JRE 1.7) и новее. Этот инструмент одинаково идёт из-под Linux и Windows. Инструмент способен на многое, среди главных же его функций можно выделить:
Что стоит за этими заумными словами, вы скоро поймёте, а пока рассмотрим вопрос, где и как установить всё, что понадобится для знакомства с инструментом.
В Кали Линукс инструмент уже существует, и следующей командой вы можете проверить номер установленной версии:
apktool -version
Справку по командам легко получить, набрав название в терминале. Сразу короткие пояснения по-русски:
Утилита поставляется и в Windows, однако работа с подобными инструментами подразумевает использование java-среды, да и процесс установки потребует внимания. Так что лучше прямо сейчас проверить версию Java:
java -version
Однако, скорее всего, вы увидите сообщение, которое гласит, что Windows не понимает о чём речь:
Тогда устанавливаем Java в Windows по рекомендациям в статье. Процесс недолгий. Сразу после установки отправляемся за версией Apktool для Windows. Справка по и файлы установки живут здесь. Но я вам немного помогу:
apktool
Если всё правильно сделано, вы увидите справку (программа установлена):
Инструмент, как указывалось, предназначен для работы с APK-файлами. APK – это формат исполняемых файлов-приложений (программ) для ОС Андроид. Он представляет из себя обычный архив, открывающийся доступным zip-ом. Если вы загляните внутрь, то увидите список, характерный для многих APK. Это classes.dex, META-INF, AndroidManifest.xml, resources.arsc и т.д. и т.п. Однако заглянуть внутрь этих файлы абы чем не получится – они не допускают редактирования с помощью какого-нибудь там Блокнота. Вот здесь и вступает в дело Apktool.
Но чтобы не учиться плавать по книжке, возьмём шаблонный APK файл, который поможет познакомиться с типовым APK поближе. Для этой цели индийские товарищи предложили APK проекта DIVA, который можно скачать для прямой установки в Кали командой:
git clone https://github.com/payatu/diva-android
или в форме zip-а:
В Кали за нас всё сделает терминал; если вы продолжаете работать в Windows, я приготовил вам готовый файл (чтобы не рыскать):
скачать DIVA для Аpktool в Windows
Распаковывайте из архива файл diva-beta.apk куда угодно. Содержимое файла любого файла .apk в общих чертах понятно любому архиватору. Однако работа с конкретными файлами, как уже говорилось, доступна немногим. Так что открываем файл с помощью Аpktool из командной строки в формате:
apktool d полный-путь-к-diva-beta.apk
Так, у меня diva-beta.apk лежит на Рабочем столе, а значит команда будет выглядеть так:
Появилось окно с процессом декодирования параметров ресурса. На папку с файлами можно взглянуть в той же Windows\System32:
Будьте на связи. Успехов.
Посмотреть комментарии
Отличное руководство. Но у меня после всех действий все равно была ошибка
**************
S: WARNING: Could not write to (C:\Users\User.HOMESERVER\AppData\Local\apktool\framework), using C:\Users\0DF1~1.HOM\AppData\Local\Temp\ instead...
*************
Лечится созданием папок apktool и framework по выше указанному пути.
И тем кто не хочет забивать (Windows\System32:) декомпиллированным apk,
в команде apktool d полный-путь-к-diva-beta.apk ,добавьте полный путь к своему исходному каталогу. apktool d
Все получилось.
Здравствуйте, все сделал как написано, но в cmd ввожу apktool и выводится какая то фигня, что её нет.
Здравствуйте. А как упаковать файлы назад.
Команды в Линукс и Windows примерно одинаковы:
./apktool b [имя-папки-с-файлами] [apk файл.apk]
в Windows
apktool b [имя-папки-с-файлами] [apk файл.apk]
Учтите, что оригинальная подпись приложения при переформировании аннулируется.