Замена системных файлов Android с помощью adb. Скачиваем и устанавливаем ADB, драйверы и Fastboot Установка приложений через ADB
Для linux. [Это пакет инструментов для разработчиков под Android]
mkdir -p ~/bin
mv ~/Desktop/tools/adb ~/bin/
2. Сбор необходимой информации
- На вашем телефоне перейдите Насторйки=>Приложения=>Разработка (Settings=>Applications=>Development) и включите опцию Отладка по USB(USB debugging)
- Подключите ваш телефон к компьютеру. [*В режиме телефона, не в режиме USB накопителя]
- В терминале на компьютере выполните "lsusb " без кавычек
- Одна из строк в результате должна быть похожа на что-то вроде (в зависимости от производителя вашего телефона):
- Запишите или запомните первые 4 символа после ID. Это идентификатор производителя (Vendor ID, в нашем примере 04e8). Номера Bus и Device будут разными всякий раз при переподключении телефона к компьютеру или после его перезагрузки.
- В терминале выполните "id " без кавычек, эта команда покажет имя и группу пользователя под которым вы вошли в систему (если вы не уверены, что знаете их точно)
3. Установка првила Udev для работы ADB
- Откройти любимый текстовый редатктор с правами root. Например, в терминале Kubuntu наберите "kdesudo kate ".
- Вставьте следующую строку без переносов в редактор и измените как указано ниже:
SUBSYSTEM=="usb", SYSFS{idVendor}=="<идентификатор производителя Vendor ID>", OWNER="<имя пользователя>" GROUP="<имя группы>"
Для нашего примера "< идентификатор производителя Vendor ID > " заменяем "04e8". Не трогаете кавычки но заменяете < > и все, что в нутри.
- Сохраните файл по этому пути /etc/udev/rules.d/51-android.rules
- И ещё по этому пути /lib/udev/rules.d/51-android.rules
[Примечание: Вообще вам нужен первый из них, но он может отличаться в разных системах]
- В терминале, наберите ls /etc/udev/rules.d/51-android.rules дабы убедиться, что файл на месте, аналогично для второго пути.
- Перезапустите udev или перезагрузите компьютер чтобы изменения вступили в силу
[Примечание: в некоторых руководствах при настройке првил udev рекомендуется устанавливать права доступа 0666 которые открывают доступ к файлу всем. Здесь мы назначаем доступ одному пользователю, которому это нужно, так будет безопаснее. Приоритет правила установили 51, это не принципиально, можно назначить и другой.]
4. Проверяем что получилось
- В терминале наберите "lsusb ", как делали это ранее
- Одна из строк должна быть похожа на:
Bus 001 Device 002: ID 04e8:681c Samsung Electronics Co., Ltd
- В данный момент нас интересуют номера после Bus и Device, которые, возможно, изменились если вы перезагрузили компьютер.
- В терминале выполните "ls -l /dev/bus/usb/001/002 " ВНИМАНИЕ 001/002 это Bus/Device из примера выше, замените Bus/Device на цифры из вашего вывода команды "lsusb ".
- Если в результате команды имя пользователя и группа отличаются от "root root" можно продолжать дальше. Если это не так, перечитайте и повторите шаги 2 и 3.
- *Убедитесь что ваш телефон все еще в режиме Отладка по USB . Должен быть красный треугольник с восклицательным знаком в строке состояния вашего телефона (зависит от темы и версии Android).
- В терминале наберите "sudo adb devices " [*sudo понадобится только при первом запуске adb.]
Вы должны увидеть свой телефон в списке.
Замечание. Предварительное рутование может и не потребоваться при переходе непосредственно на нестандартные прошивки, такие как: CM7 или MIUI через Odin/Heimdall, в любом случае вам потребуется ADB (см. пункты 1-4)
Samsung Fascinate Root Package
Эти файлы необходимы, хотя драйвера не нужны для Linux.
6. Распаковка 4-х файлов в ~/bin
Эту директорию мы создали в шаге 1, там уже должен быть файл adb. Вы можете распаковать куда-нибудь загруженный архив и поместить необходимые файлы в ~/bin (это su, rage.bin, busybox, Superuser.apk).
7. Переход в ~/bin
В терминале наберите "cd ~/bin
", а затем "ls
", должно быть 5 файлов.
8. Перенос файлов на телефон и запуск root:
Выполните каждую из следующих строк по отдельности в терминале, скопируйте и встаьте (жмите Enter после вставки каждой строки):
./adb push su /sdcard/su
./adb push rage.bin /data/local/tmp/rage.bin
./adb push busybox /sdcard/busybox
./adb shell
[Примечание: символ приглашения ввода строки должен измениться на
$
, это означает, что мы удаленно подключились к телефону]
cd /data/local/tmp
chmod 0755 rage.bin
./rage.bin
[Примечание: Эта комманда определит ограничение процесса, найдет номер процесса adb, а затем запускает процессы до исчерпания этого ограничения. Вы быстро вернетесь в строк сприглашением $, но ЭТО НЕ ВСЕ. ЖДИТЕ пока не выведется что-то похожее на "[+] Forked 3705 childs." и вы вернетесь в свою домашнюю директорию.]
9. Зафиксируем права root
- В терминале вернитесь в директорию ~/bin введите "./adb shell
"
На этот раз вы должны получить приглашение # вместо $ . Это означает, что теперь вы удаленно зашли на телефон как root.
- Скопируйте и вставьте каждую строку по отдельности (жмите Enter после каждой строки):
mount -t rfs -o remount,rw /dev/block/stl9 /system
cd /system/xbin
cat /sdcard/su > su
cat /sdcard/busybox > busybox
chmod 4755 su
chmod 4755 busybox
exit
./adb install Superuser.apk
10. Убедимся что получили права root
- Перезапускаем телефон
- В терминале выполняем "~/bin/adb shell
"
Вы должны получить приглашение $
Выполните "su "
На телефоне должно появиться всплывающее сообщение где запрашивается подтверждение использования прав суперпользователя. После того, как вы разрешите, приглашение должно измениться на #
Это сообщение будет появляться всякий раз, когда вы устонавливаете и запускаете программу требующую привелегий пользователя root.
Теперь запустите приложение SuperUser, оно должно показать список программ имеющих привелегии root пользователя.
Способ может быть полезен в том случае, если «уже ничего не помогает», доступа к Root Explorer нет или телефон вообще не может загрузиться. В моем случае, пришлось в «боевом» режиме восстанавливать удалённый по глупости SystemUI.apk. При этом на телефоне что-то делать можно было только в доли секунды между нажатием кнопки «ОК» на предыдущем окне с ошибкой и появлением следующего такого же окна. Перепрошиваться не хотелось, потому пришлось срочно осваивать adb.
Итак, для того, чтобы подключить свой гуглофон к adb, вам нужно:
1) Android SDK для Вашей системы (здесь - на примере GNU/Linux Ubuntu)
2) Android SDK Platform-tools (устанавливаются выбором соответствующей галочки в Android SDK)
3) В «Параметры - Программы - Отладка» должна стоять галочка на «Отладка по USB»
4) Подключить телефон к USB
5) В моём случае пришлось сделать еще две вещи:
указать ID производителя телефона idVendor (его можно найти ):
#echo SUBSYSTEM=="usb", SYSFS{idVendor}==" 0bb4 ", MODE="0666" > /etc/udev/rules.d/51-android.rules
#chmod a+r /etc/udev/rules.d/51-android.rules
где 0bb4 заменяем на код своего производителя, после чего перезапустить adb
#adb kill-server
#adb start-server
Итак, все установлено и подключено, вы добавили путь к platform-tools в переменную $PATH своей операционной системы или перешли в эту папку с помощью команды cd. По команде «adb devices» должен выдавать некий номер и справа от него «device». Это значит, что adb видит телефон и может с ним работать. Если вместо «device» что-то другое или вообще «List of devices attached» - проблема где-то на 4-5 шаге.
Далее вам нужно поместить системный файл, который вы хотите установить, в папку platform-tools. То есть запасная копия системного файла должна быть приготовлена заранее или скопирована с аналогичного телефона.
После этого можно закинуть системный файл в /system/app такой последовательностью команд:
$adb push YourFile.apk /data/Yourfile.apk
$adb remount
$adb shell
$su
#cp -f /data/YourFile.apk /system/app/Yourfile.apk
#chmod 644 /system/app/YourFile.apk
#exit
$exit
$adb reboot
где YourFile.apk - имя вашего системного файла, причем регистр букв имеет значение.
После последней команды Ваш телефон должен перезагрузиться уже с новыми файлами.
Если на команду «adb remount» Вы получаете ответ «remount failed: Operation not permitted», то попробуйте вместо нее после «su» ввести "#mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system".
P.S.: В линуксе, если platform-tools не добавлена в $PATH, вместо «adb» нужно писать "./adb".
В этой статье команды, которые я запускал от имени обычного пользователя обозначены символом $ в начале строки, от имени root - символом #.
Многие из нас уже знакомы с ADB (Android Debug Bridge), поскольку, будучи владельцем Android устройства, довольно часто приходится выполнять такие простые действия, как adb push и pull , или adb reboot и т.д. Но для многих начинающих пользователей один только вид командной строки уже пугает, и кажется запредельно возможным. Хотя на самом деле всё довольно просто, опытные пользователи не дадут мне соврать, а самая большая сложность заключается в том, чтобы запомнить все эти команды, хотя это тоже не обязательно делать, поскольку Интернет всегда под рукой и найти нужную команду не составляет труда.
Android Debug Bridge, который является частью эмулятора Android SDK, позволяет осуществлять связь между Вашим компьютером и подключенным к нему Android устройством, кстати если нужен какой то софт, то программы на ноутбук скачать бесплатно можно здесь. Что я могу делать с помощью ADB? Возможности у него довольно широкие, например, самые популярные действия: копировать файлы с Android устройства на компьютер, заливать файлы с компьютера на Android, выполнять множество Linux команд, получать отчеты об ошибках и т.д.
Поэтому, если Вы новичок в этом деле и хотите узнать немного больше об ADB, чем просто что это такое, тогда предлагаю Вам ознакомится с моим небольшим базовым пособием по изучению ADB.
Что понадобится
1. Android Debug Bridge (ADB) для Windows 32bit - скачать
2. Android Debug Bridge (ADB) для Windows 64bit - скачать
3. Компьютер с установленной Windows ОС.
Теперь переходим к активной фазе:
1. Скачиваем нужный zip архив и извлекаем его куда Вам будет угодно, например, диск С.
2. Теперь переходим в директорию C:/adb/sdk/platform-tools. Здесь вы найдете набор файлов, как показано на картинке ниже.
3. Зажимаем кнопку Shift + правый клик мышью и запускаем командную строку Windows с текущей директории.
4. Вводим команду adb start-server .
5. Чтобы убедится, что Ваше устройство правильно подключено и было распознано компьютером, введите команду: adb devices . Если всё хорошо, вы увидите что то похоже на это:
Теперь, когда Ваше устройство подключено и всё работает, давайте немного с ним поиграем.
Читаем LOGCAT через ADB
Самый простой способ, это выполнить команду: adb logcat . Как результат, на экране появится всё содержимое лог файла устройства. Чтобы получить logcat в отдельном файле выполните: adb logcat > logcat.txt .
Отчет об ошибках (BUGREPORT)
Можно выполнить команду: adb bugreport , но вы получите уведомление, что сформировавшийся отчет невозможно будет прочитать, поэтому лучше воспользоваться: adb bugreport >result.txt .
ADB совместно с ROOT правами доступа
Для работы из-под ADB с полными правами доступа, нужно рутить девайс. Если девайс уже рученый, тогда выполняем команду: adb root и видим то, что показано на картинке ниже (перезагрузка ADB с root правами).
Установка приложений через ADB
Чтобы установить приложение, убедитесь, чтобы в названии apk файла не было пробелов и надо точно знать правильный путь к нему. Ну а дальше выполняем команду: adb install + название файла инсталяции. В своем примере я установил игру papertoss, поэтому если всё пройдет успешно, вы получите на экране такую картинку:
Data-lazy-type="image" data-src="http://androidkak.ru/wp-content/uploads/2015/08/Android-Root..jpg 500w, http://androidkak.ru/wp-content/uploads/2015/08/Android-Root-300x127.jpg 300w" sizes="(max-width: 500px) 100vw, 500px">
Если вы открыли эту статью, то вы наверняка уже имеете хоть какое-то представление о правах суперпользователя. Но на тот редкий случай, если вы являетесь обычным пользователем Android и открыли статью из праздного интереса – небольшой ликбез.
Права суперпользователя, они же рут-права (от английского “root”, что значит “корень”) – это возможность записывать, изменять и удалять информацию, находящуюся в системном (или корневом) разделе файловой системы. Данное понятие схоже с правами администратора на Windows и применяется на операционных системах, основанных на UNIX (Linux, Android, Tizen и т.д.)
Права root можно получить практически на всех Android-устройствах и мы обязательно пройдемся по самым популярным способам их получения, но сначала давайте ответим на два очень важных вопроса: безопасно ли то, что мы с вами собираемся сейчас сделать, а также стоит ли оно того.
Какие последствия влечет за собой получение рут-прав
Data-lazy-type="image" data-src="http://androidkak.ru/wp-content/uploads/2015/08/vnimanie.jpg" alt="обратите внимание" width="145" height="121" srcset="" data-srcset="http://androidkak.ru/wp-content/uploads/2015/08/vnimanie..jpg 300w" sizes="(max-width: 145px) 100vw, 145px">
Прежде всего, ответьте на вопрос – читали ли вы гарантийное соглашение, которое прилагалось к вашему телефону? Если читали – то вы знаете, что получение рут-прав – это серая зона и останется ли ваша гарантия при вас по завершении процесса, зависит только от политики производителя.
Далее, запомните одну вещь – суперпользователь даёт вам полный доступ. ПОЛНЫЙ. То есть если вам вдруг придет в голову удалить важные системные файлы – вас никто не остановит. Так что внимательно следите, какие программы получают от вас данные права, а также консультируйтесь с другими, более опытными пользователями Android перед тем, как делать какую-нибудь глупость.
Какие преимущества можно получить при наличии root-прав
Data-lazy-type="image" data-src="http://androidkak.ru/wp-content/uploads/2015/08/android-vigody.jpg" alt="Выгоды получения прав" width="159" height="50" srcset="" data-srcset="http://androidkak.ru/wp-content/uploads/2015/08/android-vigody..jpg 300w" sizes="(max-width: 159px) 100vw, 159px"> Список того, что можно сделать при наличии root-прав просто огромен. Только взгляните на наиболее популярные причины получения прав суперпользователя!
ВАЖНО: В скобках указана программа, которая позволяет выполнить данное действие.
- Удаление предустановленных программ а-ля Facebook или Twitter из системного раздела (Titanium Backup);
- Перенос кеша приложений с внутренней карты памяти на внешнюю (FolderMount);
- Перенос раздела с приложениями на карту памяти (Xposed App2SD);
- Глобальная модификация интерфейса с возможностью тонкой настройки (практически все модули Xposed);
- Отключение рекламы во всех приложениях (Adaway);
- Взлом покупок в приложениях с PlayMarket (Freedom);
- Отключение проверки лицензии в невзламываемых приложениях, а также их взлом (Lucky Patcher).
Читайте также: Fastboot Mode на Андроиде: установка, настройка и выход
И это ещё не всё! Фактически, имея root-доступ к вашему телефону, вы можете сделать из него практически всё что угодно. И если ваш запал ещё не остыл – давайте перейдём к собственно процессу получения рут-прав.
Инструкция
Существует множество способов получения root-прав и как и в наших других инструкциях, мы пойдём от простого к сложному.
1. С самого устройства
Data-lazy-type="image" data-src="http://androidkak.ru/wp-content/uploads/2015/08/google-play-logo-274x300.png" alt="google play market" width="92" height="100" srcset="" data-srcset="http://androidkak.ru/wp-content/uploads/2015/08/google-play-logo-274x300..png 405w" sizes="(max-width: 92px) 100vw, 92px"> Несмотря на то что многие производители максимально закрывают доступ к своим смартфонам, хакеры со всего мира время от времени находят лазейки, которые позволяют получить права всего одним нажатием на экран. А другие производители просто доверяют своим пользователям и даже публикуют алгоритмы обхода своей защиты. Именно на таком принципе и основаны различные автоматические получатели root-прав, наиболее известным из которых является KingRoot.
Всё, что требуется для получения root-прав на устройстве с помощью KingRoot – это нажать одну кнопку. Из недостатков KingRoot – не самый привычный старым пользователям Android менеджер прав. Вместо привычного SuperSU, KingRoot использует собственную программу, которая, впрочем, не особо отличается от SuperSU в вопросах функциональности.
Помимо KingRoot, популярностью пользуется программа Framaroot, а также многочисленные другие приложения для Андроид-устройств, например, VRoot,
2. С помощью ПК и специальных программ
Data-lazy-type="image" data-src="http://androidkak.ru/wp-content/uploads/2015/08/android-i-pk-300x258.jpg" alt="Подключение андроида к ПК" width="150" height="129" srcset="" data-srcset="http://androidkak.ru/wp-content/uploads/2015/08/android-i-pk-300x258..jpg 473w" sizes="(max-width: 150px) 100vw, 150px"> Если передать инструкции для разблокировки изнутри Android-системы нельзя, это ещё не значит, что этого нельзя сделать совсем. По крайней мере, согласно этому принципу оперируют такие программы, как SuperOneClick, Kingo и многие другие. В качестве основы своей работы они используют USB-соединение Андроид-смартфона и ПК, через которое и подаются команды.
Читайте также: Как пользоваться смартфоном или планшетом на Андроиде новичку
Для того чтобы получить возможность так делать, вам нужно включить в настройках вашего Android-смартфона опцию “Отладка по USB”. Находится она в скрытом разделе “Для разработчиков”, а чтобы открыть этот раздел (если он закрыт), зайдите в раздел “О планшете” и десять-пятнадцать раз нажмите на пункт “Версия сборки”.
После того как вы её включили просто подключите ваш Андроид-смартфон к ПК (в режиме Mass Storage, естественно) и запустите выбранную вами программу, после чего следуйте инструкциям по работе с ней. О том, какую именно программу выбрать и как именно ею пользоваться, вам придётся думать самостоятельно – число Android-устройств слишком велико, чтобы можно было с уверенностью сказать, какие именно из них работают с одной программой, а какие – с другой.
3. С помощью ПК и ADB-терминала
Для тех, кто не знает, что такое adb, отвечаем. ADB – это специальный протокол, который позволяет вашему Андроид-устройству получать инструкции с компьютера по USB-кабелю. Благодаря тому, что ADB является частью самой системы Android, такие команды в большинстве случаев имеют более высокий приоритет, чем защитные решения производителя телефона.
Для нормальной работы ADB с вашим телефоном вам понадобится как минимум:
- Компьютер с операционной системой Windows 7 (более новые ОС могут работать нестабильно или вообще не работать с нужными драйверами);
- Набор adb-драйверов для вашего устройства (обычно выдаётся производителем);
- USB-кабель;
- Собственно, смартфон с включённой в настройках опцией “Отладка по USB”;
- Распакованный в папку “X://ADB”, где X – (желательно) несистемный диск, архив с ADB-терминалом.
В сети легко найти как получить рут доступ для почти любого устройства на Android. Программы для этого и методики отличаются, но вариант всегда есть. Большинство, получив рут, даже не задумываются о том, как он был получен. Я не смогу рассказать про все способы и как они работают. Но я смогу рассказать про одну интересную вещь, которая связана с получение root доступа.
Я предполагаю, что читатели хотя бы поверхностно знаю об утилите для Android - ADB . Если кто-то еще не слышал, можете легко поиском найти что это такое. Это утилита для отладки устройств. С её помощью можно получить доступ к командной строке (shell ) устройства на Android , передавать и принимать файлы и делать много интересных вещей. В большинстве скриптов для получения рута или всяких модов для вашего устройства так или иначе используется ADB.
У ADB есть команда root . Она должна перевести режим работы в root доступ. Казалось бы так можно элементарно получить рут на любом устройстве. Но работает она не всегда. Часто, даже на устройстве с уже полученными root правами при попытке выполнить "adb root" можно получить следующую ошибку:
adb cannot run as root in production builds
Что значит, что ADB не будет запускаться из-под root"а в продакшен (финальном) билде (речь о прошивке). Если у вас есть рут, вы можете и без этого зайти в шелл (adb shell ), и уже там получить root права, набрав su . При этом adb root упорно не будет работать, сетуя на продакшен билд.
Сделано это конечно же специально , чтобы не дать получить root на реальных устройствах для конечных пользователей. С другой стороны некоторые прошивки без проблем дают выполнить эту команду или даже скажут, что ADB уже работает от root"а, если в них это разрешено.
Раз работает по разному в разных прошивках , догадливый читатель поймет, что это может регулироваться какой-то настройкой . И если эту настройку сменить, то можно будет получить root просто через adb root. Конечно же так и есть. Но конечно же эта настройка храниться в "недрах" прошивки и просто так её поменять не дадут. Во всяком случае в современных прошивках без наличия root прав заранее точно не получится "на лету".
Настройки эти являются обычными свойствами (prop) , навроде тех, что хранятся в build.prop . Называются ro.debuggable и ro.secure . Только хранятся они в /default.prop . Т.е. в отличии от build.prop , которых хранится в /system , эти хранятся прямо в корне . Проблема в том, что даже если при наличии root прав отредактировать этот файл, то изменения не вступят в силу, а после перезагрузки содержимое файла вернется назад .
Дело в том, что default.prop , как и вся корневая файловая система в Android не является обычной. Это специально подготовленный образ ramdisk . Т.е. он загружается из прошивки в память (ОЗУ) и все изменения происходят только в памяти . Следовательно после перезагрузки все изменения теряются . Для их редактирования нужно снять образ раздела BOOT , распаковать его, достать оттуда образ ramdisk"а (initramfs ) и отредактировать в нём default.prop. Далее проделать всё в обратном порядке. Но как записать данные назад, если нет доступа? Хорошо, если root у нас уже есть и мы просто хотим напрямую разрешить adb root по каким-то причинам. А если root еще нет? Получается проблема - чтобы получить root, нужно иметь root.
Чтобы статья не получилась слишком длинная, я разбил её на две части. Продолжение о том, как можно обойти это дело вы сможете прочитать