Adb для android, основные команды adb андроид

What is ADB Shell?

ADB commands can be used to debug Android devices, installing or uninstalling apps, and getting information about a connected device. ADB works with the aid of three components called Client, Daemon, and Server. If you are curious about how these 3 components work together to make ADB and ADB shell commands functions, see below:

  • Client: It’s is very computer on which you use a command-line terminal to issue an ADB command. which sends commands.
  • Daemon: Or, ADBD is a background process that runs on both the connected devices. It’s responsible for running commands on a connected emulator or Android device.
  • Server: It runs in the background and works as a bridge between the Client and the Daemon and manages the communication. which manages communication between the client and the daemon.

ADB Shell commands provide access to a Unix Shell that runs a command directly on your Android device. As soon as you execute an ‘adb shell’ command on the command terminal, it sends a signal to your Android device and triggers the remote shell command console. Thus ADB shell commands let you control your Android device.

Using ADB commands, you can reboot your device, push and pull files, create a backup and restore it, sideload an update zip package, or an APK. ADB Shell commands, however, work on a much deeper level. They can be used to change the resolution of your device display, uninstall bloatware or system apps, enable and disable features, modify the system files, and change their configuration directly using commands from your computer.

Actually, there are more tasks you can perform using these commands, and below we’ll check them all with examples. Please note that there are three prerequisites before you can make use of ADB, Fastboot, and ADB shell commands.

  • Android SDK Platform-tools
  • USB Drivers for your Android device
  • Enable USB Debugging

Now you can use Web ADB in a web browser window to run ADB commands on an Android device or computer without installing ADB and Fastboot tools and USB drivers.

Finally, without any further ado, let’s proceed with our list of ADB Shell commands.

Warning: Don’t use the commands mentioned on this page unless you know how to use them and have some prior knowledge or experience.

Что делать, если ПК не видит телефон в режиме Fastboot

Если отображается сообщение об ошибке «waiting for any device fastboot», значит Fastboot не видит телефон. Причин может быть несколько:

  • Первым делом стоит убедиться в том, что используется оригинальный кабель, он подключён напрямую и не имеет повреждений. Дешёвые китайские аналоги применять не рекомендуется. Можно попробовать подключить кабель к другому порту USB на ПК.
  • Если с кабелем всё нормально, посмотрите установлены ли ADB драйверы для вашего устройства. ADB (Android Debug Bridge) – это драйвер для Андроид, позволяющий связать смартфон с ПК и дающий возможность управлять его настройкой с помощью командной строки.
  • Если драйверов нет, нужно скачать и установить их. После установки драйверов ADB рекомендуется перезагрузить компьютер или переподключить смартфон.
  • Проверьте, что включена отладка по USB в настройках смартфона (раздел для разработчиков). После этого подключите устройство к компьютеру с помощью кабеля и разрешите отладку.
  • Также проблема может быть в том, что вы не подтвердили доверие к подключённому ПК на смартфоне.

Как установить прошивку через Fastboot

В этом моменте проявляется главное применение фастбута, максимально простое и понятное благодаря следующей рассчитанной на новичков инструкции. Во избежание перевода телефона в нерабочее состояние, зарядите его до, как минимум, 30%. Не стоит беспокоиться, если гаджет станет «кирпичом», так как вывести девайс из такой ситуации можно, но не без сложностей. Убедившись в корректном подключении девайсов между собой, следуйте следующей инструкции, предполагающей, что loader уже разблокирован:

  1. Напишите adb reboot bootloader для переключения режима;
  2. Произведите самостоятельную очистку разделов во избежание конфликтов файлов, используя команду erase, после которой через пробел нужно ввести system. Нажмите Enter, после чего сделайте то же самое с каталогами userdata, radio, cache, boot, recovery;
  3. Переместите прошивку в папку с утилитой. Если они представлены в нескольких файлах, поочерёдно введите команды в соответствии с функционалом каждого: после слова flash укажите system и расположение образа, где он находится. По аналогии выполните эти действия с другими директориями, удалёнными на прошлом шаге. Можно облегчить эту процедуру, введя flash-all, заранее создав batch-скрипт с этим названием в папке с IMG-файлами;
  4. При размещении прошивки в формате архива введите update archive_name.zip, заменив название на реальное.

