четверг, 16 февраля 2012 г.

Android root из Linux

Это руководство для тех, кто хочет получить права root на своем Android телефоне.


[Предварительное рутование может и не потребоваться при переходе непосредственно на нестандартные прошивки, такие как: CM7 или MIUI через Odin/Heimdall, в любом случае вам потребуется ADB (пункты 1-4)]


Прежде чем начнем сделаем резервную копию данных на всякий случай.

1. Установка ADB
  • Скачайте Android-SDK для linux. [Это пакет инструментов для разработчиков под Android] 
  • Распакуйте директорию /tools на рабочий стол. [Возможно для этого понадобится установить архиватор 7zip. Он есть в репозиториях Ubuntu.] 
  • Создайте директорию "bin" и поместите туда программу ADB:
mkdir -p ~/bin
mv ~/Desktop/tools/adb ~/bin/

2. Сбор необходимой информации
  •   На вашем телефоне перейдите Насторйки=>Приложения=>Разработка (Settings=>Applications=>Development) и включите опцию Отладка по USB(USB debugging)
  • Подключите ваш телефон к компьютеру. [*В режиме телефона, не в режиме USB накопителя] 
  • В терминале на компьютере выполните "lsusb" без кавычек
  • Одна из строк в результате должна быть похожа на что-то вроде (в зависимости от производителя вашего телефона):
    Bus 001 Device 002: ID 04e8:681c Samsung Electronics Co., Ltd
  • Запишите или запомните первые 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.]
Вы должны увидеть свой телефон в списке.

5. Загрузка 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 пользователя.

P.S. Исходный материал взят здесь

13 комментариев:

  1. freeman@Flynn-0:~/android-sdk-linux/platform-tools$ ./adb shell
    $ cd /data/local/tmp
    $ chmod 0755 rage.bin
    $ ./rage.bin
    [*] CVE-2010-EASY Android local root exploit (C) 2010 by 743C

    [*] checking NPROC limit ...
    [+] RLIMIT_NPROC={3873, 3873}
    [*] Searching for adb ...
    [+] Found adb as PID 1786
    [*] Spawning children. Dont type anything and wait for reset!
    [*]
    [*] adb connection will be reset. restart adb server on desktop and re-login.
    $ freeman@Flynn-0:~/android-sdk-linux/platform-tools$

    "На этот раз вы должны получить приглашение # вместо $"
    Приглашение все еще $.

    ОтветитьУдалить
  2. Было такое на одном из аппаратов, решить не получилось, пришлось рутовать из винды через SuperOneClick, причем он обратил внимание, что телефон уже рутован. Возможно дело в последней версии android-sdk

    ОтветитьУдалить
  3. "Установка правил udev":
    пользовалась этим способом, но в один прекрасный день он перестал работать, позже обнаружилось, что "...SYSFS has been replaced or depreciated by ATTR/ATTRS".
    т.е. теперь надо писать:
    SUBSYSTEM=="usb", ATTRS{idVendor}=="идентификатор производителя Vendor ID", OWNER="имя пользователя" GROUP="имя группы"
    но, кстати, как быстрый одноразовый способ без перезагрузки: можно сделать просто chmod +w /dev/bus/usb/xxx/yyy или chown пользователь:группа /dev/bus/usb/xxx/yyy (не знаю, насколько безопасно, у меня на openSuse проблем не возникало).

    ОтветитьУдалить
  4. перевод http://androidforums.com/fascinate-all-things-root/236081-how-root-using-ubuntu.html ?

    ОтветитьУдалить
  5. У меня после запуска rage.bin рвется связь, появляется шелл с $, через некоторое время курсор перескакивает на новую строчку - и так висит (ждал 30 минут - не отлипло). Может дело в том что у меня androind 4.1.2?

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

    ОтветитьУдалить
  7. Делаю "В терминале наберите "sudo adb devices""
    Получаю "sudo: adb: command not found" =(

    ОтветитьУдалить
    Ответы
    1. укажите явно путь к adb который должен находиться в Android SDK или пропишите путь к нему в переменной окружения PATH

      Удалить
  8. >6. Распаковка 4-х файлов в ~/bin
    и где взять эти 4 файла?

    ОтветитьУдалить
    Ответы
    1. Посту 4 года. Ссылку из п.5 пробовали открывать?

      Удалить
  9. Архив из пункта 5 удалён, а сами пункты 5-10 (если верить первоисточнику) устарели

    ОтветитьУдалить
  10. Your slot sport builders proceed the development course of by testing and removing issues, bugs and glitches. Other necessary sport artwork like characters, symbols, backgrounds, and 1xbet so on., are sketched out. However, these aren’t the final sketches and could be improved in later stages of slot sport improvement. As a outcome, your slot sport improvement team will perceive how your sport will look.

    ОтветитьУдалить