Android, мод прошивка своими руками. Создаем Android-прошивку из подручных материалов

Думаю практически у каждого пользователя андроид смартфона появлялось желание создать (отредактировать) прошивку под свои нужды и желания.
Так вот в данной статье мы и рассмотрим принцип редактирования прошивки для CWM (в zip формате)


---
что да как:

Открывая архив с прошивкой вы видите следующее:
META-INF - в папке хранятся скрипты установки прошивки
system - папка со всеми файлами прошивки (приложения, твики, скрипты и т.д.)
boot.img - ядро системы

Практически все манипуляции проводятся в папке system
её структура:
app - системные приложения
bin - ресурсы самой системы
etc - Скрипты, твики, конфиги, профили и настройки системы
fonts - Системные шрифты
framework - здесь хранятся главные файлы системы (графика, настройки текста анимации и т.д)
lib - библиотеки системы
media - файлы мультимедиа (мелодии уведомлений, анимация загрузки, обои и т.д)
usr - настройки не изменяемые в дальнейшем системой (работают в режиме "только чтение")
xbin - опять же системные конфиги и прочие твики
build.prop - инфа о системе, настройки локали и производительности системы.


---
Приложения

Перед тем как добавлять/удалять софт в систему, необходимо проверить деодексирована ли ваша прошивка (то есть проверить наличие файлов.odex в папке app. Если оные в наличии, то необходимо от них избавиться по .
-Добавляем софт в прошивку:
Прежде всего необходимо установить себе в смарт те программы которые вы хотите добавить в сборку.
После установки достаём их из системы при помощи Root Exporer и его аналогов, находятся они по пути data/app , так же нам понадобятся их либы (если они конечно есть) они находятся по пути data/data. Находятся они в одноимённой приложению папке и имеют расширение .so .
Затем изъятые.apk файлы кладем в архив по пути system/app и файлы с расширением.so (lib"ы) по пути system/lib .
-Удаляем софт из прошивки:
Тут всё просто, заходим в папку app - определяемся что нам не нужно и удаляем весь ненужный софт (систему лучше не трогать)


---
Язык и версия прошивки

Копируем файл build.prop на рабочий стол. Открываем его блокнотом и находим строчки

ro.product.locale.language=en
ro.product.locale.region=US


для русского языка необходимо сделать так:

ro.product.locale.language=ru
ro.product.locale.region=RU


название своего мода вписываем в строку

в том же build.prop

---
графика

Вся графическая часть прошивки хранится в двух файлах
framework-res.apk путь к файлу systemframework и SystemUI.apk по пути systemapp. А графическая часть приложения настройки хранится естественно в приложении Settings.apk.
Принципы распаковки, редактирования и сборки файлов с расширением.apk можно изучить .


---
Скрипты и твики (ускорение и оптимизация системы)

Большая часть настроек проводится в файле build.prop , по этому поводу есть .
Так же если ваше ядро поддерживает init.d (об этом можно узнать на форуме о вашем девайсе) есть ряд скриптов для оптимизации системы, один из них описан и в данной статье


---
Замена шрифтов системы

Как выше излагалось все шрифты содержаться в папке fonts , основные шрифты это: DroidSans.ttf и DroidSans-Bold.ttf их можно заменить любыми шрифтами из нашего сайта переименовав их аналогично вышеуказанным и переместить с заменой в архив с прошивкой в папку fonts .

Нередко случается, что кому-то из пользователей Android не по душе стандартная прошивка его смартфона либо планшета. Например, по причине лишнего софта, из-за которого стремительно сокращается , либо просто не нравится функционал некоторых программ и хочется заменить их другими. Начинаются усиленные поиски пользовательских прошивок, но и они не всегда дают желаемый результат. Что делать?

Любую прошивку можно доработать под определенного пользователя

Далеко не все знают, что прошивку можно допилить под свои личные потребности. Существуют несколько способов, как это можно сделать, каждый из них отличается уровнем сложности и необходимым набором инструментов. И, если вы не знаете, как собрать прошивку Android самостоятельно, эта статья для вас.

Сборка из исходников

Один из самых правильных способов является использование исходного кода, публикуемого командами разработчиков Google или Cyanogenmod. Но одновременно этот способ самый сложный, ведь для того, чтобы собрать прошивку Android из исходников, оптимизировать её и заставить работать на конкретном устройстве, нужно обладать довольно глубокими навыками программирования, разбираться во всех тонкостях работы мобильной операционной системы и железа устройства. Эти знания не приобретаются за день, поэтому в этой статье мы не будем подробно описывать этот способ.

Изменение уже готового файла

Если вы не слишком разбираетесь во всех тонкостях работы ОС, но хотите что-то изменить в своей прошивке, лучшим решением будет подправить уже . Можно изменить как родную, встроенную прошивку, так и уже изменённую кем-то другим. Кастомизированных прошивок в интернете очень много, и вы вряд ли будете испытывать недостаток в их количестве. Итак, представляем пошаговую инструкцию по сборке собственной прошивки на основе уже существующего продукта.

Редактирование с помощью компьютера Необходимое программное обеспечение

Нам понадобится компьютер, устройство, файл прошивки и специальная программа под названием Android Kitchen (известная также как кухня). Файл прошивки можно найти на специализированных форумах, наиболее известные - англоязычный XDA Developers и русскоязычный 4PDA. В разделе вашей модели устройства можно найти ссылки на самые популярные и проверенные прошивки как официальные стоковые, так и неофициальные пользовательские.

Далее нужно установить кухню на свой компьютер. Лучше всего работать под Linux, но необходимые библиотеки можно поставить и в Windows. В этом случае можно выйти из ситуации установив Cygwin. и следуйте пошаговой инструкции, помещённой в архиве. Перед этим потребуется установить также Java Platform (JDK) с официального сайта (https://www.oracle.com/technetwork/java/javase/downloads/index.html для Windows) или же в Центре приложений Ubuntu найти и скачать OpenJDK Java 6 Runtime либо похожее (для Linux). Второй вариант использования - установить Linux на виртуальную машину и управлять процессом через неё.

Модификация прошивки

Прошивки чаще всего распространяются в виде файла с расширением.img, реже - как ZIP-архив. В обоих случаях вам понадобится с прошивкой в папку установленной кухни, чтобы она смогла импортировать её и начать с ней работу. Кухня должна быть установлена по пути c:/cygwin/home/user/ (при установке через Cygwin) или Файловая система/home/user/ (при работе через Linux).

  • Запустите кухню через Cygwin или Linux-терминал с помощью команды cd kitchen, затем./menu.
  • Распакуйте архив в кухню, как уже писалось выше.
  • После того как появится меню программы, перейдите в раздел 0. Advanced Options.
  • После этого будет представлен список команд для модификации прошивки. Выберите именно ту, которая нужна вам. Можно добавить Busy Box, Root, Apps2SD, заменить стоковые приложения, различные анимации, освободить память устройства и многое другое.
  • После окончания манипуляций запустите в главном команду 99. Build ROM from working folder (Построить прошивку с рабочей папки) и заберите ZIP-архив с OUTPUT_ZIP.
  • Прошивка устройства

    Прошить устройство можно как через компьютер, так и без него. В первом случае нужно скачать программу для прошивки, обычно это Flash Tool или Odin, драйверы для вашей модели устройства и подготовить уже подправленный архив.

    При прошивке через Recovery понадобится скопировать файл в корень карты памяти, загрузить устройство в режиме Recovery, отформатировать устройство и кэш, а затем установить прошивку из архива. После перезагрузки у вас будет изменённая лично вами прошивка.

    Редактирование на устройстве

    Самый простой способ из всех возможных. Не нужно никаких дополнительных приборов и манипуляций. Вам понадобится лишь устройство с рут-правами, приложение для создания резервных копий (лучше всего Nandroid backup) и файловый менеджер с функцией изменения системного раздела.

    Изменение собственной прошивки
  • Если на устройстве ещё не получен root, получите его. Как это сделать, можно прочесть на специализированных форумах в разделе, посвящённом именно вашему аппарату. Дело в том, что поддерживаются малым количеством устройств и большинство из них имеют индивидуальную процедуру.
  • Установите Nandroid backup (https://play.google.com/store/apps/details?id=com.h3r3t1c.onnandbup&hl=ru) и сделайте с его помощью резервную копию системы своего девайса. Сохраните её в надёжном месте, например, в облачном хранилище. Для чего создавать копию? Вдруг что-то пойдёт не так или вы нечаянно удалите что-то нужное - будет возможность вернуть всё как было.
  • Установите файловый менеджер, работающий с системным разделом, чтобы удалить ненужный софт и добавить свои приложения. Золотым стандартом является Titanium Backup.
  • Выберите приложения, которые вы хотите удалить, и удалите их через файловый менеджер.
  • Установите приложения, которыми вы хотите заменить удалённые, и через Titanium Backup сделайте их системными.
  • Перезагрузите устройство и наслаждайтесь своими успехами.
  • Изменение сторонней прошивки в ZIP-архиве
  • Скачайте интересующий вас файл прошивки в формате.zip.
  • Установите файловый менеджер, умеющий работать с архивами, например, ES Проводник или Total Commander, и распакуйте содержимое архива.
  • Удалите лишние или добавьте недостающие приложения, после чего запакуйте архив обратно и переместите в корень флеш-карты.
  • С помощью Nandroid backup (https://play.google.com/store/apps/details?id=com.h3r3t1c.onnandbup&hl=ru) создайте резервную копию системы и скопируйте её на облачный диск.
  • Прошейте устройство из режима Recovery.
  • Заключение

    Как видите, сборка прошивки Android своими руками необязательно очень длительный и , требующий глубоких познаний. Понятно, что с нуля создать модификацию будет куда сложнее, но что-то подправить или заменить и удалить лишние программы под силу практически каждому. Надеемся, наша инструкция вам в этом помогла.

    Собирали ли вы прошивку для Android самостоятельно? Что вы в ней меняли и каким образом это делали? Будет интересно, если вы поделитесь своими отзывами.

    Многие держатели смартфонов и планшетных компьютеров в определенный момент задумываются над тем, как прошить андроид. Необходимость в перепрошивке устройства может возникнуть из-за возникновения проблем в работе гаджета. Также обновить андроид имеет смысл и в других случаях, например, чтобы улучшить функционал операционной системы и .

    ЧТО НУЖНО СДЕЛАТЬ, ПЕРЕД ТЕМ КАК ПРОШИТЬ АНДРОИД ТЕЛЕФОН

    Неправильный подход к вопросу перепрошивки может привести к возникновению серьезных проблем с устройством, а потому нужно подготовиться к этому мероприятию. Перед тем как прошить андроид необходимо в обязательном порядке сделать следующее:

  • Прежде чем начать обновление операционной системы убедитесь, что устройство полностью заряжено. Важно исключить вероятностью отключения. Можете подключить гаджет к зарядному устройству во время процедуры. Если планшет или смартфон отключится во время обновления прошивки, произойдет потеря системы и данных.
  • Уточните версию операционной системы android, которая актуальна для вашего устройства, а также выясните, какая прошивка установлена в настоящий момент. Уточнить эту информация можно в настройках устройства в разделе «О телефоне». Обратите внимание на версию Аndroid, версию ядра и номер сборки.
  • Теперь на основании этих данных нужно найти и скачать новую прошивку, которая будет полностью соответствовать вашей модели смартфона или планшетного компьютера.
  • КАК ПРОШИТЬ АНДРОИД С ПОМОЩЬЮ КОМПЬЮТЕРА

    Следует сказать, что существует несколько способов прошить Android и в этой статье мы рассмотрим самые распространенные. Начнем с прошивки гаджета с помощью специальной программы, которая предварительно устанавливается на компьютер. Есть немало приложений, позволяющих установить на устройство новую версию ОС, однако мы решили остановиться на программе Fastboot, так как она отличается безопасностью, удобством и надежностью, а также лучше всего подходит для модели, которую мы будем прошивать в качестве примера. Итак, разберемся в том, как перепрошить Андроид используя усилиту Fastboot.

    Примечание: программу для перепрошивки Андроид следует выбирать исходя из того, девайсом какого производителя вы пользуетесь. Рекомендуем вам ознакомиться со следующим списком программ по производителям:
  • Samsung - Odin
  • Lenovo -
  • HTC -
  • LG - KDZ Updater
  • Sony -
  • Nexus - .
  • Прежде всего нужно скачать данное приложение. С поиском Fastboot проблем не возникнет, достаточно уметь пользоваться поисковыми системами, а это сегодня под силу каждому. Скачайте программу и распакуйте в корень диска С, чтобы путь к файлу выглядел следующим образом: C:\Android.

    В папке «Tools » находятся нужные утилиты, a в директории «Driver » – драйвера. Теперь нужно подключить к компьютеру устройство, которое планируется перепрошить и выполнить установку драйвера. Как правило, девайс автоматически находит нужные драйвера, однако иногда этого не происходит. В таком случае необходимо открыть сайт производителя вашего смартфона или планшета и скачать программное обеспечение. Обратите внимание на то, чтобы прошивка, которую планируется скачать подходила для вашей модели гаджета. Прошивку нужно скачать в формате.zip и закинуть в папку Tools, которая находится здесь: C:\Android.

    Перед тем, как прошить андроид необходимо разблокировать на своем устройстве. Процесс будет отличаться в зависимости от конкретной модели гаджета. Откройте на компьютере меню «Пуск », в поисковой строке введите значение «cmd » и выберите программу cmd.exe .

    В окне командной строки введите cd C:\Android\Tools . Подтвердите команду посредством нажатия на клавишу Enter, после чего вы окажетесь в директории «Tools ».

    Теперь необходимо ввести команду команду следующего вида: fastboot devices .

    Если вам был выдан код устройства, то fastboot определил ваш смартфон или планшет и можно начинать перепрошивку андроид. Если в окне появилась надпись «waiting for device », нужно выключить гаджет и выполнить установку драйверов. Теперь нужно ввести команду для прошивки: fastboot update название_файла_прошивки.zip После этого начнется перепрошивка. Не забудьте перезагрузить устройство после окончания обновления операционной системы.

    КАК ПЕРЕПРОШИТЬ АНДРОИД ЧЕРЕЗ RECOVERY

    Еще один способ как перепрошить Андроид - это использовать стандартные recovery или . Что собой представляют кастоные recovery подробнее мы объясним ниже. Говоря кратко - это неофициальные прошивки. Итак, найдите в интернете подходящую вам прошивку, скачайте ее и сохраните в корень файловой системы вашего девайса.

    ЧТО ТАКОЕ КАСТОМНАЯ ПРОШИВКА АНДРОИД?

    Кастомными называют прошивки неофициальных версий, то есть созданные с нуля, или модифицированные. Для их установки не всегда обязательной является процедура . Как вы уже поняли, подобные прошивки не имеют никакого отношения к официальным разработчикам, а создается энтузиастами с целью улучшить ОС, добавив в нее дополнительные возможности и убрав ошибки. На первый взгляд может показаться, что кастомные прошивки предполагают сплошные преимущества и во всем превосходят официальные версии. Однако не все так просто.

    Дело в том, что нередко такие прошивки отличаются не стабильной работой и могут привести к возникновению проблем с устройством. Именно поэтому, перед тем, как прошить Андроид с помощью кастомной прошивки, необходимо изучить отзывы тех, кто это уже делал. Только после детального изучения можно скачать прошивку и приступать к ее установке. Что касается установки неофициальных прошивок, то приведенные выше варианты вполне подходят. К тому же, подробная инструкция по установке кастомной прошивки практически всегда есть на сайте, где эта самая прошивка находится.

  • Nexus - .
  • На этом мы будем заканчивать эту статью. Надеемся, теперь вы знаете, как прошить андроид.



    Спустя пару лет использования пользователь смартфона может столкнуться с некоторыми проблемами операционной системы девайса. Сегодня мы расскажем, как перепрошить Андроид самостоятельно, чтобы избавиться от всех этих неполадок.

    Что такое прошивка?

    Прошивка телефона – это процесс замены операционной системы смартфона с целью исправления неполадок. Зачастую такая мера является крайней, т.е. применяется уже тогда, когда другие способы решения проблемы не помогают. Установка новой прошивки также возможна при выходе новой ОС.

    Как правило, большинство крупных производителей Android гаджетов сами обновляют свои изделия «по воздуху», или же просто размещают на своем сайте самую свежую версию прошивки. Однако иногда телефон лишается поддержки (это особенно актуально для китайских аппаратов) и тогда комьюнити гаджета само выпускает кастомные версии прошивок с расширенным функционалом.

    Итак, перепрошить свой смартфон можно с помощью специального софта:

    • CWM Recovery;
    • TWRP Recovery;
    • ROM Manager;
    • При помощи компьютера и специального набора утилит (Fastboot, KDZ Update и т.д.).

    Перед началом процесса установки новой ОС обязательно позаботьтесь о сохранности данных на внутренней памяти телефона – сделайте бекап важной информации. Ниже мы рассмотрим несколько способов установки операционной системы.

    CWM Recovery

    Утилита ClockWorkMod Recovery имеет широкий функционал по установке новых прошивок для смартфона. Неофициальные прошивки можно установить через Рекавери, при этом не обязательно использовать именно CWM. По умолчанию, все устройства «из коробки» уже имеют стандартную версию Рекавери. Поэтому изначально вам понадобится установить CWM Recovery. Сделать это можно через ROM Manager.

    Напомним, что для нормальной работы ROM Manager вам понадобятся root-права для вашего Android девайсa. Итак, после установки ROM Manager на свой смартфон выполните следующие действия:

  • Откройте пункт «Recovery Setup». В следующем окне в разделе «Install or update Recovery» выберите «ClockworkMod Recovery»;
  • Затем приложение автоматически определит ваше устройство. Вам остается лишь нажать на соответствующий пункт в меню;
  • В новом окне выберите «Установить ClockworkMod». После этого начнется процесс загрузки утилиты;
  • По завершению загрузки появится окно с запросом подтверждения root прав для нового приложения.
  • На этом процесс установки завершен, вы должны увидеть финальное сообщение «Successfully flashed ClockworkMod recovery!».

    После установки CWM Recovery можно приступать непосредственно к самой прошивке. Перед тем, как перепрошить андроид смартфон, скачайте файл с новой версией ОС в формате.zip. Затем выполните следующие действия:

  • Выключите аппарат и нажмите клавишу громкости вверх + кнопку включения одновременно (в некоторых смартфонах комбинация для запуска Рекавери может отличаться). В меню утилиты можно перемещаться с помощью кнопок громкости, а клавиша питания осуществляет выбор соответствующего пункта. Выполните сброс настроек в пункте «wipe data/factory reset»;
  • Нажмите «Yes – Wipe all user data» в новом окне;
  • Вернитесь в главное меню и выберите «install zip». Далее перейдите к соответствующей папке с файлом прошивки в «Choose zip from /sdcard».
  • По завершению процесса установки должно появиться сообщение «Install from sdcard complete». Опять вернитесь в главное меню и перейдите к пункту «reboot system now». После этого должна начаться загрузка установленной прошивки, иногда этот процесс может занимать до 10 минут. По завершению всех действий смартфон готов к работе.

    TWRP Recovery

    Установка через эту утилиту не будет иметь какого-либо влияния на конечный результат, поэтому способ прошивки зависит сугубо от ваших личных предпочтений. Для работы с TWRP Recovery сначала нужно воспользоваться официальным приложением Official TWRP App, которое установит утилиту на смартфон. Эта версия Рекавери работает с теми же.zip файлами, что и CWM.

    Итак, выполните следующие действия:

  • Скачайте нужную версию прошивки в.zip формате, поместите её в папку в памяти телефона;
  • Откройте утилиту. Сделать это можно тем же способом, что и с CWM Recovery (выключите смартфон и нажмите соответствующую комбинацию клавиш);
  • Сбросьте настройки системы для заводских, выбрав «Wipe» в главном меню. Чтобы начать процесс, перетащите ползунок на экране вправо;
  • По завершению сброса настроек вернитесь в главное меню. Перейдите к пункту «Install»;
  • В памяти устройства найдите папку с прошивкой, перетащите ползунок для начала процесса установки;
  • После завершения установки Нажмите на «Reboot System», чтобы загрузить Android.
  • Опять же, процесс первой загрузки Андроид после установки прошивки может занять довольно продолжительное время.

    ROM Manager

    Помимо своего основного предназначения, ROM Manager также можно использовать для создания бекапа системы перед установкой прошивки. Итак, для перепрошивки выполните следующие действия:

  • Скачайте архив с нужной версией ОС, поместите его в память телефона. В главном меню приложения выберите пункт «Установить ROM с SD карты»;
  • Найдите соответствующий архив и кликните по нему. В новом окне выберите «Перезагрузка и установка». Рекомендуем также установить галочку напротив «Сохранить текущий ROM», так вы сможете восстановить систему если что-то пойдет не так;
  • Подтвердите свое действие, ROM Manager автоматически начнет процесс установки прошивки через Recovery.
  • ROM Manager также умеет искать кастомные прошивки для устройства в Интернете. Для этого в главном меню приложения есть пункт «Скачать прошивки».

    Как прошить телефон Андроид через компьютер

    Чтобы перепрошить смартфон с помощью компьютера в домашних условиях, нужно воспользоваться несколькими десктопными утилитами. Ниже мы расскажем, как установить новую версию ОС через Fastboot, одну их самых популярных программ для этого. Итак, для начала вам нужно скачать архив с прошивкой и разархивировать его в папку «platform-tools», в которой находятся «ADB» и «fastboot».

    Затем нужно перевести свой смартфон в fastboot mode. Для этого включите отладку по USB, перейдите в командную строку на компьютере и последовательно введите команды cd /, cd путь к файлу «adb». В нашем примере адрес – C:\Program Files (x86)\Android\android-sdk\platform-tools. После ввода всех команд телефон должен перезагрузиться в режиме fastboot.

    Перед тем, как перепрошить телефон Андроид через компьютер в домашних условиях, отформатируйте все разделы девайса с помощью следующих команд:

    • fastboot erase boot;
    • fastboot erase userdata;
    • fastboot erase system;
    • fastboot erase recovery;
    • fastboot erase cache.

    После ввода каждой команды нужно нажимать клавишу Enter. Далее введите команду flash-all, которая автоматически начнет установку прошивки (в папке должен находиться файл flash-all.bat). По завершению процесса вы увидите сообщение об успешной установке.

    Здравствуй Хабр!

    Несколько лет назад, когда я впервые познакомился с 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 , а класс, который содержал данную подпрограмму находился в

    Распаковка и анализ оригинального файла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.
    public static boolean isChina() { if ((HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag == 23)); while (((HtcBuildFlag.Htc_PROJECT_flag == 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) return true; return false; }
    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 и смотрим код:
    .method public static isChina()Z .registers 3 .prologue const/4 v0, 0x1 .line 276 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0xd8 if-eq v1, v2, :cond_13 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0xda if-eq v1, v2, :cond_13 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0x17 if-ne v1, v2, :cond_14 .line 297:cond_13:goto_13 return v0 .line 283:cond_14 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S if-ne v1, v0, :cond_1d .line 285 const/4 v1, 0x2 sget-short v2, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_LANGUAGE_flag:S if-eq v1, v2, :cond_13 .line 291:cond_1d sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0x1b if-eq v1, v2, :cond_13 .line 297 const/4 v0, 0x0 goto:goto_13 .end method
    9 . Страшно, не правда ли? Ничего же не понятно. Но, это дело поправимое. Создав несколько своих патчей и набив тем самым руку, вы легко сможете модифицировать код без сторонних средств. В нашем случае, в этом коде
    .prologue const/4 v0, 0x1 происходит присваивание переменной v0 значение 1, то есть TRUE. Далее идут всякие проверки, и если телефон не китайский, то значение переменной изменяется:
    .line 297 const/4 v0, 0x0 goto:goto_13
    10 . Самый простой способ спасти отца русской демократии, это изменить код на следующий:
    .prologue const/4 v0, 0x0 , то есть поменять значение переменной с 1 на 0. То есть что бы ни было, всегда бы возвращалось значение FALSE и в JD-GUI код выглядел бы как public static boolean isChina() { if ((HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag == 23)); while (((HtcBuildFlag.Htc_PROJECT_flag == 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) return false; return false; }
    11 . Да, метод,будет работать. Но мы же не ищем легких путей - это раз. Во-вторых не совсем красиво. Хочется кода что-то вроде
    public static boolean isChina() { return false; }
    12 . А как нам получить Dalvik код данного исходного кода? Для новичков мы сделаем небольшой трюк.

    Создание Dalvik кода1 . Открываем Android SDK.
    2 . Создаем новый проект, и в наш единственный тестовый класс пишем следующий код
    package ru.habrahabr.test; public class test { public static boolean isChina() { return false; } }
    3 . Компилируем наш проект и затем берем собранное приложение из рабочей области.
    4 . Кладем собранное приложение в папку, где мы с вами потрошили JAR файл.
    5 . Даем команду java -Xmx512m -jar baksmali.jar -a -d -o test -x test .apk
    6 . Мы дизассемблировали только что собранное приложение в Dalvik код.
    7 . Открываем наш файлик test.smali и видим там код
    .method public static isChina()Z .registers 1 .prologue .line 7 const/4 v0, 0x0 return v0 .end method
    8 . Все, код для патчинга готов.Накатывание патча1 . Dalvik код замусорен маркерами, указывающими строку кода в оригинальном исходном файле. Это нужно при выводе ошибок, если таковые имеются в вашей программе. Без указаний строк код также прекрасно работает.
    2 . Удаляем строки с нумерацией строк, копируем и заменяем метод (подпрограмму) в нашем \com\htc\util\contacts\BuildUtils$Customization.java файле.
    .method public static isChina()Z .registers 1 .prologue const/4 v0, 0x0 return v0 .end method
    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 доступ:

    Adb push HTCExtension.jar /sdcard/HTCExtension.jar adb shell su mount -o remount -rw /system dd if=/system/framework/HTCExtension.jar of=/system/framework/HTCExtension.jar.back dd if=/sdcard/HTCExtension.jar of=/system/framework/HTCExtension.jar chmod 644 /system/framework/HTCExtension.jar rm /data/dalvik-cache/system@[email protected]@classes.dex reboot

    1-ая команда закидывает патченный файл на флешку
    2-ая команда открывает shell
    3-ая команда дает root доступ
    4-ая команда монтирует систему в режим чтения/записи
    5-ая команда делает резервную копию файла
    6-ая команда перезаписывает существующий файл новым патченным.
    7-ая команда настраивает разрешения
    8-ая команда удаляет кэш
    9-ая команда делает перезагрузку устройства.

    2 . Спасибо что дочитали до этого пункта, осталось немного.
    3 . После перезагрузки ваш новый патченный код вступит в силу.
    4 . Если код не работает или выскакивает ошибка, то путем не хитрых комбинаций можно вернуть назад резервную копию.
    adb shell su mount -o remount -rw /system dd if=/system/framework/HTCExtension.jar.back of=/system/framework/HTCExtension.jar rm /data/dalvik-cache/system@[email protected]@classes.dex reboot

    Эпилог Да, кому-то показалось данная статья слишком специфичной, кому-то мало-понятной, а кому-то бесполезной. Я специально обошелся без углубленной детализации и иллюстраций как это все выглядит в живую и на практике. Во-первых, данный труд будет неблагодарный и только породить еще больше вопросов. Во-вторых, не хочу видеть армию пользователей на форумах, которые жалуются, что убили свой телефон.

    К следующей статье я расскажу как делать Твики. Будет пример использования автоматической записи телефонных звонков родными средствами телефона. Спасибо за ваше внимание.

    P.S. Если что-то не понятно или смущает, задавайте вопросы - всегда буду рад ответить и пояснить.