144 2.10.19

Глава SpaceX показал звездолёт Starship изнутри

Во время масштабной презентации звездолёта Starship Илон Маск подробно рассказал о конструкции будущей новинки, но её внутреннее устройство осталось за кадром. Глава SpaceX решил исправить это упущение — чтобы продемонстрировать «внутренний мир» космического аппарата, он лично забрался в грузовой отсек, вооружившись смартфоном. Результаты «шпионской съёмки» изобретатель опубликовал в своём Twitter-блоге.

В  далее

148 6.10.19

Учёные нашли более дешёвую и ёмкую альтернативу современным аккумуляторам

Литий-ионные аккумуляторы, используемые практически во всех современных гаджетах, имеют несколько ключевых недостатков. Среди них — негативное влияние на окружающую среду и дороговизна в производстве. Учёные из Технологического университета Чалмерса в ШвецииВ и Национального института химии в Словении нашли решение этих и многих других проблем современных элементов питания.

В  далее

78 14.10.19

Xiaomi запатентовала новые варианты дизайна фронтальных камер

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

В  далее

170 10.10.19

Программист создал «аварийную» ОС на случай апокалипсиса

Разработчик Вирджил Дюпра представил новую операционную систему Collapse OS. В отличие от большинства современных аналогов, она не может похвастаться дизайнерским интерфейсом — зато крайне нетребовательна к железу и создана, по словам её создателя, на случай наступления апокалипсиса.

В  далее

78 11.10.19

NASA опубликовало сверхчёткие снимки центра Млечного Пути

Центр Млечного Пути включает в себя миллионы звёзд, широкий спектр излучений и внушительное количество газа. Разглядеть всё это многообразие в наземный телескоп не получится из-за большого числа помех — но из космоса вид открывается куда более зрелищный. Агентство NASA опубликовало снимки нашей галактики в высоком разрешении, сделанные с помощью космической обсерватории Spitzer.

В  далее

Существует две разновидности прошивок: стоковая и кастомная. Какая же разница между этими двумя понятиями? Какую из прошивок более предпочтительно устанавливать на мобильное устройство? Что собой представляют стоковые прошивки для Android? Для лучшего понимания давайте введем второе название стоковой прошивки – «прошивка от производителя». Какие преимущества при использовании дает стоковая прошивка? Что она может дать пользователям устройств? Прежде всего, необходимо сосредоточится на вопросе совместимости с планшетами, смартфонами и так далее. То есть, при использовании таких прошивок не должно происходить внезапных и неприятных сбоев в работе устройств. Таким образом, оно не будет отличаться с точки зрения программного обеспечения от заводских моделей. К тому же, официальные прошивки, как правило, нацелены на оптимальную работу с теми или иными конкретными моделями. Устройство благодаря этому может работать максимально эффективно.

Выбор стоковой прошивки: о чем необходимо знать?

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

— зачем требуется перешивать устройство?

— на какой конечный эффект вы рассчитываете?

Необходимо разобраться в используемой вами модели устройства. Это требуется по той простой причине, что в рамках одного производителя могут выпускаться внешне похожие устройства с различной стоковой прошивкой. Такие производители как Samsung, HTC, Xiaomi и другие выпускают большое число моделей. Чтобы не превратить свое устройство в «кирпич», необходимо тщательно изучить данные. Прежде всего, необходимо разобраться с инструкцией. Также не лишним будет почитать информацию на форумах, чтобы узнать о возможных проблемах и неприятностей. Подобные вещи, как правило, подробно описываются на просторах интернета опытными пользователями. При выполнении прошивки также необходимо в точности придерживаться всех имеющихся инструкций. Стоит обратить внимание на наличие определенных ограничений. Довольно часто в данном случае не предусматривается предоставление пользователю полного доступа к устройству. Также довольно часто производители грешат слишком медленным обновлением программного обеспечения.

Разница в программном обеспечении

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

Как установить стоковую прошивку?

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

Существует кастомная и стоковая прошивка. Что это такое и какая между ними разница? Какую из них наиболее предпочтительно устанавливать на своё мобильное устройство?