Лучшая статистика батареи

Поиск приложений, вызывающих разрядку аккумулятора телефона, – загадка. Откуда вы знаете, что конкретное приложение переходит в состояние сна, когда вы выходите из него? И как вы можете измерить эффективность приложений для экономии заряда аккумулятора, таких как Naptime?

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

Настройка ADB

Ранее это приложение было доступно только для рутованных устройств. Но с АБР любой может начать использовать его. Вставьте и выполните эти команды по порядку:

. adb -d shell pm grant com.asksven.betterbatterystats android.permission.BATTERY_STATS . adb -d shell pm grant com.asksven.betterbatterystats android.permission.DUMP . adb -d shell pm grant com.asksven.betterbatterystats android.permission.PACKAGE_USAGE_STATS

Уникальные черты

  • Показывает экран по отношению к бодрствующему. В идеале время экрана должно быть равно времени пробуждения.
  • Найдите изменения в профиле пробуждения / сна и быстро определите мошеннические приложения.
  • Статистика заряда батареи показывает вам подробные метрики Doze, чтобы вы могли проверить, насколько эффективны приложения по экономии заряда батареи.
  • Он может выбирать приложения, которые приводят к частичным wakelocks или приложениям, которые используют CPU в wakelocks ядра.

Скачать: Лучшая Статистика Батареи (2 $)

Команда adb devices

adb devices – самая популярная команда, которая позволяет определить или установлена связь между компьютером и Вашим Android устройством.

Запустите командную строку на Вашем компьютере и укажите путь к папке, которую Вы скачали (android-tools). Для пользователей Windows всё очень просто: зажмите кнопку Shift + правый клик на папке, командная строка откроется в выбранной директории. Когда Вы оказались в нужной директории, введите команду «adb devices», если в результате Вы получили серийный номер Вашего устройства, значит всё хорошо. Если не получилось, убедитесь в том, что нужный драйвер установлен и что Вы находитесь в нужной директории.

Копаем исходники ядра

Лицензия GPL обязывает производителей смартфонов выкладывать исходники ядра. Спасибо Линусу и Столлману за это. Иногда производители выкладывают что-то левое, иногда правильные исходники, но без файла, иногда правильные и очень редко с инструкцией как их собирать (например LG).

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

Через продолжительное время я остановился на двух файлах:

  • https://github.com/kayrus/kc-s701-torque-kernel/blob/master/security/selinux/hooks.c
  • https://github.com/kayrus/kc-s701-torque-kernel/blob/master/arch/arm/mach-msm/restart.c

Scripting commands

Wait for the device to be in the specified state.

  • : Values can be , , , or .
  • : Values can be , , or .

Print the adb state of a device. The adb state can be , , or .

Print the adb device serial number string.

Print the adb device path.

Remount the , , and partitions in read-write mode.

Reboot the device. This command defaults to booting the system image, but also supports and .

  • The option reboots into bootloader.
  • The option reboots into recovery.
  • The option reboots into recovery and starts mode.
  • The option is the same as , but reboots after side loading completes.

Side load (install in APK format) the specified full OTA package onto the device.

Restart adbd with root permissions.

Restart adbd without root permissions.

Restart the adb server listening on USB.

Restart the adb server listening on TCP at the specified port.

Установка

После этого требуется распаковать архив, зайти в каталог tools, выбрать там папку bin и обратиться к файлу sdkmanager. Он как раз позволить установить программу.

Дальше происходит работа в командной строке Windows. Делаем запуск от имени администратора. После этого открываем папку sdkmanager, прописав к ней путь C:\sdk-tools-windows-3859397\tools\bin.

В ходе установки прочитайте лицензионное соглашение, нажмите клавишу Y.

Если весь процесс прошел правильно, то в корневой папке появится директория platform-tools с файлами adb.exe и fastboot.exe.

Как работает ADB

Установив программу, можно с ней работать. Чтобы убедиться, что все правильно и нормально функционирует, следует с помощью командной строки открыть папку с файлами adb и fastboot и выполнить программу adb.help. То, что получилось должно походить на скриншот внизу:

