Затести Андроид 12 сегодня и безопасно! – MIUI помощь – Mi Community – Xiaomi

fedbeffbdffffd Новости

Что делать, чтобы вирус не попадал на телефон

Мои советы:

  1. Софт качать только из проверенных источников. Касается как телефона так и компьютера.
  2. Установить нормальную защиту, хотя бы Аваст. Лучше Каспера или Доктора Веба. Желательно лицензию.
  3. Не запускать неизвестные файлы на телефоне, даже если они на флешке, которую принес вам друг или знакомый.
  4. Регулярно проверять устройство на наличие угроз, вирусов. Также использовать утилиты поиска шпионского ПО, рекламных компонентов, расширений и так далее. Лучшие утилиты — AdwCleaner и HitmanPro.
  5. Не используйте левые и непроверенные прошивки.

Надеюсь информация об Android.DownLoader3737 оказалась нужной.

На главную!Android.DownLoader373708.10.2021

Что же такое – перепрошивка устройства?

Если коротко и ясно – замена или переустановка установленной операционной системы на другую операционную систему. Прямо как “винду переставить”. Данное определение не относится конкретно к телефонам — перепрошивают всё, что угодно, даже автомобили.

Из каких же шагов состоит установка новой ОС, вместо существующей? Для большинства пользователей они будут примерно следующими:

  1. Разблокировка загрузчика

  2. Поиск и установка стороннего Recovery

  3. Поиск файлов новой прошивки

  4. Установка новой прошивки с помощью стороннего recovery

  5. (опционально) Установка root-прав

  6. (опционально) Установка GApps

В этой, как самой первой статье, я разберу только первые два пункта, в силу объема остальных.

Включение отладки по usb

Следующий шаг — включить отладку по USB на Android. Для этого проделайте следующие действия:

  1. Зайдите в настройки, пролистайте вниз — «О телефоне».
  2. Несколько раз нажмите по «Номер сборки», пока не увидите сообщение о том, что вы стали разработчиком.
  3. Вернитесь к главной странице настроек и откройте пункт «Для разработчиков».
  4. В разделе «Отладка» включите «Отладка по USB». Если в параметрах разработчика присутствует пункт OEM разблокировка, то включите его тоже. Включение отладки по USB на Android

Готово!

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

Замена оригинального файла на патченный

Обычно, для рядовых пользователей создаются специальные скрипты, которые через 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-ая команда открывает shell3-ая команда дает 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

Затести андроид 12 сегодня и безопасно! – miui помощь – mi community – xiaomi


Обложка

* Рекомендуется загружать изображения для обложки с разрешением 720*312


Описание темы


Выбрать колонку

Добавить в колонку

Изменения необратимы после отправки

Зачем мне перепрошивать устройство?

Для чего люди вообще перепрошивают свои устройства со стабильными ОС от производителя на какие-то сборки “От Васяна”? Причины у всех разные. Кому-то не нравится напичканная китайским хламом MIUI. Чьи-то устройства производитель уже давно не обновляет, а новую систему хочется.

Кому-то по душе “чистая” система, кто-то больше не может жить под вечным прицелом Google Services и так далее и тому подобное. Справедливости ради хочу отметить, что множество неофициальных прошивок имеют поддержку от их разработчиков и на них регулярно прилетают OTA обновления.

Как удалить android.downloader3737?

Для удаления необходимо загрузить на телефон антивирус из Плей Маркета. Найдите там Касперского или Доктора Веба — одни из лучших на сегодня. Не помешает и наличие фаервола (в маркете искать по слову firewall).

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

Компиляция и сборка патченного 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
содержит модифицированный программный код.

Накатывание патча

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. Кому какой нравится.

Откуда взялся?

Android.DownLoader3737 был или в прошивке или склеен с какой-то левой программой, которая была загружена с небезопасного сайта. Также вирусы могут изначально быть вшиты в программу — часто имеют низкий уровень опасности и относятся к типу Malware.

На телефоне также могут быть обнаружены и другие угрозы — Android.HiddenAds.251.origin (рекламный модуль), локация файла apk:

/system/priv-app/GYBeautySnap_V1.2

Android.RemoteCode.136.origin (удаленное выполнение кода на Андроиде), локация:

/system/priv-app/SoundRecorder/

Получение кода для разблокировки bootloader (не нужно для любых nexus)

Для большинства телефонов, кроме Nexus (даже если это Nexus от одного из указанных ниже производителей), для разблокировки загрузчика нужно так же получить код для разблокировки. В этом помогут официальные страницы производителей:

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

Не стану объяснять весь процесс, поскольку он отличается для разных марок и подробно пояснен на соответствующих страницах (правда, на английском) коснусь лишь получения Device ID.

  • Для телефонов Sony Xperia код разблокировки будет доступен на указанном выше сайте по-вашему IMEI.
  • Для телефонов и планшетов Huawei код также получается после регистрации и ввода требуемых данных (включая Product ID, который можно получить с помощью кода телефонной клавиатуры, который вам подскажут) на указанном ранее сайте.

