- Открываем и редактируем файлы Apk на устройствах Андроид
- Как открыть Apk файл на Андроид
- Содержание
- Интерфейс APK Editor Pro
- Как заменить картинку в приложении
- Как удалить рекламу из приложения
- Ссылки
- APK чем открыть и как редактировать?
- ↑ Что такое APK файл?
- Как редактировать apk-файлы на компьютере
- Что такое APK файл?
- Обзор популярных редакторов АРК файлов
- Модификация стоковых прошивок для Android. Часть 1
- Преамбула
- Подготовка среды
- Преобразование прошивки
- Непосредственно модификации
- Эпилог
Открываем и редактируем файлы Apk на устройствах Андроид
Привет всем. Здесь вы узнаете, как открыть файл apk на Андроид и даже поковырять его код. Не будем останавливаться на общих понятиях расширения apk, сразу перейдем к делу. Для этих целей создано приложение “APK Editor Pro”. Этот инструмент поможет открыть, а также редактировать apk файлы. Ссылки для скачивания приложены в конце статьи.
При помощи его я редактировал созданное в конструкторе приложение, так как некоторые ссылки и изображения (по умолчанию встраиваемые конструктором) не устраивали. Нет, я не программист и понимаю в кодах не больше вашего, но инструмент APK Editor позволяет работать с ним пользователям любого уровня от новичка до профессионала, так как оно имеет подсказки.
Как открыть Apk файл на Андроид
Содержание
Интерфейс APK Editor Pro
Главная страница содержит четыре кнопки:
- Выберете Аpk
- Выберете Аpk из приложения
- Помощь
- Выход
Для редактирования используются первые две.
1. Первая кнопка открывает непосредственно файлик apk, сохраненный в памяти устройства. То есть, открывается встроенный менеджер, находите нужное место расположения редактируемого объекта.
Клик по нужному элементу вызовет окно, где нужно выбрать, что вы хотите делать.
- Редактирование ресурсов
- замена файлов
- общее редактирование
Функция редактирования ресурсов позволяет изменять строки, файлики, манифест. Через эту функцию доступно практически все содержимое редактируемого файла.
Замена, подразумевает полную подмену одного файла на другой. Как правило, её используют для замены изображений, аудио и других элементов.
Общее редактирование поможет изменить название приложения, пакета, место установки, код версии, название версии.
2. Вторую кнопку используют в случае отсутствия файла apk, но при наличии установленного приложения. Выбираете из списка и приступаете к редактированию.
Клик на кнопку вызовет список всех установленных приложений. Здесь же можно переключиться между пользовательскими и системными.
Выбрав объект, открывается окно для выбора редактирования, но добавляется дополнительно “Редактирование данных”.
По-большому счету эта функция ничего интересного не даст, разве что только профи найдет в нем смысл.
3. Раздел “Помощь” – это одна большая подсказка по работе с некоторыми функциями: замена названия приложения, подмена фонового рисунка, ликвидация рекламы, перемещение данных на карту, удаление подозрительных разрешений.
В принципе инструкция написана неплохо, но при изучении советую внимательно изучить от начала и до конца.
4. Последняя кнопка “Выход” говорит сама за себя. Нажав её, приложение закроется.
Теперь на примерах рассмотрим использование приложения.
Как заменить картинку в приложении
1. Выбираем вторую кнопку “Выберете … из приложений”
2. Находим объект, который подвергнем испытанию, клик по нему.
з. Переход по “Замена файлов”
4. Выбрать “Изображения”
5. Долгое нажатие откроет окно:
Нам нужна замена. Заранее необходимо подготовить другой файл и закинуть его в устройство. Для этих целей я использую папку “Others”. По умолчанию она имеется в каждом устройстве.
6. Клик по готовому изображению произведет подмену.
7. Жмем “Сохранить” и ждем готового результата. Это может занять некоторое время, все зависит от размера приложения.
8. По окончании будет указан путь, куда сохраняется модифицированный файл. Прежде чем запустить новый apk, старый необходимо удалить.
Как удалить рекламу из приложения
Рекламный код может быть прописан где угодно, все зависит от её назначения. Мы рассмотрим стандартный способ. Этот способ описан в разделе помощь, но пришлось немного потратить время на разбор, так как названия папок и файлов немного не соответствовало. Видимо, информация устаревает.
Начнем сразу с пункта №3. Первый и второй выполняем как в первом примере.
-
- Переход по “Редактирование ресурсов”
- Выбираем параметр “Файлы”
- Находим место где расположена папка “layout”
- Выбираем файл “main. xml”
-
- Далее, находим файл: layout_height=”wrap_content”
- Вместо “wrap_content” прописываем “0dip”
- Все это сохраняем и ждем завершения
Удаляем старый apk и устанавливаем новый.
В этом случае убрали рекламу только с главной страницы.
Работать с редактированием элементов лучше всего через программу AirDroid. Оно выводит экран смартфона на монитор компьютера. Приятней работать с нормальной клавиатурой, а не тыкать в малюсенькие кнопочки устройства.
Ссылки
С вопросом “как открыть apk файл на андроид” разобрались. Плюс ко всему мы можем его полноценно редактировать под свои интересы.
Где взять приложение выбирать вам, ссылки ниже.
Установить APK Editor
с Плэй Маркет (платно)
с 4PDA (со скидкой и …)
Источник
APK чем открыть и как редактировать?
↑ Что такое APK файл?
Смотрим что внутри
По сути .apk это ZIP архив, поэтому посмотреть на внутреннее устройство можно воспользовавшись любым файловым менеджером или архиватором, например WinRAR или мобильным приложением X-plore.
При этом стоит помнить что вы получаете лишь визуальный доступ к внутренним ресурсам, возможности редактирования крайне ограничены.
Рассмотрим структуру
Внутри .apk мы видим ряд файлов и папок, давайте узнаем для чего они служат:
- 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.
Как работать с другими ресурсами апк, в том числе и графическими мы узнаем из следующих статей.
Источник
Как редактировать apk-файлы на компьютере
Программы для платформы Андроид представляют собой единственный файл с расширением apk, что очень удобно. Фактически установка любой программы на смартфоне или планшете сводится к его простому копированию на ваш гаджет. Что же такое apk-файл и как можно посмотреть, что там внутри?
Что такое APK файл?
Аббревиатура APK раскрывается как Android Package Kit – исполняемый пакет файлов для Android-приложений. Это архив, содержащий скомпилированные и готовые к исполнению коды и другие ресурсы. apk-файлы хранятся на сайтах Интернета, вроде Google Play, откуда их можно скачать и установить в свой гаджет. Они не подвергаются шифровке.
Его структура подготовлена разработчиком для запуска в среде виртуальной машины Dalvik или ART. Эти машины встроены в ОС Андроид, они-то и запускают все приложения, которые есть на вашем устройстве.
Сам файл apk является обычным архивом, который вы можете открыть любым архиватором в среде Windows. Например, WinRAR, или файловым менеджером, который открывает ZIP-архивы. Давайте посмотрим, что же там внутри находится.
- Исполняемый файл с расширением dex (имя может быть любое), который как раз и является кодом программы.
- Рядом с ним лежит resources.arsc, это реестр ресурсов, которые должна использовать программа. Это структура в формате XML.
- AndroidManifest.xml – это обязательный файл любой программы, манифест, содержащий главные сведения о ней. Здесь могут быть записаны, например, версия программы, требуемая версия Андроида, данные о разработчике, необходимые разрешения экрана, и так далее.
- Каталог res содержит внутренние ресурсы, которые нужны программе для работы. Здесь могут быть все картинки, значки, иконки, карты, и так далее.
- Каталог lib – нативные библиотеки для работы программы, например, код на C++. Этот каталог может отсутствовать, если библиотеки не используются.
- Каталог assets – дополнительные ресурсы для приложения, также иногда может отсутствовать. Какие именно ресурсы должны использоваться, описано в файле resources.arsc.
- Каталог META-INF – метаданные программы. Например, файл MANIFEST.MF, в котором могут быть пути к данным и их контрольные суммы. Здесь могут храниться файлы сертификатов RSA, сведения о версии Manifest-Version и тому подобная служебная информация.
Обзор популярных редакторов АРК файлов
Как уже говорилось, распаковать apk-файл можно любым ZIP-архиватором. После этого можно будет просматривать хранящиеся там ресурсы.
С изображениями не будет проблем совсем, их можно открывать в любой соответствующей программе. Формат XML открывается любым текстовым редактором, например, Notepad++. Если знать, как устроен этот формат, то их уже можно редактировать. Но для скомпилированных исполняемых файлов придётся применять специальные средства.
Редактор Eclipse. Это полноценная кроссплатформенная среда для программиста. Можно вести разработку на любых современных языках и готовить исполняемые файлы, в том числе и для Андроида. Среда может гибко настраиваться с помощью многочисленных плагинов.
Android SDK. Как ясно из названия, это специализированное средство для разработки мобильных программ именно под Андроид. С его помощью можно легко декомпилировать исполняемые файлы чужого приложения, или написать собственное с нуля. Отличается тем, что по желанию подключает различные модули для отладки и тестирования вашего кода, для тестирования программ на совместимость с разными гаджетами, и так далее.
APK downloader. Это плагин для браузера Chrome, позволяющий очень легко скачивать apk-программы с любых сайтов и просматривать их структуру. Для этого можно даже быть не зарегистрированным на Google Play.
APK Editor. Редактор, позволяющий работать с ресурсами внутри apk-пакетов. Не настолько мощный, как Eclipse, но решающий множество простых задач. Например, можно убрать рекламные блоки из программы, русифицировать интерфейс, заменить значки или текстуры на свои, и многое другое.
Источник
Модификация стоковых прошивок для Android. Часть 1
Несколько лет назад, когда я впервые познакомился с Android, я услышал от своего коллеги по работе, что Android предусматривает возможность установки модифицированных или самодельных прошивок. Признаться, тогда я был далек от этого. И даже пол года назад меня едва интересовали подобные вещи. Глубоко в душе, я был уверен: то, что делает производитель, уже предназначено для нормального использования.
Каково же было мое разочарование, когда я приобрел телефон из поднебесной, где заводскими настройками было запрещено использование Google, Skype, Facebook и других приложений. В принципе, на некоторые вещи можно было закрыть глаза, но когда мой телефон не подразумевал использование учетной записи Google — я взял с себя обещания обязательно разобраться во что бы мне это не стало.
Прошло пол года и мои кастомные прошивки с успехом используются по всему миру.
В данной серии статей пойдет речь о том, как делать reverse программирование для Android, реализовывать патчи, твики и моды.
Преамбула
И так! Давайте сперва определимся с понятиями, которые будут использоваться в данной статье. Ваше привычное понимание, при этом, может сильно отличаться.
Патч — изменение или замена существующего программного кода с целью модификации алгоритма программы.
Мод — как правило, добавление дополнительного функционала в существующий программный код без изменения алгоритма.
Твик — усовершенствование функционала программы с целью облегчения доступа к параметрам системы.
Также хочу заметить, что все примеры будет взяты для телефона HTC, но это не значит, что данная информация не может быть использована на других телефонах.
Обращаю ваше внимание, что я, как автор, не несу ответственности за возможную потерю данных на вашем телефоне в результате использования информации ниже.
Подготовка среды
Обойдусь без подробных инструкций как пользоваться тем или иным программным обеспечением. Если вам интересна данная статья и вы дочитали до этих строк, то я надеюсь, что вы уже опытный пользователь и имеете опыт использования, ну или хотя бы экспериментирования в данной области. Инструкций, статей и результатов тестирования полно в открытом доступе, впрочем, как и на Хабре. Также обойдусь без описания некоторых терминов, иначе статья получится очень большой и нудной. Будем писать только по делу. Уверен, что среда у вас уже давно стоит. Если нет, то предлагаю скачать и установить.
1. Android SDK. Это среда разработки приложений для Андроид. Для того чтобы делать модификации, нам обязательно придется проверять наш программный код. Среда разработки самое лучшее, что мы можем использовать.
2. Android Kitchen. Данная утилита позволит вам работать с образами системных партиций официальной ну или неофициальной прошивки.
3. JD-GUI. Декомпилятор программного кода языка Java. Сразу отмечу, что это самый лучший декомпилятор в плане удобства использования.
4. DJ Java Decompiler. Еще один декомпилятор, или дизассемблер, как некоторые любят называть, программного кода языка Java. Не удобен в плане использования, но разбирает код, который иногда не понимает JD-GUI.
5. smali. Еще один дизассемблер, но уже dalvik кода. smali нужен для дизассемблирования, а backsmali ассемблирования кода.
6. dex2jar. Утилита для конвертации исполняемых файлов Dalvik кода.
Преобразование прошивки
Разумеется, прошивка, которая стоит у вас на телефон от производителя оптимизирована с целью сокращения энергопотребления. Для того чтобы прошивку можно было изменять, ее необходимо преобразовать в формат, позволяющий изменять код. Для этого используется Android Kitchen. Можно конечно и руками, как я и делал раньше, пока не нашел эту самую «кухню». Как вытаскивать системную область из телефона, устанавливать среду, делать DEODEX прошивки, вы можете прочитать в интернете. Если вам уже ничего не понятно, я думаю стоит повременить со статьей, пока вы не наберете достаточно опыта.
После того, как прошивка из оптимизированного вида (ODEX — оптимизированный dalvik исполняемый код, если мне не изменяет память) стала DEODEX (то бишь НЕ оптимизированной), все исполняемые файлы готовы к модификации.
Непосредственно модификации
Создание патчей
Как я уже и рассказывал, мой телефон изначально имел запрет на использование Google. Ну хоть ты тресни, на Playstore не зайти, учетную запись не настроить, телефонная книга толком не синхронизируется. Зачем нужен такой Android? Долго копаясь в логах (logcat) самого устройства, я нашел записи, которые говорили о том, что использование Google запрещено. Самое не удобное в Android, вы видите лог, но не знаете какое системное приложение его производит. Чтобы отыскать от куда ноги растут, мне пришлось распотрошить все системные приложения до дизассемблированного Java кода. Это заняло достаточно времени, но я до сих пор пользуюсь проделанной работой при анализе и поиске нужного кода. Этапы получения подобного инструментария следующие:
1. Сделать DEODEX всей прошивки
2. Вашу новую DEODEX прошивку надо будет собрать и прошить на телефон. Как это делается — тема другой статьи.
3. Из каждого файла, находящегося в /system/framework вытащить файл classes.dex и переконвертировать в JAR посредством dex2jar.
4. Каждый полученный JAR открыть в JD-GUI и пере-сохранить в исходный код
5. Распаковать исходный код из архива.
В итоге у меня получилось столько папок, сколько было JAR файлов в /system/framework, и каждая папка имела структуру исходных кодов Java.
Путем несложных манипуляций, я быстро отыскал то место, которое генерировало записи в logcat.
Не будем рассматривать всю логику запрета, так как для каждого случая это отдельная история. Мне пришлось потратить пару часов, прежде чем я нашел где производятся проверки, построить в голове блок схему алгоритма и понять куда надо лезть, чтобы алгоритм чуть чуть «попортить».
Оказалось все просто. Есть подпрограмма, которая на основе заранее установленных констант, при обращении отвечала, относится ли телефон к Китаю или же нет.
Код находился в файле HTCExtension.jar, а класс, который содержал данную подпрограмму находился в \com\htc\util\contacts\BuildUtils$Customization.java
Распаковка и анализ оригинального файла
1. Сперва нам надо взять оригинальный DEODEX JAR файл, который отвечает за нужную нам часть кода. В нашем случае HTCExtension.jar.
2. Открыть любым архиватором и вытащить от туда classes.dex
3. С помощью конвертера dex2jar преобразовать его в JAR файл. Команда: dex2jar.bat classes.dex
4. Открыть полученный classes_dex2jar.jar файл в JD-GUI.
5. Да, чаще всего JD-GUI декомпилирует код не так как он выглядит в оригинале, оно и понятно, но читать вполне можно. В исходнике мы видим, что подпрограмма проверяет параметры проекта и языковой флаг прошивки. В нашем прискорбном случае возвращается значение TRUE.
6. Чтобы сделать патч, нам надо дизассемблировать сам Dalvik код. Для этого используем baksmali. Удобнее всего создать отдельную папку и положить туда три файла вместе: HTCExtension.jar, smali.jar и baksmali.jar. Даем команду java -Xmx512m -jar baksmali.jar -a -d -o HTCExtension -x HTCExtension.jar
— это API вашей версии Android. Для JB — это 16
— папка, где находятся все фреймворки прошивки.
В моем случае это была команда
java -Xmx512m -jar baksmali.jar -a 16 -d S:\dev\Android\Android-Kitchen\WORKING_JB_15\system\framework -o HTCExtension -x HTCExtension.jar
7. В нашей вновь созданной папке появилась папка HTCExtension, а в ней наши файлы с Dalvik кодом.
8. Отыскиваем файл по пути \com\htc\util\contacts\BuildUtils$Customization.java и смотрим код:
9. Страшно, не правда ли? Ничего же не понятно. Но, это дело поправимое. Создав несколько своих патчей и набив тем самым руку, вы легко сможете модифицировать код без сторонних средств. В нашем случае, в этом коде
происходит присваивание переменной v0 значение 1, то есть TRUE. Далее идут всякие проверки, и если телефон не китайский, то значение переменной изменяется:
10. Самый простой способ спасти отца русской демократии, это изменить код на следующий:
, то есть поменять значение переменной с 1 на 0. То есть что бы ни было, всегда бы возвращалось значение FALSE и в JD-GUI код выглядел бы как
11. Да, метод ,будет работать. Но мы же не ищем легких путей — это раз. Во-вторых не совсем красиво. Хочется кода что-то вроде
12. А как нам получить Dalvik код данного исходного кода? Для новичков мы сделаем небольшой трюк.
Создание Dalvik кода
1. Открываем Android SDK.
2. Создаем новый проект, и в наш единственный тестовый класс пишем следующий код
3. Компилируем наш проект и затем берем собранное приложение из рабочей области.
4. Кладем собранное приложение в папку, где мы с вами потрошили JAR файл.
5. Даем команду
8. Все, код для патчинга готов.
Накатывание патча
1. Dalvik код замусорен маркерами, указывающими строку кода в оригинальном исходном файле. Это нужно при выводе ошибок, если таковые имеются в вашей программе. Без указаний строк код также прекрасно работает.
2. Удаляем строки с нумерацией строк, копируем и заменяем метод (подпрограмму) в нашем \com\htc\util\contacts\BuildUtils$Customization.java файле.
3. Сохраняем файл. Да, забыл сказать, редактор нужен нормальный, например Notepad++ или EditPlus. Кому какой нравится.
Компиляция и сборка патченного JAR файла
1. С помощью backsmali мы распотрошили наш JAR файл, а теперь его надо собрать обратно.
2. Даем команду java -Xmx512m -jar smali.jar -a 16 HTCExtension -o classes.dex
3. В нашей папочке появляется файлик classes.dex
4. Снова открываем HTCExtension.jar файл архиватором и заменяем в нем существующий classes.dex на наш только что созданный.
5. Все, наш HTCExtension.jar содержит модифицированный программный код.
Замена оригинального файла на патченный
Обычно, для рядовых пользователей создаются специальные скрипты, которые через recovery заменяются. Но нам такое не интересно. Во-первых долго и нудно, во-вторых мы же опытные пользователи и можем себе позволить некоторые тонкости.
1. Заменить текущий рабочий файл можно следующими командами, если у вас уже стоит DEODEX прошивка и имеется root доступ:
1-ая команда закидывает патченный файл на флешку
2-ая команда открывает shell
3-ая команда дает root доступ
4-ая команда монтирует систему в режим чтения/записи
5-ая команда делает резервную копию файла
6-ая команда перезаписывает существующий файл новым патченным.
7-ая команда настраивает разрешения
8-ая команда удаляет кэш
9-ая команда делает перезагрузку устройства.
2. Спасибо что дочитали до этого пункта, осталось немного.
3. После перезагрузки ваш новый патченный код вступит в силу.
4. Если код не работает или выскакивает ошибка, то путем не хитрых комбинаций можно вернуть назад резервную копию.
Эпилог
Да, кому-то показалось данная статья слишком специфичной, кому-то мало-понятной, а кому-то бесполезной. Я специально обошелся без углубленной детализации и иллюстраций как это все выглядит в живую и на практике. Во-первых, данный труд будет неблагодарный и только породить еще больше вопросов. Во-вторых, не хочу видеть армию пользователей на форумах, которые жалуются, что убили свой телефон.
К следующей статье я расскажу как делать Твики. Будет пример использования автоматической записи телефонных звонков родными средствами телефона. Спасибо за ваше внимание.
Источник