Теперь необходимо соединить устройство с ПК и проверить видит ли его приложение. Подключение происходит при помощи usb кабеля. Следует выбрать режим MTP – диспетчер файлов, а затем пункт «для разработчиков». Если такой пункт не появился, то стоит зайти в раздел «о телефоне», кликнуть 7-10 раз на номер сборки. После этого в появившемся пункте «для разработчиков» необходимо выбрать «отладку по usb».

Затем в командной строке системы водим adb devices. Это позволит увидеть информацию об устройстве. Выглядит это как на скриншоте.

После, проверяется программа fastboot, прописывается в консоли задача fastboot reboot, нажимается на ввод.

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

Команды ADB

Утилита предполагает работу со смартфоном, выполнение различных действий. Основных команд ADB всего 10:

  1. Devices – помогает выяснить обнаруживает ли компьютер устройство, есть ли возможность работать с ним при помощи ввода команд. Дальше появляется строчка с текстом List of devices attached с серийным номером гаджета вместе с его состоянием на данный момент. То есть телефон либо находится в режиме offline, либо готов к работе, т. е. online.
  2. Push – позволяет переносить или копировать файлы на мобильный носитель.

Достаточно прописать путь к папке, откуда копируется и в которую копируется информация.

  1. Pull – подходит для копирования файлов с гаджета на ноутбук. Как и во второй команде, нужно указать путь, откуда и куда помещается файл.
  2. Reboot – позволяет получить root права или установить программы. Позволяет так же вносить различные изменения. После ввода устройство перезагружается. Этот пункт подходит и для размещения скриптов, позволяющих перезагрузить телефон после внесения необходимых изменений.
  3. Reboot-bootloader, Reboot Recovery – возможность перезагружать устройство в загрузчик bootloader. Это позволяет разблокировать загрузчик, чтобы пользоваться root правами, устанавливать альтернативные прошивки.

Так же есть возможность получить доступ к меню восстановления «recovery».

  1. Fastboot devices – при перезагрузки устройства в bootloader оно перестает реагировать на команды. Тогда на гаджет воздействует программа fastboot. Она позволяет управлять гаджетом в режиме загрузчика.
  2. Fastboot oem unlock – многие устройства разблокируются с помощью этой команды. Достаточно ввести ее в командную строку, а затем придерживаться инструкций.

Но стоит помнить, что после выполнения этой программы, все данные на телефоне удаляются.

Shell – ее можно использовать в двух вариантах. Первый – ввод ее в командную строку, с последующим вводом. Это позволит выйти в режим терминала, где возможно выполнение любых команд Android shell

Но пользоваться им следует осторожно, так как устройству можно нанести сильный вред. Второй вариант – единичный ввод действия

Таким образом, можно, например, сменить возможность прав доступа к некоторым папкам

Второй вариант – единичный ввод действия. Таким образом, можно, например, сменить возможность прав доступа к некоторым папкам.

  1. Install – поможет копировать файлы, устанавливать приложения в виде apk. Для начала нужно указать путь, где расположен необходимый файл.
  2. Uninstall – удаляет программы с гаджета. Для команды используется k-ключ, который позволяет не удалять данные приложения и кэш.

Бонусная утилита – Sideload. Она подходит владельцам устройства Nexus, позволяя обновлять официальную прошивку на всех устройствах компании.

How to Fix All Possible ADB and Fastboot Errors

While on one hand these commands offer a plethora of goodies, on the other hand, they have their fair share of issues as well. Fortunately, each of them could be fixed without much hassle. I have compiled various guides pertaining to all the major ADB and Fastboot Errors as well as the steps to fix them. Likewise, I have also documented a comprehensive guide that acts as a universal guide for all ADB/Fastboot Fixes. So without further ado, let’s check them out:

  • A Universal Guide to Fix All Possible ADB and Fastboot Errors
  • Fix Waiting for Device Error in ADB or Fastboot Commands
  • Fix adb server version doesn’t match this client; killing.
  • How to fix ADB Device not found
  • Detailed Steps to Fix adb is not recognized Error
  • How to Fix Unauthorized Device with ADB Commands
  • How to Fix Nokia Device Stuck in No Command Screen
  • Fix Failed (remote: ‘flashing is not allowed for critical partitions)
  • Fix FAILED (remote: Partition should be flashed in fastbootd)
  • How to Fix FAILED (remote: Command not allowed)
  • Fix fastboot: error: Couldn’t parse partition size ‘0x’
  • How to Fix Android Device stuck in Fastboot Mode

