Что такое деодексированная прошивка. Деодексирование и одексирование прошивок Android

Большинство пользователей Android-устройств, которые прошивали свой телефон или планшет, скорее всего, сталкивались с понятием «одексированная» или «деодексированная» прошивка. В данном материале мы подробнее разберемся, что же означают эти понятия, а также как проводить сам процесс деодексирования или обратного одексирования.

Большая часть официальных обновлений программного обеспечения от производителей Android-девайсов – это одексированные прошивки. В них системные.apk-файлы сопровождаются аналогичными по названию файлами с расширением.odex. В последних хранится часть ресурсов.apk-файлов, таким образом сводится к минимуму возможность редактирования любых системных ресурсов, причем это касается всех аспектов, в том числе и изменения внешнего вида пользовательского интерфейса и так далее. Изменив любой системный.apk, через простой архиватор или же через терминал, и поместив его обратно на своё место, практически в ста процентах случаев получаем полную неработоспособность системы. Деодексированная версия прошивки отличается тем, что в ней можно «ковыряться» в системных файлах без фатальных последствий и падения операционной системы (естественно, если делать это правильно и с умом). Таким образом, деодексируя прошивку, пользователь получает больше возможностей по модификации системного программного обеспечения.

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

Первый способ. Итак, что нам для этого потребуется:

1. Установить Java SDK.

2. Установить Android SDK.

3. Скачать и распаковать в корень диска C: следующий архив: //forum.xda-developers.com/showthread.php?t=2213235

После этого выполняем поочередно следующие действия:

1. Копируем папку system/app

2. Копируем папку system / framework с Android-устройства на персональный компьютер.

3. Копируем следующие файлы:

Содержимое папки system/app в распакованную папку Deodex : origi_app

- содержимое папки system / app в распакованную папку Deodex : comp_app

Содержимое папки framework в распакованную папку Deodex : origi_ frame

- содержимое папки framework в распакованную папку Deodex : comp_ frame

4. Запускаем исполняемый файл deodex-app.ba t origi _ app

5. После завершения предыдущего процесса, запускаем исполняемый файл deodex_ frame .ba t , это запустит процесс деодексирования всех файлов в папке origi _ frame

6. После выполнения деодексирования запускаем исполняемый файл zip _ em _ app . bat app в папке done _ app

7. После завершения, запускаем исполняемый файл zip _ em _ frame . bat , который выполнит упаковку файлов app в папке done _ frame

8. После успешной упаковки копируем все файлы из директории done _ app в comp _ app , а из done _ frame в comp _ frame

9. Теперь удаляем все файлы, которые имеют расширение.odex из папок comp _ app и comp _ frame .

Второй способ. Для этого нам также потребуются установленные Java SDK и Android SDK, кроме того нужно скачать следующий архив: //forum.xda-developers.com/showthread.php?t=2213235

Пошагово выполняем следующие действия:

1. Распаковываем папку Deodex из скачанного архива в корень диска C:

2. Копируем папку system/app

3. Копируем папку system/ framework с Android-гаджета на компьютер в директорию C:Deodex

4. Открываем директорию C : Deodex jar , видим файл frame - dep . txt . Открываем его блокнотом или любым другим текстовым редактором (рекомендуется использовать Notepad++), и прописываем путь к скопированной папке framework . Аналогично в файле app - dep . txt прописываем путь к папке app . Примеры прописанных путей в данных файлах:

C:/Deodex/Framework
C:/Deodex/app

5. Поочередно запускаем исполняемые файлы auto _ app . exe и auto _ frame . exe из всё той же папки jar .

6. Забираем деодексированные приложения с расширением.apk из указанных выше директорий. Файлы с расширением.odex не трогаем – они теперь не нужны.

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

Если по какой-либо причине необходимо одексировать системные приложения, например, если прошивка была деодексирована, то сделать это еще проще. Необходимо установить на Android-устройство приложение Titanium Backup (напомним, что для его корректной работы нужны Root-права). Для того, чтобы одексировать Android-приложение, перемещаем его в папку / system / app . Открываем Titanium Backup и нажимаем пункт в дополнительном меню «Интегрировать sysDalvik».

В этой небольшой заметке мы расскажем нашим читателям о деодексировании прошивок для Android с помощью jBart, а также о разнице между ODEX (одекс) и DEODEX (деодекс) прошивками. Для начала давайте разберемся что же понимается под терминами odex / deodex, обратившись для этого по следующим ссылкам:

На момент написания этой заметки актуальной версией была jBart v1.8.9 - "Программа предназначена для автоматизации процесса перевода прошивок на базе ОС Андроид. Поддерживаются версии Андроид от 2.х.х до 4.х.х (включая Андроид 4.4 KitKat). Ядро программы составляет модифицированный apktool. Кроме перевода прошивок присутствует возможность деодексирования прошивок, а также работа с одиночными apk и jar файлами из прошивок."

