модифицированная версия андроид что это такое
Модификация стоковых прошивок для 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.
9. Страшно, не правда ли? Ничего же не понятно. Но, это дело поправимое. Создав несколько своих патчей и набив тем самым руку, вы легко сможете модифицировать код без сторонних средств. В нашем случае, в этом коде
происходит присваивание переменной v0 значение 1, то есть TRUE. Далее идут всякие проверки, и если телефон не китайский, то значение переменной изменяется:
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 файла
Замена оригинального файла на патченный
Обычно, для рядовых пользователей создаются специальные скрипты, которые через recovery заменяются. Но нам такое не интересно. Во-первых долго и нудно, во-вторых мы же опытные пользователи и можем себе позволить некоторые тонкости.
1. Заменить текущий рабочий файл можно следующими командами, если у вас уже стоит DEODEX прошивка и имеется root доступ:
1-ая команда закидывает патченный файл на флешку
2-ая команда открывает shell
3-ая команда дает root доступ
4-ая команда монтирует систему в режим чтения/записи
5-ая команда делает резервную копию файла
6-ая команда перезаписывает существующий файл новым патченным.
7-ая команда настраивает разрешения
8-ая команда удаляет кэш
9-ая команда делает перезагрузку устройства.
2. Спасибо что дочитали до этого пункта, осталось немного.
3. После перезагрузки ваш новый патченный код вступит в силу.
4. Если код не работает или выскакивает ошибка, то путем не хитрых комбинаций можно вернуть назад резервную копию.
Эпилог
Да, кому-то показалось данная статья слишком специфичной, кому-то мало-понятной, а кому-то бесполезной. Я специально обошелся без углубленной детализации и иллюстраций как это все выглядит в живую и на практике. Во-первых, данный труд будет неблагодарный и только породить еще больше вопросов. Во-вторых, не хочу видеть армию пользователей на форумах, которые жалуются, что убили свой телефон.
К следующей статье я расскажу как делать Твики. Будет пример использования автоматической записи телефонных звонков родными средствами телефона. Спасибо за ваше внимание.
Что такое Модифицированные прошивки или Кастомные?
На различных форумах все чаще можно услышать «непонятные» слова как модифицированные прошивки или кастомные прошивки, что это такое и зачем узнайте в этой статье!
Что такое Модифицированные прошивки или Кастомные или Стоковые?
Стоковые прошивки — это прошивки которая была предустановлена на заводе производителе, другими словами официальная, которая не повергалась ни каким изменениям.
Модифицированная или Кастомная прошивка — это прошивка в которой есть или встроены в систему приложение и другие изменения которых нет в официальной.
Плюсы Модифицированных прошивок
Помимо плюсов есть и минусы и модифицированные прошивки не являются исключением.
Минусы Модифицированных прошивок
Все данные минусы не очень существенны и в основном возникают у новичков.
Что стоит попробовать из Модифицированных прошивок
Команда AOKP — данная команда выпускает прошивки максимально приближенные к Android который установлен в аппаратах Nexus (чистый, никаких либо изменений в системе)
Видео обзор AOKP
Команда CyanogenMod — данная команда выпускает прошивки с максимальной функциональностью на сколько позволяет это Android, рекомендуется всем кто любит, ни в чем в себе не отказывать!
Видео обзор CyanogenMod
Команда MIUI — данная команда выпускает самые красивые прошивки, если вы любитель красоты, эстет, минималист и очень нравится интерфейсы от APPLE
Как установить?
Если вы уверены в своих силах, знаете и понимаете Android! То пора перейти от теории к действию! Просто взять и установить модифицированную прошивку! Как? Читайте в статье — установить кастомные прошивки на Android.
У вас еще остались дополнительные вопросы? Задавайте их в комментариях, рассказывайте о том, что у вас получилось или наоборот!
Вот и все! Оставайтесь вместе с сайтом Android +1, дальше будет еще интересней! Больше статей и инструкций читайте в разделе Статьи и Хаки Android.
Magisk. Модифицируем прошивку Android с комфортом
Содержание статьи
Немного теории
Чтобы понять принцип работы Magisk, начнем с так называемого несистемного root (systemless root).
Традиционно, чтобы получить root на смартфоне или планшете, необходимо было разместить файл su (который отвечает за повышение привилегий) в каталог /system/xbin/, то есть в системный раздел. Это действие изменяло его хеш-сумму, из-за чего терялась возможность установки ОТА-обновлений.
Более того, с выходом Marshmallow Google позаботилась о безопасности, основы которой были заложены в Lollipop, сделав невозможной корректную установку su в /system. Chainfire, разработчик SuperSU, начал поиск обходных путей, результат которого стал довольно неожиданным.
Вместо того чтобы размещать su в /system, он внедрил его в boot-раздел, содержащий ядро и так называемый RAM-диск. Последний представляет собой образ файловой системы, который загружается в оперативку на стадии начальной загрузки Android. RAM-диск содержит базовые компоненты системы, которые должны быть запущены еще до того, как раздел /system будет подключен.
Оказалось, что если внедрить su прямо в RAM-диск, то можно одним махом обойти все защитные механизмы Android и, кроме того, обеспечить нормальную работу OTA. Такой способ рутинга получил название systemless root (несистемный root) и стал основным в SuperSU для устройств, работающих на Android Marshmallow и Nougat. Стоит отметить, что этот способ также применим и для устройств Samsung, работающих на версии 5.1 (или новее).
Несистемный root имеет свои преимущества и недостатки. Основной недостаток в том, что он не работает на устройствах с заблокированным загрузчиком по умолчанию, — конечно, могут быть и обходные пути, но они специфичны для каждого устройства.
Однако несистемный root универсальнее традиционного. Во многих случаях он не ломает OTA-обновления. Несистемный способ «чище», так как он не добавляет и не изменяет файлы в разделе /system. Это означает, что удалить или скрыть root будет намного легче. После сброса к заводским настройкам возможность root-доступа будет удалена.
Последнее преимущество — это, конечно, палка о двух концах. Большинство пользователей предпочло бы, чтобы root-доступ все же остался, но для восстановления root-доступа нужно будет просто прошить файл SuperSU.
Magisk
Информация, изложенная выше, преследует одну цель — помочь понять, что systemless — это удобно и не страшно. Ведь Magisk использует именно такой способ работы с системой. Далее мы остановимся на особенностях Magisk более подробно.
Итак, Magisk — это утилита, которая патчит раздел boot и дает возможность устанавливать различные системные моды в режиме systemless. Она позволяет запускать скрипты на разных этапах монтирования и подменять файлы (например, build.prop) еще до монтирования раздела /data, скрывать наличие root и Xposed от приложений и сервисов типа Android Pay, Samsung Pay или Сбербанк Онлайн, а также спокойно получать OTA-обновления стоковых прошивок.
Однако главное преимущество Magisk в том, что при модификации RAM-диска он прописывает в него лишь загрузчик модификаций, тогда как сами моды хранятся в разделах /data и /cache. В результате после перепрошивки не нужно будет применять все моды заново, достаточно всего лишь установить Magisk, и он загрузит их все автоматически.
Также стоит отметить и другие возможности: подмену состояния загрузчика для других прог и состояния KNOX для устройств Samsung; несколько точек входа/инъекций для разработчиков, надежно гарантирующие паузы при загрузке до тех пор, пока не сработают все изменения; режим post-fs (cache), который срабатывает до того, как монтируется раздел /data, и позволяет, например, менять bootanimation; удаление dm-verity, forceencrypt; встроенный BusyBox, встроенная возможность подмены файла /etc/hosts (для блокирования рекламы).
Устанавливаем
Для работы Magisk необходим Android 5.0 и выше, разблокированный загрузчик и кастомный рекавери. Magisk не работает на смартфонах Pixel, Pixel XL и некоторых Asus. Может работать некорректно (не будет работать Magisk Hide и, как результат, SafetyNet) на стоковых прошивках Samsung и их модах.
Может быть два варианта установки Magisk в зависимости от того, есть ли на смартфоне root.
Вариант 1: смартфон рутован
Устанавливаем Magisk Manager из Google Play. Запускаем приложение, соглашаемся дать ему права root и устанавливаем, следуя подсказкам приложения.
Вариант 2: смартфон не рутован
Скачиваем актуальный установочный архив Magisk и прошиваем с помощью TWRP. Если есть желание использовать SuperSU вместо встроенного в Magisk менеджера root-доступа, то шьем SuperSU перед Magisk.
Стоит иметь в виду: если требуется легкое скрытие рута и минимум проблем с SafetyNet (то есть минимум проблем с Android/Samsung Pay, банками, играми), следует использовать root, встроенный в Magisk. Ты можешь справедливо заметить, что SuperSU можно скрыть с помощью suhide.zip, но он не всегда работает так, как нам хочется. В некоторых случаях он вызывает bootloop и необходимость восстановления из бэкапа.
Установка Magisk через TWRP и первый запуск |
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Что такое кастомная прошивка на Андроид и как ее установить
Операционная система Android позволяет пользоваться не только официальной прошивкой, но и пользовательской, которая так же называется кастомной.
Точнее, такую возможность дает не ОС, а мобильные устройства, разработанные для этой операционной системы.
Кастомные прошивки Андроид пользуются популярностью уже много лет. Обычно их предпочитают люди, разбирающиеся в процессах установки других ОС и понимающие как преимущества кастомки, так и риски.
Что такое кастомная прошивка на Андроид
Кастомная прошивка Андроид — это неофициальная операционная система, разработанная сторонними разработчиками. Она заменяет Android и предоставляет пользователю совершенно другой опыт эксплуатации.
Неофициальные операционные системы лишены всех ограничений Андроида, а также оснащены другими функциями.
Почти любая кастомка имеет больше возможностей, нежели стандартная операционная система от Google. Разрабатывают такие ОС, как правило, на ядрах Linux.
У пользовательских ОС есть и минусы. В первую очередь, это риск превратить свой аппарат с Android в кирпич, не подлежащий восстановлению.
Если вы четко следуете инструкции по установке и ставите качественную неофициальную операционную систему, то все пройдет хорошо. Но ошибку в таком процессе допустить легко, если вы не делали ничего подобного раньше.
Также недостаток заключается в том, что просто скачать и инсталлировать систему не получится. На установленную ОС необходимо поставить дополнения и приложения, дабы пользоваться устройством было комфортно.
Например, полезный софт от Гугл, такой как Play Market или YouTube. В общем, процесс не то что сложный, но требующий времени и внимания.
Я советую устанавливать кастомную операционную систему только если вы четко понимаете, почему этого хотите и как все нужно сделать. Для этого следует ознакомиться с лучшими пользовательскими операционными системами, а также вникнуть в процесс инсталляции.
6 основных кастомных прошивок
Среди массы ОС я выбрал 6 самых качественных, популярных и функциональных.
LineageOS
Раньше LineageOS называлась CyanogenMod. Это самая популярная пользовательская ОС.
Конфиденциальная, безопасная и стабильно работающая ОС, которая не вызывает у пользователей головных проблем и имеет интуитивно-понятный интерфейс. Есть интерфейс Trust, регулярные обновления и предустановленные эксклюзивные приложения.
PixelExperience
В случае с этой ОС не придется устанавливать сервисы Гугл отдельно, потому что они содержатся в кастомке. Также здесь имеются иконки, анимации, звуки и интерфейс, как в аппаратах Google Pixel. В общем, идеальный вариант для любителей Пикселей!
HavocOS
Большинство неофициальных прошивок не могут похвастаться широким функционалом по кастомизации интерфейса, поэтому HavocOS сильно выделяется среди общей массы.
У пользователя есть множество возможностей для настройки функций и интерфейса. Для тех, кто хочет собрать свою идеальную ОС, советую Havoc.
Resurrection Remix
Последняя версия данной кастомки разработана на основе десятого Андроида и мало чем отличается от официальной ОС. Разница лишь в том, что Resurrection Remix лишена ограничений гугловской прошивки.
crDroid
crDroid позволяет не просто настроить под себя интерфейс и возможности системы, но и поменять назначение кнопок, команд и жестов. Пользуется популярностью у разработчиков, так как на такой кастомке удобно тестировать почти любое ПО.
OmniROM
Еще одна кастомка, основанная на CyanogenMod. Omni работает быстрее большинства пользовательских прошивок, потому что разгружена от множества функций и почти не имеет предустановленного софта. Великолепно работает как на старых, так и на современных девайсах.
Инструкция по установке кастомной прошивки на Android
Итак, вы выбрали пользовательскую ОС и уверены, что хотите ее поставить? Тогда самое время переходить к процессу установки.
Скачивание прошивки
Все операционные системы, созданные сторонними разработчиками, доступны для бесплатной загрузки.
Прошивок для Android множество, мы привели ссылки на самые популярные и качественные из них (надо выбрать ОС именно для вашего устройства, ибо версий каждой множество):
Лучше скачать архив с системой на компьютер, дабы потом удобнее было взаимодействовать с мобильным устройством и файлы не затерялись среди других.
Загрузка GAPPS
В кастомных операционных системах нет сервисов Google, а они важны для большинства пользователей. Чтобы на вашей пользовательской прошивке были приложения от Гугл, необходимо скачать GAPPS.
Ссылка для загрузки программного обеспечения: https://opengapps.org. Выберете ваш тип ядра, версию операционной системы (например, CyanogenMod версии Android 6), на которой основана кастомка, и вид GAPPS (советую full).
Разблокировка Bootloader
Некоторые мобильные устройства поставляются с заблокированным бутлоадером. К счастью, это относится только к аппаратам, вышедшим 3-4 год назад и позже. Если бренд вашего девайса Sony, Huawei, HTC или Nexus, то разблокировка обязательна. Если же производитель другой, то Bootloader не заблокирован.
Установить TWRP
Теперь требуется инсталлировать на мобильное устройство режим восстановления, через который можно поставить пользовательскую операционную систему.
Процесс инсталляции TWRP идентичен установке любой прошивки: необходимо скачать архив, а затем поставить его на мобильное устройство. Ссылка для загрузки TWRP: https://twrp.me/Devices(надо скачать на компьютер).
Подробнее о том, как перепрошить гаджет, можно узнать в моих предыдущих статьях: про Леново, про Самсунг, про прошивку через компьютер в целом.
Процесс установки
Перейдем к тому, как установить кастомную прошивку на Андроид. Перед этим убедитесь, что скачали подходящую операционную систему и GAPPS, а также поставили TWRP. Ну и в случае с некоторыми производителями должен быть разблокирован бутлоадер.
Установка кастомной прошивки Android:
На этом кастомная прошивка Андроид установлена. Обычно первое включение занимает много времени, поэтому не удивляйтесь, если придется ждать 10-15 минут.