So this was a detailed guide covering the most important ADB and Fastboot commands. Moreover, we have also provided a step-by-step tutorial on How to Enable Developer Options and USB Debugging on any Android device. However, if you find any error in the above codes or didn’t understand the execution of any certain code, let me know in the comments section below. Happy Coding!

Sadique Hassan

administrator

A technical geek by birth, he always has a keen interest in the Android platform right since the birth of the HTC Dream. The open-source environment always seems to intrigue him with the plethora of options available at his fingertips. “MBA by profession, blogger by choice!”

Fastboot Mode (FBM) что это означает?

Что означает ФастБут Мод (скорая загрузка) и на самом деле данный режим имеет прямую связь с утончённой настройкой? В части ноутбуках FBM работает для того, чтобы по максимуму увеличить загрузку ОС, обходя БИОС и различные программы. В телефонах его устанавливают для других целей. На гаджетах с планшетами ОС Андроид FBM в основном нужен, чтобы обеспечить доступ подхода к системным элементам прибора и для того, чтобы заниматься управлением этих настроек с ПК.

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

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

Fastboot Mode является отдельным, независимым от OS программным компонентом, который реализован на аппаратной ступени и внедрён в чип памяти.

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

Бэкап приложений

В Android есть встроенные функции бэкапа, которые также можно запустить с помощью командной строки. Для этого используется команда adb backup и набор опций:

adb backup <����������

  • �����зывает имя создаваемого файла и его расположение на компе. При отсутствии ключа будет создан файл backup.ab в текущем каталоге;
  • -apk|-noapk указывает, включать ли в бэкап только данные приложения или сам .apk тоже (по умолчанию не включает);
  • -obb|-noobb указывает, включать ли в бэкап расширения .obb для приложений (по умолчанию не включает);
  • -shared|-noshared указывает, включать ли в бэкап содержимое приложения на SD-карте (по умолчанию не включает);
  • -all указывает на необходимость бэкапа всех установленных приложений;
  • -system|-nosystem указывает, включать ли в бэкап системные приложения (по умолчанию включает);
  • — перечень пакетов для бэкапа.

Если мы хотим создать бэкап всех несистемных прог, включая сами .apk, в определенное место, то команда будет выглядеть так:

adb backup -f c:\android\backup.ab -apk -all -nosystem

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

adb restore c:\android\backup.ab


Процесс бэкапа

Основные команды

Работа с ADB осуществляется через командную строку: в адресной строке папки с установленным ADB ввести cmd и нажать Enter.

После подключения андроид-устройства в окне нужно ввести adb devices. Если ПК обнаружил смартфон, в окне появится серийный номер подключенного устройства. Надпись Online сигнализирует о его готовности принимать директивы.

Инсталляция приложений через .apk происходит через команду adb install, после написания ее в этой же строке нужно указать путь из корневого каталога к установочному файлу. Для этого его можно открыть через Проводник и скопировать путь.

Аналогично проводится удаление программ через — adb uninstall. После команды нужно указать название пакета приложения. Например, com.piriform.ccleaner, чтобы удалить программу CCleaner с телефона

Важно, что удаление проводится полностью, кэш на устройстве не остается. Если важно сохранить его, в конце следует дописать ключ -k

adb push создана для передачи файлов на Android: после самой команды необходимо написать путь к файлу на ПК и место назначения (через косую черту или слэш).

adb pull – обратная сторона, с ее помощью данные копируют на компьютер со смартфона.

Команда adb reboot выручит при проблемах к управлению телефонов – она перезагрузит гаджет. При проблемах включения андроид-устройства в режим bootloader позволит перейти введение adb reboot-bootloader. В режим восстановления вводит adb reboot recovery, но она доступна лишь на некоторых ПК.

