Необходимый софт для модификации приложений и прошивок и для чего он нужен
JAVAJDK – скачать отсюда собственно необходим для всех действий проводимых с приложениями и прошивками android.
Установка: после установки необходимо добавить ее в переменную Windows, для этого:
Открываем «Система» — «дополнительные параметры системы» — «переменные среды» — «системные переменные» — «PATH» создаем путь к папке с JAVA (Добавьте путь до файла в виде каталога ‘bin’)
AndroidSDK – скачать отсюда Программа для создания виртуальной машины на которой можно опробовать свое творение. Так же программа часто необходима для изменения системных данных или взлома аппарата на базе Android, для этого конечно ее нужно настроить.
APKTool – отсюда программа необходима для распаковки apk файлов и манипуляций с ними.
Установка: скачанный файл переименовать в apktool.jar
В блокноте создать файл apktool.bat с текстом:
@echo off
if «%PATH_BASE%» == «» set PATH_BASE=%PATH%
set PATH=%CD%;%PATH_BASE%;
java -jar -Duser.language=en «%~dp0apktool.jar» %*
Переместить оба файла в папку C:apktool
Декомпиляция: Чтобы декомпилировать приложение, скопируйте файл APK приложения в папку где
находится apktool, далее необходимо выполнить вот что, в командной строке ввести команду:
apktool d название.apk
В папке с Apktool появится папка разобранного приложения.
Компиляция: Вводим в командной строке: apktool b имя_проекта
В папке dist будет находится готовое приложение.
После компиляции приложение нужно подписать!
Для того чтобы модифицировать системные приложения необходимо прежде всего необходимо скормить программе APKTOOL системный файл framework-res.apk который находиться в системном разделе Android:
/system/framework/framework —res.apk
Для того чтобы скормить Apktool данный файл необходимо скопировать данный файл с телефона в папку C:apktool, затем ввести команду:
apktool if С: apktool framework -res.apk
Также для того чтобы можно было модифицировать системные файлы прошивка должна быть вначале Deodex-ирована.
SmartApkTool – скачать отсюда аналог APKTool, только с интерфейсом (нет необходимости манипуляций в командной строке). Для работы требуются: Java JDK и Apktool.
Android Multitool – скачать отсюда еще один аналог APKToolс интерфейсом (нет необходимости манипуляций в командной строке). Для работы требуются: Java JDK, Microsoft Powerpacks скачать отсюда, NET framework.
SignAndroid – скачать отсюда необходим для подписи измененных приложений android.
Для подписи приложения: распаковать архив:
Скопировать готовое приложение в папку с распакованным Sign Android
Потянуть приложение на файл Sign_APK.bat после чего приложение будет подписано!
Готовое подписанное приложение будет носить название apk_signed.apk
Программы для Deodex – идирования прошивок android
Deodex приложений в прошивке необходим тем, кто хочет устанавливать различные моды — которые могут кардинально изменить внешний вид Android (изменить иконки, изменить строку уведомлений, добавить или убрать меню)
Прежде всего необходимо: скачать и установить Java JDK на компьютер
Установите менеджер файлов Root на телефон и с помощью него перейти в раздел /system и скопировать следующие папки во внутреннюю память или карту памяти:
/app
/priv-app
/framework
JoelDroidBatchDeodexer – скачать отсюда необходима для проведения Deodex – идирования прошивок android. Для работы необходимо: NET Framework 4.5 (скачать отсюда).
Подходит для Android: 5.x.x
Использование: Распаковать архив в котором находиться папка с программой
Папки Android (app, priv-app, framework) скопировать в какую либо одну на компьютере (например MyRom)
Запустить программу и указать расположение, нажав на «Browse», папки где находится (app, priv-app, framework)
Нажать «Start Process»
DeodexerforAndroidRuntime– скачать отсюда необходима для проведения Deodex – идирования прошивок android.
Подходит для Android: 5.x.x — 6.x.x
Использование: Распаковать архив в котором находиться папка с программой
Папки Android (app, priv—app, framework) скопировать в какую либо одну на компьютере (например MyRom)
Запустить программу DeodexerforAndroidRuntime и указать расположение папки где находится (app, priv—app, framework)
Отметить для deodex: app, priv—app, framework
Нажать кнопку Execute
Jbart– скачать отсюда необходима для проведения Deodex – идирования прошивок android.
Подходит для Android: 2.3.x — 6.x.x
Использование: Распаковать архив в котором находиться папка с программой
Запустить Jbart
Скачать всю папку с/system c Android, переместить на компьютер и запаковать в ZIP архив или же вам понадобиться прошивка упакованная в ZIP
Указать ZIP архив
Выбрать версию Android (Rom API)
Внизу справа нажать на «D — (Deodex)»
xUltimate – скачать отсюда необходима для проведения Deodex – идирования прошивок android.
Программы для перевода приложений:
Android Localizer – скачать здесь
Translator – скачать здесь
TM-database – скачать здесь
TranslatorAPK – скачать здесь делает все сама, в том числе декомпиляцию и компиляцию приложения.
Прочие вспомогательные программы:
Smali– скачать отсюда дизассемблер dalvik кода.
smali нужен для дизассемблирования
backsmali ассемблирования кода
TickleMyAndroid– скачать отсюда Многоцелевая кухня, для редактирования системных ресурсов:
Графические изменения системы или apk.
Сборкаразборка apk.
Изменять значки батареи, WiFi, сигнала, блокировки, кольца блокировки.
Изменять клеванты уведомления, смайлики, функциональные клавиши.
Декомпилировать и перекомпилировать несколько файлов в пакетном режиме,
Распаковка изображений из файлов APK,
zipalign (сжатие) APK-файлов,
Подпись перекомпилированых файлов APK оригинальной подписью,
Deodex (деодексированиея) APK и JAR-файлов,
Odex (одексирование) APK и JAR-файлов,
Изменять загрузочные анимации и их размер, шрифты,
Создавать update.zip для отката изменений,
Создавать update.zip вашего проекта,
Делать скриншоты с вашего устройства,
Может генерировать LogCat файлы.
EasyDebugging– скачать отсюда Приложение для определения запущенного активити приложения
Инструкция: Запустить приложение.
Нажать кнопку Пуск.
Свернуть приложение.
Открыть Ваше приложения для отображения запущенного активити. Активити будет показано во всплывающем сообщении (toast сообщение).
Для остановки дебага, нажмите на кнопку стоп.
266 просмотров Вся размещенная информация была взята из открытых источников и представлена исключительно в ознакомительных целях а также не несет призыва к действию. Вся информация направлена на то, чтобы уберечь читателей от противозаконных действий. Все причиненные возможные убытки посетитель берет на себя. Не повторяйте ничего из прочитанного в реальной жизни. | Так же, если вы являетесь правообладателем размещенного на страницах портала материала, просьба написать нам через контактную форму жалобу на удаление определенной страницы, а также ознакомиться с инструкцией для правообладателей материалов. Спасибо за понимание.
Для того чтобы редактировать APK приложения. Прежде всего их нужно декомпилировать, а после скомпилировать! Как это сделать и чем можно узнать в этом уроке.
В прошлом уроке вы узнали из чего состоят основные внутренности приложения, а также что данные что APK приложения (в дальнейшем просто APK) можно открыть архиватором, но что либо изменить у вас не получиться! Нужна Декомпиляция APK приложения Android!
Приступим!
Содержание:
- Необходимые инструменты
- Настройка
- Декомпиляция приложения с помощью Apktool через командную строку
- Компиляция приложения с помощью Apktool через командную строку
- Что необходимо чтобы работать с системными APK
- Графические надстройки утилиты ApkTool
- Java JDK — среда разработки;
- ApkTool — программа декомпилятор;
- ApkTool.bat — bat файл;
- Sign Android — подпись приложения APK.
Настройка Java
После установки Java JDK , необходимо, добавить ее в переменную Windows. Если кто не понял официальное куроводство то,
Скопируйте путь Java JDK:
Перейдите в меню Дополнительные настройки:
(Мой) Компьютер ->Свойства системы->Дополнительные параметры системы->Дополнительно->Системные переменные->Правка
Java JDK настроена!
Настройка ApkTool
- Создать папку на диске C: и в нее переместить файлы apktool_x_x.jar и apktool.bat
- Файл 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
- Для этого Вам надо разархивировать архив Sign Android;
- Скопировать готовое приложение в папку с распакованным Sign Android;
- Потянуть приложение на файл 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 С:primerframework -res.apk
Также для того чтобы можно было модифицировать системные файлы прошивка должна быть вначале Deodex-ирована.
Теперь как это можно все упросить! (не использовать командную строку)
Скачайте приложение SmartApkTool, данное программа имеет графический интерфейс и очень легкая в использование. Автор данной программы мой хороший друг Никита Коровкин (на данный момент работает в Surfingbird)! за что ему огромное Спасибо!
Как пользоваться SmartApkTool
Прежде всего вам надо установить и настроить Java JDK и Apktool как указано выше.
Откройте программу SmartApkTool
Если Вам необходимо Декомпилировать приложение в SmartApkTool, то выберите данный пункт и необходимое приложение
Если компилировать, то
и выбрать файл в проекте apktool.yml
Для подписи приложения APK, нажать обзор, выбрать приложение и подписать
Все так легко и просто!
Альтернативный вариант
Для тех кому не понравился SmartApkTool, есть альтернатива Android MultiTool
[lightgrey_box]
Владимир Медведев — автор PureGoogle.ru. Начал использовать Android с версии 1.5 и остается поклонником этой мобильной ОС по сей день.[/lightgrey_box]
Итак, в прошлом уже была налажена работа Apktool, теперь пришло время научится ею пользоваться. С помощью этой утилиты мы будем разбирать приложения .apk и собирать их обратно после изменения.
Преамбула
Стоит отметить, что я опишу здесь лишь изменение таких apk-файлов, как SystemUI.apk и framework-res.apk. Все остальные декомпилируются похожим образом, но о них речи идти не будет, во всяком случае пока. Во всех статьях в качестве основы будет выступать AOSP Android Jelly Bean, то есть описанное здесь может не подходить для прошивок разных производителей, мы будем работать с чистым роботом. Важно понимать, что для создания мода ваша прошивка должна быть деодексирована, то есть каждый системный apk-файл не должен сопровождаться файлом .odex, этот файл должен быть уже встроен в приложение. Проверить это тоже легко: берём любой архиватор и открываем им приложение, внутри будет несколько файлов и папок, один из них — classes.dex. Все стоковые прошивки одексированы! Если вы пользуетесь таковой — моды не ваше дело.
О том, где же взять эти файлы: SystemUI.apk можно отыскать в вашей прошивке по пути systemapp, framework-res.apk по пути systemframework. Взять их можно непосредственно из телефона, а также из zip-архива с прошивкой.
Вполне очевидным должно быть то, что открытие apk-файла архиватором в целом нам не подходит. Таким образом мы ничего не добьёмся. Однако так можно делать в случае быстрой замены картинок или уже готовых ресурсов. Об этом будет рассказано далее.
Декомпиляция приложений
Кладём SystemUI.apk и framework-res.apk в корень любого локального диска, мне удобен диск D.
Первое, что нужно сделать — установить framework-res.apk, чтобы все приложения разбирались, скажем так, с проверкой по нему, всё же это главная кладовая графических ресурсов системы. Делается это командой apktool if file.apk. В нашем случае файл лежит в корне диска D, поэтому придётся указать до него путь, получим следующее:
Файл установится в папку пользователя, то есть путь будем примерно следующим C:Usersusernameapktoolframework. Всегда устанавливайте framework-res из прошивки, с которой ведётся работа, повторная установка этой командой другого файла лишь заменит уже существующий.
Теперь можно разбирать приложения. Делается это командой apktool d file.apk, но для нашего удобства мы положили файлы в корень диска D, там их и оставим, указав место, в которое они декомпилируются. Начнём с основного:
В данном случае мы разобрали файл в новую папку framework-res для своего же удобства. Имя папки может быть любым, от этого ничего не зависит.
Поступим схожим образом и с SystemUI.apk:
На этом всё закончилось, можно порадоваться и побродить по ресурсам приложений, но менять ничего мы пока не будем. Нужно научиться их собирать.
Компиляция приложений
Предположим, что мы что-то изменили в приложении, теперь собираем. Делаем это при помощи команды apktool b ***, где *** — имя папки, в которую было разобрано приложение. И у нас это папки framework-res и systemui в корне диска D. Поступать следует так:
Приложения собраны! Новые apk-файлы можно найти в папке dist, которая теперь существует внутри папок, куда разбирались приложения, например, D:framework-resdist
Стоит отметить, что некоторые системные приложения нужно разбирать и собирать с проверкой по framework-res.apk, в таком случае нужно вводить команды, показанные на скриншоте, они отличаются лишь парой символов:
Обычно, кстати, компилирую/декомпилирую SystemUI.apk именно так.
Любой пользователь Android имеет свое представление о том, как должна выглядеть операционная система, какие функции выполнять и какой набор ПО в ней должен быть установлен по умолчанию. Однако далеко не все знают, что создать собственную прошивку не так уж сложно. Для этого совсем не обязательно разбираться в ядре Linux, уметь компилировать исходники Android или понимать, как устроен смартфон.
Введение
Существует три способа создания собственной прошивки для Android-коммуникатора: 1. Допиливание и компиляция операционной системы из исходников, публикуемых компанией Google или командой CyanogenMod. 2. Модификация стоковой прошивки коммуникатора. 3. Модификация сторонней прошивки, созданной с помощью первого или второго способа.
Первый способ является наиболее правильным и гибким, однако он зачастую требует достаточно глубоких знаний об особенностях Android и умения редактировать исходники системы так, чтобы они после этого работали на устройстве. Эта тема выходит за рамки нашей статьи, поэтому сборку исходников Android мы рассматривать не будем, а остановимся на двух других способах, точнее на третьем.
Сторонние прошивки (так называемые моды) существуют практически для любого Android-устройства, с момента выхода которого на рынок прошла хотя бы неделя. Обычно они уже включают в себя все необходимые модификации, необходимые для корректной работы прошивки на коммуникаторе, а потому представляют собой отличную площадку для экспериментов над системой. Их можно модифицировать практически до неузнаваемости, включать в состав ОС любое ПО, изменять ее внешний облик, создавать множество низкоуровневых настроек с помощью простого текстового редактора и файлового менеджера. Эти действия не требуют глубоких знаний ОС и могут быть выполнены любым читателем журнала.
Выбираем подопытного
Итак, предположим, что наш коммуникатор уже зарутован и в загрузочную область записана консоль восстановления ClockworkMod, позволяющая устанавливать на аппарат любые прошивки без всяких ограничений (о том, как это сделать, мы писали в статье «Тотальное подчинение», опубликованной в октябрьском номере ][). Теперь мы хотим установить на устройство другую прошивку, да не абы какую, а с собственными модификациями, настройками и набором ПО. Поэтому нам нужен каркас, а именно чужая прошивка, стабильно работающая на нашем устройстве. Где ее взять?
Главное место обитания всех ромоделов — это, конечно же, форумы xda-developers.com. Там можно найти все что угодно для коммуникаторов, работающих под управлением iOS, Windows Mobile, Windows Phone и Android. Открываем сайт в браузере, жмем на раздел Forums и ищем в списках форумов свой коммуникатор. Далее заходим в соответствующий раздел Android Development и внимательно просматриваем список тем, содержащих в названии слово «[ROM]». Лучше найти какую-нибудь чистую прошивку с названием вроде «Pure Android 2.3 Rom» или порт CyanogenMod, хотя, в сущности, подойдет и любая другая (правда, возможно, придется отменять авторские изменения). Открываем тему, проматываем первый пост, находим где-то в конце ссылку на скачивание и загружаем ROM на свой комп.
Другие статьи в выпуске:
Хакер #156. Взлом XML Encryption
Теперь файл прошивки нужно вскрыть. Делается это с помощью самого обычного unzip:
$ mkdir ~/rom; cd ~/rom $ unzip ../путь/до/прошивки.zip
Общая структура каталогов и важные файлы
Набор файлов и каталогов, образовавшийся в результате выполнения предыдущей команды, и есть, в сущности, операционная система Android, причем ровно в том виде, в каком она будет размещена в NAND-памяти устройства. В зависимости от версии Android и фантазии автора, она может содержать разные наборы каталогов и файлов, однако в ней всегда присутствуют три обязательных объекта: META-INF, файл boot.img и директория system.
Первый каталог содержит метаинформацию о прошивке, включая файлы сертификатов автора, манифест со списком файлов и их контрольными суммами, а также скрипт обновления, который может создавать в NAND-памяти новые файлы, менять права доступа и выводить прогресс-бар, который видят пользователи во время установки прошивки.
Файл boot.img содержит загрузочный образ, который включает в себя ядро Linux и образ initrd. Его можно распаковать, однако для нас он не несет особой пользы, так как почти любые системные параметры можно изменить с помощью файлов настроек и файловой системы /proc. Если же тебе требуется ядро, собранное с особыми параметрами, например с активированным планировщиком BFS или поддержкой NFS, то почти наверняка его можно найти на том же xda-developers и прошить с помощью ClockworkMod.
Наконец, каталог system — это то, ради чего все и затевалось. Содержимое этого каталога и представляет собой операционную систему Android без ядра Linux. Он содержит все, что нужно для работы ОС, а потому знать его структуру просто необходимо. Выглядит она так:
- app — предустановленные приложения: телефон, калькулятор, календарь и т. д.
- bin —аналог каталогов /bin и /usr/bin в Linux. Содержит различные системные компоненты, используемые более высокоуровневыми компонентами системы. Например, именно здесь лежит виртуальная машина dalvikvm.
- etc — файлы настроек. Полный аналог /etc в Linux, используемый, однако, только системными компонентами. Приложения Android хранят настройки в каталоге /data/data.
- fonts — шрифты. По умолчанию содержит только фирменные шрифты Droid (или Roboto в Android 4.0).
- framework — наборы Java-классов, используемые системой и Android-софтом. Тут же лежит файл framework-res.apk, содержащий полное описание интерфейса операционной системы, включая все графические файлы.
- lib — Linux-библиотеки, используемые низкоуровневыми компонентами системы. Аналог каталогов /lib и /usr/lib в Linux, включает такие стандартные библиотеки, как libc (правда, Android использует собственную Bionic вместо Glibc), libz (gzip-шифрование), libssl и другие.
- media — медиафайлы: рингтоны, звуки уведомлений, звуки интерфейса и файлы анимации загрузки ОС.
- tts — файлы, необходимые для работы синтезатора речи.
- usr — необязательный каталог, который обычно содержит файлы, необходимые для работы софтин из каталога bin. По сути, аналог /usr/share.
- vendor — файлы, поставляемые производителем аппарата. Обычно содержит бинарную firmware для различных «железных» компонентов, например модуля Wi-Fi.
- xbin — необязательный каталог, который содержит все, что не вошло в bin. Как правило, используется для хранения полезных утилит, тем не менее необязательных для работы системы (top, текстовый редактор). CyanogenMod использует его для хранения инструментов администрирования: bash, ssh, powertop, busybox и т. д.
- build.prop — файл, содержащий информацию о сборке, а также различные низкоуровневые настройки.
Kоманда setprop
Приведенные в статье настройки build.prop можно применить и в уже работающей системе с помощью команды setprop:
# setprop debug.sf.nobootanimation 1
Собственный набор ПО
Каталог /system/app содержит все предустановленное в прошивку ПО. Удаляя и добавляя пакеты в этот каталог, мы можем изменить набор приложений, доступных «из коробки». Например, ни для кого не секрет, что стандартный ланчер Android (да и ADWLauncher в CyanogenMod) тормозит и имеет многочисленные недостатки. ОK, заменим его на LauncherPro:
$ rm system/app/Launcher.apk $ wget goo.gl/U9c54 -o system/app/LauncherPro.apk
И это все. Не надо ничего устанавливать, не надо нигде ковыряться, просто закидываем нужное приложение в каталог — и готово. Даже имя не имеет значения, Android сам найдет нужное приложение и установит его в качестве домашнего экрана. Таким же образом можно поместить в прошивку любую другую программу или удалить ее оттуда.
Полезно поместить в прошивку одно из приложений для поиска утерянного смартфона (например, prey), тогда даже в случае сброса до заводских настроек оно останется в ОС и будет работать. Также можно заменить некоторое системное ПО, например добавить Dialer One вместо стандартного Phone.apk или Go SMS вместо sms.apk.
Как насчет системных Linux-приложений, например ssh-сервера или mc? Здесь тоже все просто. Собрать софтину для Android и процессора ARM можно с помощью комплекта NDK от Google, но большинство нужных приложений уже собрано до нас. Например, мы хотим предустановить mc в свою прошивку. Идем на xda-developers и выполняем поиск по запросу Midnight Commander. На первой же странице находим apk-пакет с установщиком и распаковываем его с помощью все того же unzip:
$ cd /tmp; unzip ~/NativnuxInstaller_1.1.apk
Видим в списке распакованных файлов assets/kits/mc-4.7.5.4-arm.tar.jet. Это архив tar.gz, который распаковывается в корень системы после установки apk-пакета (а точнее, после установки apk, запуска приложения и нажатия кнопки Install). Мы можем сразу распаковать его в нашу прошивку и получить предустановленный mc:
$ cd ~/rom $ tar -xzf /tmp/assets/kits/mc-4.7.5.4-arm.tar.jet
Теперь для запуска файлового менеджера на устройстве достаточно открыть терминал и набрать mc. Другие приложения могут распространяться в zip-архивах для прошивки с помощью ClockworkMod Recovery. Поместить их в свой мод еще проще, для этого достаточно перейти в корень прошивки (в данном случае ~/rom) и распаковать архив с помощью unzip.
- Запрет выгрузки рабочего стола из памяти:
ro.HOME_APP_ADJ=1
Опция позволяет сделать работу с устройством более удобной за счет мгновенного доступа к рабочему столу в любое время. Не рекомендуется использовать для устройств с малым объемом памяти.
- Повышение качества сохраняемых JPG-файлов:
ro.media.enc.jpeg.quality=100
Позволяет сделать снимки камеры более четкими, но существенно повышает нагрузку на ЦП.
- Отключение анимации загрузки для ускорения загрузки операционной системы:
debug.sf.nobootanimation=1
- Возложение части работы по отрисовке интерфейса на GPU:
debug.sf.hw=1
Позволяет сделать интерфейс более быстрым и плавным.
- Блокировка извещения об активном режиме отладки (при подключении к компу с помощью USB):
persist.adb.notify=0
- Устранение проблемы с возникновением черного экрана после завершения звонка:
ro.lge.proximity.delay=25 mot.proximity.delay=25
- Включение подсветки клавиш управления сразу после включения экрана:
ro.mot.buttonlight.timeout=0
Помимо всего этого, многие пользователи также рекомендуют применять следующие комбинации флагов:
- Уменьшение времени отклика сенсорного экрана:
debug.performance.tuning=1 video.accelerate.hw=1 windowsmgr.max_events_per_sec=150
- Увеличение времени жизни батареи:
wifi.supplicant_scan_interval=180 pm.sleep_mode=1 ro.ril.disable.power.collapse=0
- Твики 3G-модуля:
ro.ril.hsxpa=2 ro.ril.gprsclass=10 ro.ril.hep=1 ro.ril.enable.dtm=1 ro.ril.hsdpa.category=10 ro.ril.enable.a53=1 ro.ril.enable.3g.prefix=1 ro.ril.htcmaskw1.bitmask=4294967295 ro.ril.htcmaskw1=14449 ro.ril.hsupa.category=5
- Улучшение производительности сети:
net.tcp.buffersize.default=4096,87380,256960,4096,16384,256960 net.tcp.buffersize.wifi=4096,87380,256960,4096,16384,256960 net.tcp.buffersize.umts=4096,87380,256960,4096,16384,256960 net.tcp.buffersize.gprs=4096,87380,256960,4096,16384,256960 net.tcp.buffersize.edge=4096,87380,256960,4096,16384,256960
Все эти строки необходимо просто поместить в файл system/build.prop и сохранить.
Сборка
ОК, мы внесли необходимые изменения, внедрили свои приложения, твикнули систему и теперь должны создать готовый к прошивке образ ОС. В этом нам поможет утилита testsign. Сначала следует запаковать прошивку с помощью zip:
$ cd ~/rom; zip -r my-rom.zip *
Теперь необходимо подписать архив, чтобы Recovery смог его установить:
$ wget goo.gl/OyBBk $ java -classpath testsign.jar testsign my-rom.zip my-rom-signed.zip
После этого закидываем архив my-rom-signed.zip на карту памяти устройства и выключаем аппарат. Чтобы попасть в Recovery, включаем аппарат с зажатой клавишей уменьшения громкости (для некоторых устройств процедура может отличаться).
Далее с помощью клавиш управления громкостью выбираем пункт «Wipe data/factory reset», нажимаем клавишу включения (в Recovery это аналог ), выбираем Yes и снова жмем .
Теперь переходим в пункт «Install zip from sdcard», а затем в «Choose zip from sdcard», находим my-rom-sign.zip на SD-карте и выбираем Yes. После завершения установки выбираем «Reboot system now».
Выводы
Android — гибкая платформа, и в этой статье описаны далеко не все возможности по ее модификации. Более глубокая модификация может включать в себя замещение ядра, изменение экрана блокировки и стандартных приложений, активацию таких возможностей, как автоматическая установка приложений на карту памяти, внедрение механизма загрузочных скриптов (/etc/init.d), и многое другое. Обо всем этом мы поговорим в следующих статьях.
Основанный на ядре Linux и полностью открытый Android как будто создан для разных хаков и модификаций. За все время существования ОС на ее основе были созданы сотни кастомных прошивок, найдены десятки способов изменения ее внешнего вида и поведения, появилась функциональность, не предусмотренная Google. Однако получить нужные функции до недавнего времени можно было, лишь перепрошив устройство, что неудобно и в ряде случаев опасно.
Хакерам, модерам и прочим энтузиастам известно несколько способов изменения внешнего вида, поведения и других параметров Android. Три наиболее популярных:
- Правка файлов /system/framework/framework.jar, /system/framework/framework-res.jar и /system/app/SystemUI.apk, которые содержат описание интерфейса и ресурсы, нужные для его отображения. Редактируя эти файлы, можно изменить внешний вид практически любого компонента интерфейса, начиная от размера кнопок и заканчивая цветом надписей.
- Правка исходных текстов компонентов системы. С помощью этого способа можно изменить что угодно — от реакции на нажатие кнопок громкости до полного изменения поведения системы. Другими словами, можно переделать ОС под себя.
- Декомпиляция и правка системных приложений, не имеющих исходных текстов. Таким образом можно изменить фирменные приложения Google, такие как Google Play и Gmail, исходники которых поисковый гигант не выкладывает.
Проблема всех этих способов в том, что они не позволяют менять Android «на живую». Нельзя взять со смартфона файл /system/framework/framework-res.jar, исправить его и скопировать обратно в систему. Технически в этом нет ничего сложного, достаточно получить root, перемонтировать /system в режиме чтения-записи и выполнить необходимые действия, однако изменения не вступят в силу до перезагрузки, да и загрузится ли система с новым файлом — большой вопрос.
Кроме того, изменив системный компонент, нельзя быть уверенным, что модификация заработает на другом смартфоне, даже если на нем установлена та же версия системы. А если версии различаются, то надежды нет совсем. В некоторых случаях модификацию вообще не удастся установить, так как загрузчик может быть залочен, а системный раздел защищен от записи (привет Motorola).
Из-за этих ограничений разработчики выпускают модификации либо в составе готовых прошивок, либо в виде обновлений, предназначенных для определенных версий ОС и моделей смартфонов. И те и другие следует устанавливать через консоль восстановления, перед этим сделав бэкап предыдущей прошивки и соблюдая последовательность, так как, установив одну модификацию поверх другой, затрагивающей тот же файл, мы потеряем функциональность первой.
В общем, слишком много хлопот для разработчиков и слишком много проблем для пользователей. К счастью, существует гораздо более дружелюбный способ установки модификаций и расширений.
Суть способа в следующем. Практически любая современная операционная система состоит из ядра и большого количества взаимосвязанных компонентов, в Linux это /boot/vmlinuz и библиотеки из каталогов /lib и /usr/lib, в Windows это ядро kernel32.dll и большое количество DLL-библиотек из системного каталога, в Android это опять же ядро Linux в выделенном разделе и большое количество Java-классов, упакованных в тот самый файл /system/framework/framework.jar.
Практически все компоненты, за исключением ядра, могут быть загружены либо во время инициализации ОС, либо по мере необходимости. Это значит, что компонент можно подменить на модифицированный, что, по сути, и происходит, когда мы устанавливаем одну из модификаций Android классическим способом: один или несколько файлов заменяются и загружаются системой при следующем включении.
Однако, как мы уже выяснили, у такого способа куча проблем, и поэтому лучше использовать другой путь, а именно: вклиниться в процесс загрузки файла (а в случае Android это Java-класс), затем перехватить вызовы его методов и направить по другому адресу. Так мы убьем сразу двух зайцев: не сломаем систему, поскольку не будем изменять системные компоненты вообще, и решим проблему с неудобством установки модификаций, так как сможем направить перехваченные вызовы (методы) Java-класса кому угодно, например обычному непривилегированному приложению. Именно так работает Xposed.
Любой класс в Android загружается с помощью небольшого нативного приложения /system/bin/app_process. Его задача — запустить виртуальную машину Dalvik, загрузить необходимые для работы системные классы (окружение исполнения) и передать управление классу (на самом деле происходит обращение к сервису Zygote, который форкает уже готовую ВМ и окружение в режиме copy-on-write, но в нашем случае это неважно).
Xposed представляет собой модифицированную версию app_process, которая при запуске первым делом загружает в память специальный Java-класс-перехватчик, а лишь после него — оригинальный Java-класс. Перехватчик выступает в качестве посредника для любых вызовов Java-методов, инициированных оригинальным классом и, в случае необходимости, перенаправляет их классу-обработчику.
Последний как раз и занимается тем, что изменяет поведение системы. Например, для определения цвета текста приложения используют метод GetColor класса android.content.res.Resources. Если класс-обработчик перехватит этот метод и вернет вместо кода серого цвета код зеленого, все надписи в интерфейсе станут зелеными. Модификации могут быть и более сложными, например когда они связаны с альтернативной реализацией сразу нескольких методов и целых классов.
В комплекте Xposed готовых классов-обработчиков нет, но он позволяет любому разработчику распространять их в виде обычных APK-пакетов, а пользователю просто установить и активировать с помощью специального интерфейса. Другими словами, с помощью Xposed можно устанавливать и удалять модификации Android как обычные приложения, без необходимости в прошивке, копировании в системный каталог и без какого-либо риска.
В терминологии Xposed классы-обработчики называются модулями, и в данный момент их насчитывается уже более сотни. Причем это не какие-то игрушки с изменением цветов из предыдущего примера, а серьезные доработки, такие как движок тем, глубокие модификации строки состояния, секьюрити-патчи, блокиратор рекламы, менеджер полномочий приложений и многое другое. В оставшейся части статьи я расскажу о наиболее интересных модификациях, а пока о том, как установить Xposed.
Xposed невозможно найти в маркете, с точки зрения Google это вредоносное приложение, которое может навредить системе. Это, конечно же, не так, но мы не будем спорить с Google, а просто скачаем приложение из интернета (файл XposedInstaller_2.1.4.apk). После установки приложение запросит права root, а затем выведет на экран интерфейс с несколькими кнопками. Нажимаем Install/Update и перезагружаем смартфон.
Все установленные пакеты, содержащие модули Xposed, будут автоматически появляться на вкладке Modules приложения. Включить их можно, просто поставив галочку напротив, а затем перезагрузив смартфон. К сожалению, искать и скачивать модули придется самостоятельно, так как в Google Play большинства из них нет, а работа по созданию родного репозитория Xposed еще не завершена.
Xakep #247. Мобильная антислежка
INFO
На странице Xposed есть файл Xposed-Disabler-CWM.zip, который следует использовать для прошивки через recovery в том случае, если фреймворк установился криво и теперь смартфон не загружается.
- https://rucore.net/modifikacii-prilozheniya-apk/
- https://androidp1.ru/dekompilyatsiya-apk-prilozheniya-android/
- http://puregoogle.ru/2013/06/menyaem-interfejs-android-shag-2-kompilyaciya-i-dekompilyaciya-prilozhenij/
- https://xakep.ru/2012/10/07/hand-maid-android/
- https://xakep.ru/2014/01/28/61958/