А вот для HTC и LG процесс несколько иной. Для получения кода разблокировки потребуется предоставить Device ID, описываю, как его получить:

  1. Выключите Android устройство (полностью, удерживая кнопку питания, а не просто экран)
  2. Нажмите и удерживайте кнопки питания звук вниз пока не появится экран загрузки в режиме fastboot. Для телефонов HTC потребуется выбрать fastboot кнопками изменения громкости и подтвердить выбор коротким нажатием кнопки питания.
  3. Подключите телефон или планшет по USB к компьютеру.
  4. Зайдите в папку Android SDK — Platform-tools, затем, удерживая Shift, кликните в этой папке правой кнопкой мыши (в свободном месте) и выберите пункт «Открыть окно команд».
  5. В командной строке введите fastboot oem device-id (на LG) или fastboot oem get_identifier_token (для HTC) и нажмите Enter.
  6. Вы увидите длинный цифровой код, размещенный на нескольких строчках. Это и есть Device ID, который потребуется ввести на официальном сайте для получения кода разблокировки. Для LG присылается только файл для разблокировки. Получение Device ID для Android

Примечание: файлы разблокировки .bin, которые придут вам по почте лучше всего положить в папку Platform-tools, чтобы не указывать полный путь к ним при выполнении команд.

Послесловие

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

Модель: Xiaomi Redmi Note 8T Операционная система: Android 11 ArrowOSRecovery: Pitch Black Recovery Project (twrp-based)GoogleServices: NikGApps based

Готов выслушать конструктивную критику, спасибо за прочтение!

Преамбула

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

Важно: Я не несу ответственности за ваши действия после прочтения данной статьи, обязательно делайте резервные копии данных на внешнее хранилище (SD-карты или компьютер). Но не пугайтесь — если вам удалось разблокировать загрузчик и установить recovery у вас всегда будет возможность восстановить устройство даже из «System Destroyed», а в большинстве случаев и реализовать «вертай взад» — установить официальную систему с блокировкой загрузчика (как, например, у Xiaomi).

Преобразование прошивки

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

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

После того, как прошивка из оптимизированного вида (ODEX — оптимизированный dalvik исполняемый код, если мне не изменяет память) стала DEODEX (то бишь НЕ оптимизированной), все исполняемые файлы готовы к модификации.

Разблокировка bootloader

Если вы уже в режиме fastboot (как это было описано выше для HTC и LG), то следующие несколько шагов до момента ввода команд вам не требуются. В остальных случаях входим в режим Fastboot:

  1. Выключите телефон или планшет (полностью).
  2. Нажмите и удерживайте кнопки питания громкость вниз, пока телефон не загрузится в режиме Fastboot.
  3. Подключите устройство по USB к компьютеру.
  4. Зайдите в папку Android SDK — Platform-tools, затем, удерживая Shift, кликните в этой папке правой кнопкой мыши (в свободном месте) и выберите пункт «Открыть окно команд». Запуск ADB в командной строке

Далее, в зависимости от того, какая модель телефона у вас, введите одну из следующих команд:

  • fastboot flashing unlock — для Nexus 5x и 6p
  • fastboot oem unlock — для других Nexus (более старых)
  • fastboot oem unlock код_разблокировки unlock_code.bin — для HTC (где  unlock_code.bin — файл, который вы получили от них по почте).
  • fastboot flash unlock unlock.bin — для LG (где unlock.bin — файл разблокировки, который вам прислали).
  • Для Sony Xperia команда для разблокировки bootloader будет указана на официальном сайте, когда вы пройдете весь процесс с выбором модели и пр.

Команда для разблокировки bootloader

При выполнении команды на самом телефоне может также потребоваться подтверждение разблокировки загрузчика: выберите «Да» кнопками громкости и подтвердите выбор кратким нажатием кнопки питания.

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

Далее, на экране fastboot с помощью клавиш громкости и подтверждения коротким нажатием кнопки питания вы сможете выбрать пункт для перезагрузки или запуска устройства. Запуск Android после разблокировки bootloader может происходить достаточно долго (до 10-15 минут), наберитесь терпения.

Разблокировка загрузчика

Что за загрузчик и зачем его разблокировать? Загрузчик или Bootloader простыми словами – относительно небольшой кусочек программного кода, который занимается запуском установленной системы. Сам по себе он — незаменимая часть устройства, но в его функции также входит реализация технологии Verified Boot.

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

Скажу сразу – универсальной инструкции для всех телефонов нет и быть не может. Более того – некоторые устройства вообще не имеют способа разблокировки загрузчика, а некоторые не блокируются производителем изначально. Проверить факт блокировки загрузчика можно с помощью adb в режиме fastboot – fastboot oem device-info (что это и как пользоваться этим инструментом разберу в пункте про установку).

Итак, если по результатам проверки вы обнаружили, что загрузчик заблокирован, то помочь вам с поиском способа разблокировки поможет только Технотроица – Отец (Сайт производителя), Сын (4pda) и Святой дух (Google).

В случае с Xiaomi всё достаточно просто – на сайте производителя есть фирменная утилита для разблокировки загрузчика, ее использование интуитивно понятно. После успешного окончания процесса разблокировки необходимо отформатировать раздел Data, поскольку он зашифрован текущей системой и новая его попросту не расшифрует (в Xiaomi за это отвечают переключатели в окне разблокировки загрузчика) и можно приступать к процессу установки стороннего Recovery.

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

1

. Сперва нам надо взять оригинальный DEODEX JAR файл, который отвечает за нужную нам часть кода. В нашем случае

HTCExtension.jar2

. Открыть любым архиватором и вытащить от туда classes.dex

3

. С помощью конвертера 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.jarsmali.jarbaksmali.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.jar


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

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

Создание патчей

Как я уже и рассказывал, мой телефон изначально имел запрет на использование 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

Эпилог

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

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

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

Оцените статью
Huawei Devices
Добавить комментарий