Как очистить андроид от вшитых в прошивку программ

А как определить версию прошивки Android своего смартфона?

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

Инструкция по определению версии ОС Android на смартфоне Samsung Galaxy

1. Запустите приложение «Настройки телефона», нажав на иконку «Настройки» с экрана приложений.

Есть ещё один способ запуска приложения Настройки – с панели уведомлений смартфона. Для этого нужно свайпом опустить шторку панели от верхней «Строки состояния» вниз и нажать на значок «Настройки» в виде шестерёнки в верхней части экрана.

Скрин №2 – нажмите на значок «Настройки» с экрана приложений. Скрин №3 – нажмите на Панели уведомлений на значок Настройки телефона в виде шестерёнки.

2. На основной странице Настроек телефона прокрутите вниз до самого низа и выберите раздел «Сведения о телефоне«.

Теперь находясь в разделе «Сведения о телефоне», нужно нажать на позицию «Сведения о ПО«.

Скрин №4 – нажмите на позицию «Сведения о телефоне» в самом низу Настроек телефона. Скрин №5 – нажмите на пункт «Сведения о ПО».

В подразделе «Сведения о ПО» представлена информация как о версии ОС Android вашего телефона, а также версии оболочки ОС Android от производителя.

В нашем случае на редакционном смартфоне Samsung Galaxy A50 установлена ОС Android 11 с оболочкой от производителя One UI 3.1.

Скрин №6 – вид страницы «О телефоне» с информацией о версии Android и её оболочки.

Прокрутив ниже страницу «Сведения о ПО», вы получите доступ к более подробной информации вашего телефона, включая:
— версию защиты Knox
— версию ПО безопасности
— номер сборки
— уровень безопасности Android.

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

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

Чтобы узнать, доступно ли вам обновление, нужно в разделе «Настройки телефона» войти в подраздел «Обновление ПО» и нажать на позицию «Загрузка и установка».

Скрин №7 – в разделе «Настройки телефона» нажать на «Обновление ПО». Скрин №8 – нажать на пункт «Загрузка и установка»

В результате проверки установленной версии ОС появилась надпись «Используется последняя версия ПО».

Скрин №9 – вид страницы «Обновление ПО» с результатами проверки последней доступной версии ОС.

4. Если вы в разделе «Сведения о ПО» нажмёте на строчку с номером версии Android, то вы получите милое «пасхальное яйцо» — логотип установленной версии Android. Эти уникальные «пасхальные яйца» доступны начиная с версии ОС Android 5.0 Lollipop и более поздние.

Скрин №10 — для получения «пасхального яйца» в разделе «Сведения о ПО» нажмите на строчку номером версии Android. Скрин №11 – вид пасхального яйца для версии Android 11.

5. Знайте свою версию Android.

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

WiFi

WiFi в моем телефоне работает через модуль ядра. WiFi включен — модуль загружен. WiFi выключен — модуль выгружен. Если подменить модуль на свой, то при включении WiFi должен загрузиться подставной модуль. На моё счастье цифровая подпись модулей не проверялась. Первое, что я попробовал, это собрать и загрузить модуль, который отключает SELinux путем замены памяти ядра на Amazon Fire Phone: https://github.com/chaosmaster/ford_selinux_permissive

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

Если при загрузке модуля ядро будет ругаться (disagrees about version of symbol module_layout), то потребуется извлечь из  раздела. Это можно сделать, используя скрипт https://github.com/glandium/extract-symvers:

Нельзя просто так взять и собрать свой модуль для телефона Kyocera.

Помните список доступных для загрузки модулей? Модуль должен называться wlan и никак иначе. Решается это просто:

  • создаю symlink на исходник модуля
  • правлю Makefile

Модуль на удивление загрузился (память, которую занимает модуль wlan сократилась, проверяется командой lsmod), но SELinux не отключился.

В dmesg не было никакой информации от подставного модуля. А всё потому, что у ядра есть еще один параметр: , который фильтрует INFO логи, в том числе модулей. Я понизил порог всех логов: . Перезагрузил модуль и увидел, что модуль просто не нашел требуемой маски, потому отключить SELinux не удалось.