Чем являются стоковые прошивки Android?

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

О чем необходимо знать, когда выбирается стоковая прошивка

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

  • Необходимо ответить на такие вопросы: зачем необходимо перешивать устройство, на какой конечный эффект и результат идёт расчет?
  • Нужно разобраться в модели аппарата. Это необходимо из-за того, что в рамках одной торговой марки выпускаются похожие внешне устройства, у которых имеется разная стоковая прошивка. HTC, Samsung, Xiaomi и много других производителей выпускают большое количество моделей, поэтому, чтобы не превратить своё устройство в «кирпич», необходимо позаботиться о достоверности данных.
  • Следует внимательно изучить инструкцию, почитать форумы, чтобы узнать, какие могут быть неприятности. Как правило, они уже много раз подробно описаны разными людьми. Также при выполнении прошивки необходимо в точности придерживаться имеющихся инструкций.

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

О разнице в программном обеспечении

Мы уже разобрались, как работает и что собой представляет стоковая прошивка. Что это – вопросов быть не должно. А вот о кастомной прошивке мы почти не упомянули. Зачем она нужна? Дело в том, что многим людям не нравится то, что предлагает официальный производитель. Они ищут что-то своё, созданное под конкретные цели и особенности. И когда кто-то создаёт свою версию прошивки, то её называют кастомной. Ее особенностью является наличие многих функций, которых нет в официальных версиях. Но вместе с этим необходимо быть готовым к тому, что в ней также есть ошибки и недочеты.

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

Делаем

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

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

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

Начнем с теоретических основ для тех, кто совершенно не разбирается в теме.

Речь идет об Андроид, устанавливаемом на мобильном устройстве вместе с встроенными приложениями — почта, карты, браузер, антивирус и т.д. То есть, когда Вы приобретаете в магазине новый девайс, то на нём инсталлирована заводская версия графической оболочки и дополнительный софт.

Некоторые компании модифицируют чистый Android, внося свои корректировки — меняют оформление главного экрана, меню настроек, добавляют фирменные программы (файловый менеджер, оптимизатор, веб-обозреватель). Ярким примером является Xiaomi с MIUI, Meizu с Flyme OS.

То есть, пользователь получает уникальный интерфейс с расширенным функционалом. Но в качестве «бонуса» производители нередко встраивают в прошивку массу рекламы. Отключить её реально, хотя после очередного лицензионного обновления внесенные изменения могут быть сброшены. Если интересно, как проделать подобные манипуляции на Ксиоми, смотрите видео с нашего Youtube-канала:

Преимущества стоковой прошивки следующие:

  • Можно обновляться «по воздуху», когда будут выпущены свежие апдейты (улучшения, исправления ошибок) — достаточно перейти в параметры, открыть раздел «Об устройстве» и запросить проверку наличия обнов;
  • Стабильная работа, минимальное количество багов;
  • Возможность обратиться за помощью в центр сервисного обслуживания без каких-либо претензий со стороны специалистов.

Но есть и недостатки заводского ПО:

  • Официальная прошивка Android может содержать ненужные приложения, которые просто так не удаляются. Потребуется наличие root-доступа. Но после такой манипуляции телефон снимается с гарантии из-за вмешательства в программные компоненты;
  • Не все компании добросовестно относятся к своим клиентам, редко выпускают обновления;
  • Возможности гаджета ограничены, нельзя установить некоторые сторонние приложения.

Автор рекомендует:

Кастомная прошивка — что это значит?

Название происходит от английского слова «custom». У него очень много значений, но в данном случае имеется в виду — «изготовленное на заказ», «пользовательское».

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

Это кропотливая работа, с которой справляются не все «добровольцы». Требуется по винтику разобрать ОС, а затем собрать в новом виде. При этом работоспособность иногда нарушается.

Какие плюсы кастомной прошивки?

  • Неограниченный доступ к системе — можно удалять/устанавливать любой софт,  глубоко проникать в файловую структуру, видеть скрытые элементы;
  • Вырезано всё лишнее — реклама, встроенный софт. Это благоприятно сказывается на скорости работы устройства, его энергопотреблении, количестве свободной оперативной памяти;
  • Более приятный интерфейс с возможностью внесения индивидуальных изменений — выбор шрифтов, значков и т.д.;
  • Авторитетные создатели неофициальных сборок постоянно поддерживают связь со своими юзерами, узнают о проблемах, багах, оперативно выпускают апдейты. Кроме того, Вы можете установить даже самые новые версии Android на устройства, которые их не поддерживают.

Живой пример — мой смартфон Xiaomi Redmi Note 4 работал на Андроид 7 (оболочка MIUI 10), и производитель заявил, что данная модель не получит следующие версии ОС. Хочешь Android поновее — покупай актуальный девайс. Но я решил установить стороннюю прошивку от команды Pixel Expirience и теперь наслаждаюсь преимуществами «девятки». Вот парочка пошаговых видео:

Но есть и минусы:

  • После внесения подобных изменений аппарат снимается с гарантии. (В моём случае срок гарантийных обязательств истёк, и я с чистой совестью перепрошил девайс);
  • Могут появиться непредвиденные проблемы — не работает WiFi, передача данных, нестабильный уровень сигнала сотовой связи, быстро разряжается батарея и т.д. Поэтому следует применять кастомную прошивку только после тщательного изучения отзывов;
  • Вы делаете всё на свой страх и риск, никто не гарантирует 100% положительный результат. Любое неправильное движение, индивидуальные особенности Вашего телефона могут повлиять на исход — вплоть до выхода из строя главного чипа. А это чревато дорогостоящим ремонтом.

Внимательно читайте сообщения на форумах. Рекомендуем 4PDA — там есть информация для любой модели, с массой файлов, инструкций, комментариев.

Теперь Вы лучше разбираетесь в теме и можете самостоятельно решать — нужна ли кастомная прошивка или лучше оставить стоковую.

24.01.201910:004439 Виктор Фельк Информационный портал IT Техник Здравствуй Хабр! Несколько лет назад, когда я впервые познакомился с 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, а класс, который содержал данную подпрограмму находился в comhtcutilcontactsBuildUtils$Customization.java

Распаковка и анализ оригинального файла

1. Сперва нам надо взять оригинальный DEODEX JAR файл, который отвечает за нужную нам часть кода. В нашем случае HTCExtension.jar.2. Открыть любым архиватором и вытащить от туда classes.dex3. С помощью конвертера dex2jar преобразовать его в JAR файл. Команда: dex2jar.bat classes.dex4. Открыть полученный 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:devAndroidAndroid-KitchenWORKING_JB_15systemframework -o HTCExtension -x HTCExtension.jar7. В нашей вновь созданной папке появилась папка HTCExtension, а в ней наши файлы с Dalvik кодом.8. Отыскиваем файл по пути comhtcutilcontactsBuildUtils$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. Удаляем строки с нумерацией строк, копируем и заменяем метод (подпрограмму) в нашем comhtcutilcontactsBuildUtils$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.dex3. В нашей папочке появляется файлик classes.dex4. Снова открываем 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@framework@HTCExtension.jar@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@framework@HTCExtension.jar@classes.dex reboot 

Эпилог

Да, кому-то показалось данная статья слишком специфичной, кому-то мало-понятной, а кому-то бесполезной. Я специально обошелся без углубленной детализации и иллюстраций как это все выглядит в живую и на практике. Во-первых, данный труд будет неблагодарный и только породить еще больше вопросов. Во-вторых, не хочу видеть армию пользователей на форумах, которые жалуются, что убили свой телефон. К следующей статье я расскажу как делать Твики. Будет пример использования автоматической записи телефонных звонков родными средствами телефона. Спасибо за ваше внимание. P.S. Если что-то не понятно или смущает, задавайте вопросы - всегда буду рад ответить и пояснить. 806 264,8k 806

ОСТАВЬТЕ ОТВЕТ

Войти с помощью: 
Please enter your name here
Please enter your comment!