Не затягивая повествование надолго - перейдем к практическому примеру. "Тренироваться" мы будем на прошивке от МТС о котором мы писали не так давно. Первым шагом мы тем или иным образом должны скачать с планшета папки /system/app и /system/framework, а также файл build.prop. который можно найти в папке system. Для копирования некоторых из частей прошивки возможно потребуются права root (на Oysters T7V 3G их с легкостью можно получить при помощи приложения motochopper , которое вы без труда сможете найти в поисковиках). После того как мы скачали необходимые файлы и папки - размещаем их в каталоге system и запаковываем в архив - system.zip , таким образом, чтобы корень архива содержал папку system, а уже внутри нее были подпапки app, framework и папка bulid.prop:

Выбираем корректную версию ROM API (т.е. версию Android), в нашем случае - это 4.2.x, нажимаем кнопку Deodex и ждем. По завершении операции архив с деодексированной прошивкой будет лежать в jBART-master\output\deodexed_system.zip. Как видно, файлы прошивки уже не содержат файлов.odex, а только.apk. Теперь можно переходить к их модификации, переводу, редактированию и т.п. изменениям. Но это уже тема совершенно для другой заметки. Подводя итог, отметим, что с помощью jBart и нескольких несложных операций - мы научились получать из одексированной прошивки деодексированную, т.е. "пользовательскую". Файлы в которой каждый может модифицировать в соответствии со своими желаниями и потребностями.

Пользователей Android можно разделить на две группы. Первая – те, кому важно стабильная работа и чтобы телефон просто работал. Вторая – те, кому не терпится испробовать новые функции и проверить другую прошивку для своего телефона, кто очень любить ковыряться в телефоне. Тут и кроется основная разница между ODEX и DEODEX прошивками.

ODEX (одексированные) прошивки – это официальные, фирменные или заводские прошивки Android. DEODEX (деоксированные) – это модифицированные пользователями прошивки.

Зачем же такое разграничение?

«Одексированная» прошивка сразу же выдаст себя наличием файлов с расширение.odex в папке /system/app. Аббревиатура odex означает – “Optimized Dalvik Executable File”. Такого рода файл очень нужен для чёткой системной структуры, в которой содержится вся информация о приложении. Android получает данные сразу же напрямую, не разархивируя apk файлы. Файлы.odex обычно загружают в Dalvik-cache, в котором хранится информация о программах которые часто использует пользователь. Скорость работы системы при этом значительно возрастает.

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

К примеру такая прошивка – идеальное решение для тех, кто хочет просто скачать игры на планшет андроид (http://vipsmart.org/all-genres/tablet/).

DEODEX



В прошивках «деодексированных» информация приложения содержится в apk файле. Код, обычно вставляемый в odex файл, включается в apk с именем classex.dex.

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

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

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

Если вы являетесь не просто рядовым пользователем устройства на базе Android, а любите устанавливать различные прошивки, то наверняка вам ранее приходилось слышать или читать на различных форумах и сайтах об "одексированных" и "деодексированных" прошивках. В чем же разница? Если говорить коротко, то Deodex прошивки лучше приспособлены для их модификации. Разработчик деодексированной прошивки может самостоятельно изменять внешний вид значков, настраивать различные меню и так далее. Расскажем обо всем подробнее.

Что такое Deodex?

В прошивке Android, как и в любом другом приложении, имеется специальная "исполнительная" часть, которая предназначена для выполнения заранее запрограммированных действий. Как вы сами видите, данные команды вынесены в отдельный файл classes.DEX, который присутствует в прошивке.

Зачастую производитель в официальных прошивках выносит этот файл за пределы прошивки, для ускорения работы и уменьшения занимаемого прошивкой объема памяти. Переход на Android 5.0 с исполняющей средой ART существенно изменил процесс запуска и установки приложений, однако само понятие odex и deodex было сохранено.

Достоинства и недостатки Odex и Deodex прошивок


- Более сложный процесс модификации прошивки
+ Небольшой прирост производительности прошивки
+ Экономия места при установке программ


+ Упрощенная кастомизация прошивки
- Необходимо больше места для установки приложений

Как получить Deodex прошивку?

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

/app
/priv-app
/framework


Deodex при помощи JoelDroid Batch Deodexer

Данная утилита будет работать только с девайсами на базе Android 5.0 и новее. Также необходимо установить и скачать само приложение .


  • Распакуйте архив с утилитой ]JoelDroid Lollipop Batch Deodexer V 2.5.

  • Сохраненные ранее папки app, priv-app, framework

  • Запустите утилиту JoelDroid Lollipop Batch Deodexer, нажмите на кнопку "Browse" и укажите каталог на вашем компьютере, куда вы скопировали app, priv-app, framework

  • Нажмите на кнопку "Start Process"

Deodex при помощи Deodexer for Android Runtime

Первым делом скачайте архив и распакуйте его. Далее процесс ничем не отличается от предыдущей утилиты:


  • Сохраненные ранее папки app, priv-app, framework необходимо поместить отдельный каталог на вашем компьютере.

  • Запустите утилиту Deodexer for Android Runtime, укажите каталог на вашем компьютере, куда вы скопировали app, priv-app, framework

  • Нажмите на кнопку "Execute" и дождитесь окончания процесса деодексации.

Deodex при помощи Jbart

В отличие от предыдущих утилит, которые способны работать только с устройствами на базе Android 5.0 и выше, данная утилит не имеет привязки к ОС. Вы может сделать Deodex для любого устройства начиная с Android 2.3.x Ginerbread, заканчивая Android 6.0 Marshmallow.



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

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