Единственное, что я не уяснил, как программно вызвать отключение и включение WiFi. Мне приходится выключать/включать WiFi вручную через интерфейс Android.

Эксперименты с загрузчиками

Для проведения экспериментов я заказал из штатов за символическую сумму Kyocera Brigadier с разбитым экраном.

Я проверил цифровые подписи aboot загрузчиков. Subject’ы сертификатов оказались идентичными, следовательно они могут быть взаимозаменяемыми. Решился на эксперимент: прошить aboot от KC-S701 в Brigadier. Загрузчик заработал. На удивление, защита emmc от записи с этим загрузчиком не включилась и я смог спокойно восстановить загрузчик от Brigadier. Понимая все риски, я решил прошить загрузчик от Brigadier на KC-S701. Я бы получил возможность загружать любое неподписанное ядро и использовать fastboot. В этот раз телефон не загрузился.

Тут история могла бы закончиться, но «телефон не загрузился» — это черный экран. И на моё счастье это был черный экран не Qualcomm , который требует специального подписанного загрузчика для восстановления телефона, а тот самый download mode, который представляет телефон как USB mass storage. Телефон был восстановлен. На сегодняшний день это последнее, что я предпринял.

  • Как включать/отключать WiFi программными средствами?
  • Почему пересборка политики sepolicy не работает? Несовершенный декомпилятор sepolicy? Что-то упущено?
  • Что за режим перезагрузки oem-1?

Как все не испортить – предупреждения

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

Если вы собрались самостоятельно вскрывать мобильник, стоит соблюдать осторожность. Чтобы окончательно не испортить смартфон, стоит придерживаться правил

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

Очень важно всё делать медленно и аккуратно. Стоит помнить, что спешка ни к чему хорошему в этом случае не приведёт

Вопрос эксперту

Если у меня под рукой нет специального медиатора или пластиковой карты, чем лучше поддеть крышку?

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

Если нет фена, чем лучше нагреть корпус смартфона?

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

У меня сломалась крышка на смартфоне Самсунг. Где можно купить новую?

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

Если телефон на гарантии, можно ли самостоятельно вскрывать заднюю крышку?

Если смартфон куплен относительно недавно, то самостоятельно вскрывать его не стоит. В этом случае стоит отнести мобильник в сервисный центр.

Снять крышку с телефона Самсунг в принципе несложно. Для этого нужно приготовить фен, медиатор, спирт и присоску

Важно действовать очень осторожно, чтобы окончательно не сломать мобильное устройство

4.4/5 — (18 голосов)

Автор

Татьяна

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

Пробуем отключить SELinux

На тот момент я думал, что все ошибки об отсутствии привилегий вызваны SELinux (я полностью забыл о том, что могут быть урезаны capabilities). Логов dmesg я не видел, logcat ничего релевантного не показывал. И я начал думать как отключить SELinux.

Первая зацепка, которую я смог найти:

Исходники говорят о том, что при изменении этой опции, init перезагружает политики SELinux из файла .

Т.е. я при помощи dirtycow могу перезаписать и командой загрузить обновленную политику.

Для начала нужно выяснить что из себя представляет . Изучить его можно с помощью команды (пакет setools в Debian).

В моём случае содержал только allow, что значит — при enforcing режиме SELinux в Android разрешено делать только то, что объявлено в политике. А процессу init разрешалось только загружать политику, но не отключать:

Моей задачей было — разрешить init контексту задать selinux→enforce в permissive (setenforce 0).

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

Первая же мысль: стоковая политика не подходит этому телефону и он при отсутствии прав начинает тупить.

Я собрал новую политику, в которой просто описал все существующие SELinux context и объявил их permissive. Тоже не помогло.

Потом я решил пересобрать политику и по возможности добавить привилегии для shell контекста.

Я нашел статью, в которой говорится как «декомпилировать» политику. Немного повозившись я смог собрать все зависимости и запустить утилиту . На выходе я получил текстовый файл, который я смог собрать обратно (для KitKat ) и даже получить файл с точно таким же размером что и оригинальный , но разным hex содержимым. Загрузка новой политики вызвала точно такие же результаты, что и ранее — телефон через какое-то время перезагружался.

Я решил собрать две политики: из , который я получил и из , в котором добавлены все привилегии для , в том числе и setenforce. Сравнить файлы в hex и по аналогии заменить байты в оригинальном .

Как выяснилось две пересобранные политики отличались всего парой байт. Я начал искать похожие совпадения в оригинальном sepolicy, но не нашёл. Затем я просто написал brute force скрипт, который в заданном диапазоне смещений заменяет два байта на »0xFF,0xFF», запускает . Таким образом я нашел необходимое смещение в оригинальной политике, заменил байты, подменил оригинальную политику и ничего. Отключить selinux опять не удалось.

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

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

Можно было добавить любой permissive домен, загрузить новую политику и работать в контексте этого домена (кстати, supersu от chainfire для новых версий Android так и работает). Но даже это не дало возможности отключить SELinux. Я решил копать в другом направлении.

Видеокарты

Поскольку доминирующими на рынке видеокарт являются GeForce и Radeon, перепрошивка БИОС будет рассматриваться на их примере.

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

Для карт GeForce используется программа NVFlash (из двух файлов), для Radeon – утилита ATIFlash (один файл). Далее, нужно создать загрузочный USB-носитель для DOS-режима, а после этого скопировать на него файлы программ и прошивок.

При старте с флешки следует убедиться, что карта является однопроцессорной, иначе предлагаемый способ не сработает. Для NVIDIA используется команда nvflash —list, для ATI – atiflash –i. Если будет выдана информация по двум картам, значит адаптер имеет два процессора, а предлагаемый способ прошивки использовать нельзя (лучше обратиться к сайту производителя и найти инструкцию там).

На следующем этапе перепрошивка БИОСа видеокарты GeForce предполагает отключение защиты. Делается это строкой nvflash –protectoff.

Далее, для старта процесса обновления БИОС для карт GeForce используется команда nvflash -4 -5 -6 newbios.rom (имя ROM-файла должно соответствовать названию загруженной прошивки), для карт Radeon – atiflash –p –f 0 newbios.rom. После этого ждем завершения процесса и перегружаем систему в нормальном режиме.

Дамп / бэкап официальной прошивки на android —

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

Как сделать резервную копию прошивки Mediatek с телефона —

1. Распакуйте архив Miracle Box в папку и запустите Miracle loader exe.

Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)

2. Подождите, пока Miracle Box не откроется на панели инструментов.

3. Щелкните вкладку MTK.

4. Отметьте «Читать».

5. В раскрывающемся списке выберите тип набора микросхем телефона.

5а. Если вы хотите, чтобы резервная копия была сохранена в формате, удобном для SP Flash (с файлом разброса), установите флажок «Сохранить как файл разброса».

6. Нажмите кнопку «Пуск».

7. В левом нижнем углу вы должны увидеть >> Ожидание порта USB. Подключите телефон к ПК (должен быть выключен, все еще с батареей внутри), затем нажмите кнопку питания только один раз (это необходимо для немедленного обнаружения вашего устройства). НЕ удерживайте кнопку питания, иначе телефон загрузится нормально.

8. Если вы не отметили «Сохранить как файл разброса», должно появиться диалоговое окно. Перейдите в папку, в которую вы хотите сохранить прошивку (в формате .bin), затем нажмите «Сохранить».

9. Если вы отметили «Сохранить как файл разброса», то должно появиться окно с просьбой выбрать, какой блок / раздел вы хотите сделать резервную копию. Отметьте все, если вы хотите получить полную резервную копию / дамп прошивки, или отметьте только то, что вам нужно для резервного копирования, затем нажмите OK

9b. Перейдите в место, куда вы хотите сохранить файлы, затем нажмите ОК.

10. Подождите, пока Miracle Box начнет резервное копирование телефона. Если вы не отметили «Сохранить как файл разброса», он должен выглядеть примерно так:

11. Если вы отметили «Сохранить как файл разброса», он должен выглядеть примерно так.

12. После завершения резервного копирования вы должны увидеть сообщение «Готово».

13. Отключите и включите телефон.

14. Вы можете использовать сброшенные прошивки в разделе «Разработка» и «Ремонт».

root, да не тот

Первое, что я сделал это использовал dirtycow по прямому назначению — подменил , который задал UID/GID в 0 (тоже самое делает su). Однако монтировать файловую систему я не мог, даже tmpfs. Загружать модули ядра я тоже не мог. Просматривать dmesg — нет. Я даже не мог просматривать директории, которые имели права 700 и принадлежали другим системным пользователям. Я мог лишь читать и писать в блочные устройства, а просмотр файлов или директорий был возможен благодаря заданию UID/GID определенного пользователя (написал свой велосипед — аналог su, который мог задавать selinux context и пользователя/группу).

Первым делом я сделал дамп всей прошивки, boot и recovery:

Изучить дамп можно утилитами и . Команда создает виртуальное блочное устройство, доступное по пути . С ним можно работать как с любым другим блочным устройством. Дампы разделов boot и recovery распаковал утилитой .

Потом попробовал записать в recovery , проверить и сразу восстановить из дампа.

Раз я мог писать в блочные устройства, значит я мог записать custom recovery. Нашел TWRP от Brigadier, прошил в recovery и перезагрузился в него . TWRP я не увидел, а лишь иконку Android’а с восклицательным знаком. Так выглядит стандартный recovery, а значит TWRP не прошился.

Перезагружаюсь в обычный режим, запускаю эксплойт, проверяю hash recovery раздела — hash соответствует оригинальному. Пробую записать данные опять — hash поменялся! Вспоминаю про page cache, чищу () — hash старый. Т.е. всё, что я пишу в блочное устройство улетает без ошибок в /dev/null и иногда оседает в Linux cache. Но обновление прошивки ведь как-то происходит? И пользовательские данные как-то записываются во внутреннюю память. Надо копать дальше.

root, да не тот

Первым делом я сделал дамп всей прошивки, boot и recovery:

Потом попробовал записать в recovery , проверить и сразу восстановить из дампа.

Раз я мог писать в блочные устройства, значит я мог записать custom recovery. Нашел TWRP от Brigadier, прошил в recovery и перезагрузился в него . TWRP я не увидел, а лишь иконку Android’а с восклицательным знаком. Так выглядит стандартный recovery, а значит TWRP не прошился.

Перезагружаюсь в обычный режим, запускаю эксплойт, проверяю hash recovery раздела — hash соответствует оригинальному. Пробую записать данные опять — hash поменялся! Вспоминаю про page cache, чищу () — hash старый. Т.е. всё, что я пишу в блочное устройство улетает без ошибок в /dev/null и иногда оседает в Linux cache. Но обновление прошивки ведь как-то происходит? И пользовательские данные как-то записываются во внутреннюю память. Надо копать дальше.

Что нужно сделать перед сбросом до заводских настроек

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

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

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

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

Патченный adbd

Т.к. мне надоело иметь доступ к урезанной консоли Android, а патчить бинарник adbd мне лень, то я решил собрать свой adbd с блэкджеком и шлюхами. Для этого пришлось скачать 70 Gb исходников Android, чтобы не возиться с каждой зависимостью по отдельности. Убрал проверку при которой происходит урезание capabilities, скомпилировал, подменил и получил полноценную root консоль. Теперь я могу монтировать файловые системы, смотреть dmesg без отключения dmesg_restrict, спокойно просматривать и редактировать файлы, которые не принадлежат root и многое другое. Но я пока не могу монтировать раздел и загружать модули в ядро.

Кстати, этой процедуры можно избежать, скомпилировав lsh и подставить его путь в . Желательно обернув запуск lsh в скрипт, который задаёт environment, иначе придется задавать полный путь к каждой команде.

Меняем системные настройки (build.prop)