Еще несколько полезных директив (все доступные команды можно посмотреть после ввода adb help в командую строку):

  • adb connect – подключение смартфона к Wi-Fi, придется указать IP-адрес и порт смартфона.
  • adb shell – открывает доступ ко всем файлам телефона.
  • adb fastboot devices – запрет на принятие смартфоном любых команд, fastboot oem unlock – разблокирует загрузчик.
  • adb logcat – вывод содержимого log-файла, текст нужно сохранить в текстовый файл.
  • adb backup и adb restore создают бэкап и проводят восстановление данных из него.

Таким образом, с помощью адб-команд можно решить массу вопросов, которые вручную делать гораздо дольше

Важно не забыть установку Android SDK, иначе работать не получится

ADB Shell KeyEvent commands

Android devices support KeyEvent commands that can let you perform certain actions that require you to press a hardware button or tap an app or UI option. You can control your Android phone or tablet device simply by using these KeyEvent commands. These commands might come in handy if the hardware keys on your device are not functioning properly due to some damage.

  • Turn Android device ON or OFF: adb shell input keyevent 2
  • Press Home button: adb shell input keyevent 3
  • Press Back button: adb shell input keyevent 4
    
  • Press Call button: adb shell input keyevent 5
    
  • End a call: adb shell input keyevent 6
    
  • Turn ON the camera: adb shell input keyevent 27
    
  • Open wen browser: adb shell input keyevent 64
    
  • Press the Enter key: adb shell input keyevent 66
    
  • Press Backspace button: adb shell input keyevent 67
    
  • Open Contacts app: adb shell input keyevent 207
    
  • Decrease display brightness: adb shell input keyevent 220
    
  • Increase Display brightness: adb shell input keyevent 221
    
  • Cut text: adb shell input keyevent 277
  • Copy text: adb shell input keyevent 278
  • Paste text: adb shell input keyevent 279
  • Make the device sleep: adb shell input keyevent KEYCODE_SLEEP
  • Make device wakeup: adb shell input keyevent KEYCODE_WAKEUP
  • Toggle Power menu: (adb shell) input keyevent KEYCODE_POWER

You can learn more about KeyEvent commands on the Google developers portal.

Finally, it’s time to wrap up the ADB shell commands cheat sheet. In case you need this ADB shell commands list directory for future reference, you can download this PDF file.

Read Next: How to Check Android Device Activation Date

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.

Command

Start an specified by .
Options are:

  • : Enable debugging.
  • : Wait for launch to complete.
  • : Start profiler and send results to .
  • : Like , but profiling stops when the app goes idle.
  • : Repeat the activity launch times. Prior to each repeat, the top activity will be finished.
  • : Force stop the target app before starting the activity.
  • : Enable tracing of OpenGL functions.
  • : Specify which user to run as; if not specified, then run as the current user.

Start the specified by .
Options are:

—user user_id | current: Specify which user to run as; if not specified, then run as the current user.

Force stop everything associated with (the app’s package name).

Kill all processes associated with (the app’s package name). This command kills only processes that are safe to kill and that will not impact the user experience.
Options are:

—user user_id | all | current: Specify user whose processes to kill; all users if not specified.

Kill all background processes.

Issue a broadcast intent.
Options are:

: Specify which user to send to; if not specified then send to all users.

Start monitoring with an instance. Typically the target is the form .
Options are:

  • : Print raw results (otherwise decode ). Use with to generate raw output for performance measurements.
  • : Set argument to …]`.
  • : Write profiling data to .
  • : Wait for instrumentation to finish before returning. Required for test runners.
  • : Turn off window animations while running.
  • : Specify which user instrumentation runs in; current user if not specified.

Start profiler on , write results to .

Stop profiler on .

Dump the heap of , write to .
Options are:

  • : When supplying a process name, specify user of process to dump; uses current user if not specified.
  • : Dump native heap instead of managed heap.

Set app to debug.
Options are:

  • : Wait for debugger when app starts.
  • : Retain this value.

Clear the package previous set for debugging with .

Start monitoring for crashes or ANRs.
Options are:

—gdb: Start gdbserv on the given port at crash/ANR.

Control screen compatibility mode of .

Override device display size. This command is helpful for testing your app across different screen sizes by mimicking a small screen resolution using a device with a large screen, and vice versa.
Example:

am display-size 1280×800

Override device display density. This command is helpful for testing your app across different screen densities on high-density screen environment using a low density screen, and vice versa.
Example:

am display-density 480

Print the given intent specification as a URI.

Print the given intent specification as an URI.

ADB Shell

Android полноценная система Unix со своим Shell, к которому можно подключаться по adb.

или

Команда подключит ваш терминал к shell устройства и вы сможете взаимодействовать с ним используя Unix команды, cat, ls, df и другие, а также запускать скрипты.

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

Например,

Команда выше выдаст информацию о количестве свободной памяти на устройстве.

Следующая команда откроет на устройстве экран с настройками.

А две последующие через ADB включают и отключают соответственно прокси в настройках сети.

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

restart

Тоже интересный для изучения файл. В нем описываются возможные варианты загрузки телефона:

  • adb reboot bootloader — режим fastboot, в моём телефоне не доступен ( — hex метка 00556677 в разделе sbl1)
  • adb reboot recovery — режим recovery ( — hex метка 02556677 в разделе sbl1)
  • adb reboot rtc — так называемый ALARM_BOOT. Так и не понял для чего, метки в sbl1 нет. Возможно имеется в виду https://developer.android.com/reference/android/app/AlarmManager.html
  • adb reboot oem-X (в моём случае oem-1, — hex метка 016d656f в разделе sbl1). Что происходит во время этого режима устанавливается производителем. Судя по исходникам, в этот режим телефон перезагружается при ошибке аутентификации прошивок из раздела modem.
  • adb reboot edl — emergency download, переводит телефон в штатный qualcomm’овский download mode. Телефон определяется как QHSUSB__BULK COM port, по которому можно передать подписанный загрузчик (если не ошибаюсь, то каждый загрузчик предназначен для одного типа SoC и производителя телефонов) и выполнять низкоуровневые операции с телефоном, в том числе и прошить. Обычно используется вкупе с QPST. Для некоторых телефонов загрузчики утекают в сеть, например для Kyocera KYL22. Откуда они берутся — мне неизвестно.
  • Некий download mode, в который через adb reboot не зайти. Вот тут интересно… Но об этом позже.

Немного о том, как происходит загрузка на телефонах с процессором Qualcomm:

Встроенный ROM загрузчик Qualcomm (pbl — primary bootloader) загружает раздел sbl1 (secondary bootloader). sbl1 загружает tz (trust zone), затем aboot (android boot, little kernel, lk). Aboot в свою очередь загружает boot, recovery или fota.

Описание разделов, участвующих при загрузке:

  • tz — Qualcomm Trust Zone. Выполняет низкоуровневые операции, в том числе работает с QFuses (раздел rpmb).
  • rpm — Resource and Power Manager firmware. Прошивка для специализированного SoC, отвечающего за ресурсы и питание.
  • sdi — trust zone storage partition. Данные, которые используются Trust Zone.

Все эти разделы подписаны цепочкой сертификатов.

fota

В некоторых случаях полезно игнорировать обновления прошивки.

FOTA — firmware over the air. В отличие от boot и recovery, fota — это неофициальный режим загрузки Android. Задача fota — обновить прошивку. В Kyocera для этого используется решение от компании Red Bend, которое в 35Mb умещает обновление не только ядра но и раздела . Потому запись в раздел запрещена, иначе наложение патча на неправильные данные может окирпичить телефон.

На мой телефон имелось обновление. Отважиться на него я мог потому, что я уже имел возможность писать в и прервать обновление в любой момент.

Изучив исходники отвечающего за обновление Java приложения, мне стало ясно как оно происходит:

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

Перезагрузка происходит не моментально, значит у меня есть возможность удалить файл перед перезагрузкой и посмотреть что происходит с разделом fotamng.

Пишу команду, которая непрерывно делает дамп раздела и переименовывает . Запускаю её сразу после соглашения о перезагрузки телефона. Телефон перезагружается в режим FOTA, рапортует об отсутствии обновления и перезагружается в обычный режим.

Начинаю изучать данные, которые сдампил. В разделе бонусом получаю логи fota, в которых даже есть логи dmseg! Сама перезагрузка в fota инициализируется байтами «1» в разделе fotamng:

После перезагрузки они обнуляются

В dmesg я обратил внимание на наличие параметра ядра kcdroidboot.mode=f-ksg. Вот оно! Т.е

загрузчик снимает защиту для fota. И чисто теоретически, если я запишу раздел boot в fota и перезагружу телефон в этот режим, то я получу ядро с отключенной защитой Kyocera. Но писать в системные разделы я всё еще не могу.

Системные утилиты

Кратко остановлюсь на нескольких полезных командах (работоспособность некоторых, однако, может зависеть от версии прошивки и модели телефона).

Изменение DPI. Не требует root и работает на Android 5.0+. Стандартное значение для Nexus 5 — 480. При значении 420 на рабочем столе стокового лаунчера помещается пять иконок в ряд вместо четырех:

$ wm density 420 && adb reboot

Подключение /system в режиме записи. Для части команд, которые меняют системные файлы, необходимо сначала перемонтировать раздел /system на запись. Это необходимо в том числе при удалении системных приложений. Перемонтирование выполняется следующей командой:

$ su # mount -o rw,remount /system

Мягкая перезагрузка:

$ setprop ctl.restart zygote

Перевод смартфона в режим энергосбережения Doze (Android M+):

$ dumpsys battery unplug $ dumpsys deviceidle step

…повторяем действия, пока не увидим idle.

Батарейка в процентах (Android 4.4+):

$ content insert —uri content://settings/system —bind name:s:status_bar_show_battery_percent —bind value:i:1

Копаем recovery

Проверяю разницу между boot и recovery разделами. Все идентично кроме initramfs. В initramfs раздела recovery изучаю init.rc, в котором описан лишь один сервис, который запускает . Изучаю , затем исходники оригинального recovery. Как видно, по умолчанию recovery просто отображает логотип Android. А если необходимо что-то сделать, то в штатном режиме в раздел записывается файл , который может содержать параметры запуска recovery. Если в этот файл записать то мы должны увидеть меню.

Запускаю dirtycow exploit, выставляю UID/GID, записываю файл и запускаю . Телефон перезагружается и я попадаю в меню стандартного recovery. Уже что-то. Пробую прошить ZIP файл с supersu через . Операция прерывается с ошибкой. Толком не смотрю на ошибку, а лезу в код recovery и ищу место, отвечающее за проверку цифровой подписи ZIP файла.

Выясняю, что initramfs содержит публичный ключ в формате minicrypt, которым проверяется цифровая подпись ZIP файла. Оказалось это стандартный тестовый ключ Android, и что я могу подписать этим ключём любой архив. Проверить это можно следующим образом:

Попробовал установить ZIP напрямую с sdcard, но в recovery при монтировании sdcard возникала ошибка. Изучил , оказалось что в режиме recovery sdcard монтируется как vfat:

Моя 64Gb флэшка была отформатирована в exfat. Нашел старую sdcard на 2Gb, отформатировал её как vfat, записал ZIP, вставил её в телефон. Recovery в этот раз смог примонтировать карточку и я мог просматривать её содержимое на телефоне. Однако при установке ZIP опять возникла ошибка: E:failed to set up expected mounts for install; aborting.

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

Т.е. перед тем как применить ZIP, recovery отмонтирует все разделы, но в моём случае что-то идёт не так.

Global options

Listen on all network interfaces instead of only on .

Direct an adb command to the only attached USB device. Returns an error when more than one USB device is attached.

Direct an adb command to the only running emulator. Returns an error when more than one emulator is running.

Direct an adb command to a specific device, referred to by its adb-assigned serial number (such as emulator-5556). Overrides the serial number value stored in the environment variable.

The name of the adb server host. The default value is .

The adb server port number. The default value is .

Listen on the provided adb server socket. The default value is .

Плитка

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

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

Настройка ADB

Некоторые быстрые настройки переключателей требуют ADB. Для этого настройте ADB и вставьте эту команду:

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

Уникальные черты

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

Скачать: Плитка (1 доллар)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector