Собираем прошивку андроид. Создаем Android-прошивку из подручных материалов. Необходимые компоненты и условия работы Samsung Root Firmware Replacer

Нередко случается, что кому-то из пользователей 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).

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

Прошивка устройства

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

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

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

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

Изменение собственной прошивки

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

  1. Установите файловый менеджер, работающий с системным разделом, чтобы удалить ненужный софт и добавить свои приложения. Золотым стандартом является Titanium Backup.
  2. Выберите приложения, которые вы хотите удалить, и удалите их через файловый менеджер.
  3. Установите приложения, которыми вы хотите заменить удалённые, и через Titanium Backup сделайте их системными.
  4. Перезагрузите устройство и наслаждайтесь своими успехами.

Изменение сторонней прошивки в ZIP-архиве

  1. Скачайте интересующий вас файл прошивки в формате.zip.
  2. Установите файловый менеджер, умеющий работать с архивами, например, ES Проводник или Total Commander, и распакуйте содержимое архива.
  3. Удалите лишние или добавьте недостающие приложения, после чего запакуйте архив обратно и переместите в корень флеш-карты.
  4. С помощью Nandroid backup (https://play.google.com/store/apps/details?id=com.h3r3t1c.onnandbup&hl=ru) создайте резервную копию системы и скопируйте её на облачный диск.
  5. Прошейте устройство из режима Recovery.

Заключение

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

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

Многих современных пользователей пугает понятие «перепрошивка», если оно упоминается в контексте мобильных телефонов, поэтому было бы полезно разобрать, как прошить телефон Андроид. Чаще всего это нужно на случай, если телефон не включается или начал очень сильно глючить. Хотя некоторых просто не устраивает их прошивка из-за дизайна или других подобных моментов.

В любом случае, мы будем рассматривать самый простой способ, который смогут выполнить даже самые неопытные пользователи. Этот способ подойдет для всех моделей смартфонов от Самсунг, HTC, FLY и других современных производителей.

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

Что нам понадобится

Кроме самого мобильного телефона, данный способ предусматривает наличие программы под названием ROM Manager. Скачать ее лучше всего на Google Play.

Разработчиком данного приложения является команда под необычным названием ClockworkMod. Эта команда давно пользуется огромной популярностью и авторитетом среди пользователей самых разных стран.

Их творение позволяет с легкостью менять прошивки, а также выполнять огромное количество системных манипуляций.

Основные среди них такие:

  • Резервное копирование;
  • Восстановление системы;
  • Установка новых прошивок (то, что нам и нужно) и многое другое.

Основное преимущество использования программы ROM Manager для перепрошивки любого телефона, будь то Самсунг, HTC, FLY или какого-то другого, заключается в возможности откатить все изменения.

Это означает, что если при установке или уже после нее возникнут какие-то проблемы (к примеру, если телефон не включается), новая прошивка просто не понравиться по каким-либо причинам, все можно будет вернуть назад.

Среди других преимуществ использования ROM Manager особенно важно следующее:

  • Это несложно и все можно сделать в домашних условиях;
  • Все операции производятся довольно быстро;
  • Через компьютер делать ничего не нужно, все происходит через телефон (разве что через компьютер нужно будет перекинуть на телефон прошивку, хотя для этого есть и другие способы, такие как Bluetooth или файлообменники);
  • Надежность – тысячи пользователей уже делали подобную процедуру.

Также нам понадобится сама новая прошивка. Многие пользователи сегодня не знают, где ее найти. А сделать это легче всего через телефон.

В Google нужно ввести запрос типа «прошивки на [модель телефона]», то есть, к примеру, «прошивки на Samsung Galaxy J7». Все это делается очень даже просто.

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

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

Совет: Прочитайте в интернете, что пишут другие пользователи о той версии прошивки, которую Вы собираетесь скачать.

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

Совет: Воспользуйтесь программой ROM Manager Premium, которая позволит непросто найти прошивки для Вашей модели телефона, а еще и покажет, какие из них наиболее популярны среди других пользователей. Также в окне программы можно будет посмотреть обсуждения других пользователей относительно той или иной версии прошивки.

В любом случае, перед выполнением всех описанных ниже действий на Вашем телефоне, а точнее, на карте памяти (это важно!), должен находиться zip архив с новой прошивкой.

Итак, перейдем к самому процессу прошивки.

Этапы прошивки телефона Андроид

Программа ROM Manager уже скачана и установлена на Вашем телефоне.

Теперь необходимо сделать следующее:

  1. Получить root права. Если Вы не знаете, как это делать, специально для Вас дальше будет описан весь этот процесс.
  2. Открыть программу ROM Manager и установить ClockWorkMod. Он представляет собой программу, которая выполняет загрузки каких-либо файлов.

Да, у Андроид есть своя такая программа, но нам нужно, чтобы работал ClockWorkMod.

Для этого нужно сделать следующее:

  • В верхней части окна программы, в разделе под названием «Режим Recovery» нажать кнопку «Установить ClockWorkMod» (выделена на рисунке №1.а);
  • После этого следует нажать на свое устройство в выпадающем списке, внешний вид которого показан на рисунке №1.б;

№1. Главное меню программы ROM Manager и окно выбора модели телефона

Внимание: Перед установкой ClockWorkMod телефон не должен быть подключен к компьютеру. И вообще лучше выключить все его средства связи, кроме Wi-Fi, который даст возможность скачивания нужных файлов.

  • Ждем конца скачивания и установки ClockWorkMod.

Теперь необходимо сделать резервную копию системы. Она понадобится на случай неправильной установки новой прошивки или других проблем с ней.

Для этого необходимо сделать следующее:

  1. В главном меню выбрать команду «Сохранить текущий ROM» (выделена на рисунке №2);
  2. Указать имя архива, в котором будет храниться текущая прошивка, то есть резервная копия системы в окне;
  3. Нажать кнопку «ОК» в том же окне;
  4. Ждем, пока программа создаст резервную копию системы и сохранит ее в архиве с указанным пользователем именем.

№2. Создание резервной копии в ROM Manager

Чтобы перейти непосредственно к установке новой прошивки, в окне программы ROM Manager необходимо выбрать пункт «Установить ROM c SD карты», который выделен на рисунке №3. После этого нужно будет выбрать, где находится скачанная Вами ранее прошивка, то есть zip архив с ней.

№3. Кнопка «Установить ROM c SD карты»

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

Совет (обязательно к исполнению!): После всех вышеуказанных шагов подключите телефон к зарядному устройству. Это очень важно, ведь если телефон разрядится во время установки новой прошивки, это может привести к необратимым последствиям.

После этого придется подождать. В зависимости от модели этот процесс может занимать до двух часов, хотя в большинстве случаев на него тратится не более 45 минут. На этом процесс перепрошивки будет завершен.

Процесс получения root прав

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

Список этих программ выглядит следующим образом:

  • Framaroot;
  • Universal AndRoot;
  • VISIONary+;
  • GingerBreak;
  • z4root;
  • Baidu Root;
  • Romaster SU;
  • Towelroot;
  • Root Dashi;
  • 360 Root.

Теперь Вам достаточно найти одну из них в интернете, скорее всего на Google Play, установить и воспользоваться. Можно с уверенностью сказать, что Вы сможете разобраться в том, как их пользовать.

К примеру, окно программы Framaroot показано на рисунке №4. Все, что нужно сделать, это нажать на кнопку «Установить SuperSU».

№4. Окно программы Framaroot

Восстановление системы

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

В главном меню программы следует нажать кнопку «Резервные копии» (выделена на рисунке №5).

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

Соответственно, нам нужно будет выбрать пункт под названием «Восстановить».

№5. Главное меню программы ROM Manager

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

Впрочем, и во всей прошивке при помощи программы ROM Manager тоже нет ничего сложного – практически все делается в одно-два нажатия.

В видео ниже можно наглядно видеть, как происходит процесс установки другой прошивки при помощи программы ROM Manager. Правда, это видео на английском языке, но смысл происходящего понять легко.

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

Что такое пользовательская прошивка

Data-lazy-type="image" data-src="http://androidkak.ru/wp-content/uploads/2017/06/protech1-e1498230690613.jpg" alt="планшет андроид с инструментами" width="267" height="200"> Любой пользователь, обладающий необходимыми техническими навыками, может создавать свои операционные системы с помощью исходного кода Android и устанавливать их на смартфонах. Благодаря таким возможностям уже создано множество некоммерческих проектов, участники которых разрабатывают альтернативные дистрибутивы. Обычно их называют «пользовательские прошивки», однако более точным определением в данном случае можно считать «самодельные прошивки».

Несмотря на то что пользователям доступны все необходимые материалы, многие считают, что создать свой собственный ROM – это непосильная задача. Успех в этом деле будет зависеть от настойчивости и того, сколько времени человек готов посвятить созданию.

Для того, чтобы установить кастомную прошивку на Android, нужно оценить масштабность предстоящей задачи. Если нет абсолютно никакого опыта кодирования, умения пользоваться командной строкой (в Linux или Mac) и нет понятия, что такое Makefile, то лучше отказаться от этой идеи.

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

Читайте также: Как включить гаджет Андроид в безопасном режиме

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

Что нужно для создания прошивки

Data-lazy-type="image" data-src="http://androidkak.ru/wp-content/uploads/2017/06/linux-i-mac-e1498231546463.png" alt="linux и mac" width="300" height="171"> Для создания прошивки понадобится доступ к компьютеру на базе Linux или Mac. В обоих случаях ПК будет использоваться часто, так что нужно быть уверенным в работоспособности используемой программной среды.

Если создать свою сборку с помощью виртуальной машины Linux, то с большой долей вероятности она не сможет распознать мобильное устройство и откажется с ним работать. Если нет под рукой полноценной операционной системы Linux, то лучше обратиться к компьютеру Mac.

Для того, чтобы создать свою прошивку, понадобится 130 Гб дискового пространства и не менее 8 Гб оперативной памяти. Если попытаться сделать это с 4 Гб ОЗУ, то может возникнуть множество проблем. Аналогичные трудности могут возникнуть и с 8 Гб оперативной памяти, но с помощью некоторых хитростей их удастся преодолеть.

Необходимо запастись терпением, ведь создание сборки Android – это долгий процесс. Для синхронизации исходного репозитория с локальной машиной может понадобиться более 24 часов. Еще несколько часов понадобится для создания полного билда. Даже после внесения незначительных изменений может потребоваться 10–20 минут для их принятия. Многое будет зависеть от оборудования, но не стоит надеяться, что мощная система позволит завершить все процессы за несколько минут.

Версия операционной системы, получившая название Android Open Source Project, не содержит привычных сервисов Google. В результате такие приложения, как Google Play, YouTube, Gmail и Chrome, будут отсутствовать. К счастью, уже существует способ, который может заставить эти программы работать на пользовательской прошивке.

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

Процесс создания

Согласно инструкции нужно поочередно выполнить следующие шаги:

  1. Настроить программную среду сборки, включая установку необходимых инструментов для разработки и Java Development Kit.
  2. Извлечь исходный код с помощью инструмента Repo.
  3. Получить собственные двоичные файлы (некоторые из драйверов выпускаются только в двоичной форме).
  4. Выбрать цель с помощью инструмента Lunch.
  5. Запустить сборку, используя Make и Jack.
  6. Поставить прошивку на устройство с помощью ADB и Fastboot.

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

Несколько лет назад, когда я впервые познакомился с 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. Если что-то не понятно или смущает, задавайте вопросы - всегда буду рад ответить и пояснить.

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

Можно попробовать прошить смартфон Samsung. Для начала необходимо скачать утилиту Odin -универсальный прошивальщик смартфонов и планшетов от Samsung. На просторах Интернета всегда можно найти ссылку на него.

Ни в коем случае не используйте «русифицированную версию», которые часто можно встретить в интернете, есть шанс превратить гаджет Samsung в кирпич!

Качаем Odin, например с этого . Распаковываем и запускаем исполнительный файл.

С утилитой данного уровня можно прошить не только кастомную, но и прошивку от производителя смартфона. На устройство нужно установить драйвера. Они не должны быть запущены.
После чего запускаем утилиту Odin и подготавливаем прошивку. Она состоит как из одного, так и нескольких файлов. Если это несколько файлов, то они включают в себя:
— основной — PDA;
— смартфона часть, модем – PHONE;
— прошивка, которая характеризует регион и языковые настройки – CSC.
Если прошивка включает в себя один файл, то к нему прикреплено обязательное расширение.tar или.tar.md5. При многофайловой прошивке можно обработать конкретные файлы или все сразу.
Открываем в настройках гаджета «Отладка USB» и переводим в режим загрузки, который включается при помощи нажатия одновременно двух клавиш на телефоне, это питания и громкости вниз.
После чего, гаджет подключаем к ПК, поле ID:COM должно загореться желтым цветом.
Файлы прошивки загружаем в поля:
— PDA в АР;
— PHONE в СР;
— CSC в CSC.
При прошивке одним файлом вся информация загружается в поле АР.
Дольше отмечаем флажками F и Auto Reboot, при этом со всех остальных галки снимаются. После всех этих процедур включается кнопка Start, устройство от компьютера не отключается. Отключать планшет, смартфон от компьютера можно только в том случае, когда он перезагрузится. Только после этих процедур прошивка считается окончена.

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