В образе system есть интересный файлик build.prop , содержащий множество полезной информации о железе устройства и настройках, устанавливаемых по умолчанию, для различных стоковых приложений. Справедливости ради замечу, что это не всегда так. Например, в Gigaset ME и ME Pro build.prop разделен на две части. В одной части содержатся настройки для Gigaset ME, а для ME Pro некоторые строки продублированы, но ключи (название смартфона и так далее) в них другие. Это было сделано, чтобы обеспечить более-менее корректную работоспособность одной и той же прошивки на разных аппаратах.


Дополнительный файл для Gigaset ME и ME Pro

Build.prop содержит (или может содержать) огромное количество настроек. Некоторые из них ничего не меняют, некоторые улучшают одно за счет ухудшения другого, но есть те, которые действительно полезны:

  • ro.product.model и ro.product.manufacturer — модель смартфона и имя производителя. С помощью замены этих строк можно заставить Play Store думать, будто у тебя другой смартфон, что откроет доступ к большему количеству софта. Для всяких малоизвестных китайских смартфонов эти строчки могут стать спасительными;
  • hw.qemu.mainkeys — принимает только два значения: 0 — показать наэкранные клавиши навигации, 1 — не показывать кнопки. Отсутствие строки соответствует 0;
  • debug.sf.nobootanimation — значение 1 отключает анимацию загрузки, что немного поднимает ее скорость. Установка 0 или удаление строки возвращает анимацию на место;
  • ro.telephony.default_network — говорит системе, в какой режим должна быть переключена мобильная сеть при загрузке;
  • ro.sf.lcd_density — DPI дисплея, наиболее точное значение для дисплея можно посчитать через удобный сайт. Но никто не запрещает поставить и большее или меньшее значение по своему вкусу: более высокие значения делают элементы интерфейса крупнее, низкие — меньше;
  • ro.config.vc_call_vol_steps — количество шагов громкости во время разговора (по умолчанию 8);
  • ro.config.media_vol_steps — количество шагов громкости мультимедиа (по умолчанию 15).

Сборка

После внесения изменений нужно собрать все обратно. Сначала запакуем раздел system в system.new.dat . Скачиваем нужные нам инструменты:

$ wget https://github.com/xpirt/img2sdat/raw/master/img2sdat.py
$ wget https://github.com/xpirt/img2sdat/raw/master/blockimgdiff.py
$ wget https://github.com/xpirt/img2sdat/raw/master/common.py
$ wget https://github.com/xpirt/img2sdat/raw/master/rangelib.py
$ wget https://github.com/xpirt/img2sdat/raw/master/sparse_img.py
$ sudo apt-get install android-tools-fsutils

Преобразовываем нашу папку обратно в RAW-образ. Назовем его system_new.img:

$ sudo make_ext4fs -T 0 -S file_contexts -l 1073741824 -a system system_new.img output/

1073741824 меняем на размер раздела system в байтах. Желательно даже сделать его чуть меньше. Делаем из RAW-образа sparse-образ:

$ img2simg system_new.img system_snew.img

Преобразуем наш образ в system.transfer.list и system.new.dat , которые и нужно кидать в архив с прошивкой, но сначала удалим старые файлы:

$ rm -rf system.transfer.list
$ rm -rf system.new.dat
$ rm -rf system.patch.dat
$ chmod +x img2sdat.py
$ ./img2sdat.py system_snew.img

Отделим файлы прошивки от лишней шелухи (файлов, которые мы загружали для работы. Для этого удобно пользоваться архивом с прошивкой). Удалили? Теперь нужно запаковать прошивку в ZIP-архив (любым архиватором).

Осталось подписать архив. Сделать это можно как на самом Android с помощью ZipSigner , так и на ПК (потребуется установленная Java):

$ wget https://github.com/appium/sign/raw/master/dist/sign.jar
$ java -jar файл.zip

Подводные камни

Во время сборки system.new.dat ты можешь столкнуться с несколькими проблемами, вызванными постоянными изменениями в механизмах формирования прошивок Android. Описанный выше способ должен хорошо сработать в случае основанной на Android 5.1 прошивки, в более новых могут возникнуть сложности, так что потребуется использовать другие версии инструментов сборки. К сожалению, мы не можем описать все нюансы сборки, поэтому, возможно, придется погуглить.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Союз-Маркет
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: