LINUX.ORG.RU
решено ФорумMobile

root на android, теоретическая сторона вопроса


0

1

Хочу разобраться в вопросе получения root привилегий на телефоне с ОС Android. Главным образом 2.3, но другие версии тоже интересуют.

Я прекрасно знаю, что для каждого конкретного телефона можно нагуглить инструкцию вида: «скачай, положи, запусти, введи, подтверди, пользуйся», но, во-первых способ для моего аппарата требует танцев с пиратским софтом вокруг винды, а во-вторых меня, главным образом интересует теория.
Для предыдущего аппарата с android 2.2 я использовал z4root. Если я правильно понимаю, то она, используя какую-то уязвимость, повышает уровень своих привилегий и подменяет какие-то системные файлы. Так ли это?
Но для 2.3 ее нет.
Можно ли выполнить те же действия вручную, используя adb (в режиме отладки root доступен)?

Получение root для каждого тела свое. Таки загугли свой телефон и используй прилагающийся рецепт. Или как вариант к твоим услугам форум xda-developers

MahMahoritos ★★★
()

Не достаточно ли будет просто подменить /system/xbin/su ?
Как - это отдельный вопрос, который сейчас не итересует.

German_B
() автор топика
Ответ на: комментарий от German_B

Как - это самое главное. Тебе надо сдампить образ раздела, смонтированного на /system, смонтировать его в нормальной системе, записать туда su, залить этот образ обратно в андроед - с помощью программы-прошивальщика от производителя девайса, иначе этот раздел на запись недоступен. Производитель девайса совсем не факт что разрешает заливать в девайс неподписанные им образы системы.

vit122
()
Ответ на: комментарий от vit122

с помощью программы-прошивальщика от производителя девайса

Вы сами то пробовали? Ни разу не видел таких прошивальщиков «от производителя» особенно. Если бы было все так просто никто бы не использовал дыры в ядре.

partyzan ★★★
()
Ответ на: комментарий от partyzan

Для моего девайся этот прошивальщик от производителя есть. Для запуска нужна WinXP, бубен и прямые руки, но это детали.

German_B
() автор топика
Ответ на: комментарий от vit122

Как - это самое главное. Тебе надо сдампить образ раздела, смонтированного на /system, смонтировать его в нормальной системе, записать туда su, залить этот образ обратно в андроед - с помощью программы-прошивальщика от производителя девайса, иначе этот раздел на запись недоступен. Производитель девайса совсем не факт что разрешает заливать в девайс неподписанные им образы системы.

еще раз повторю - меня интересует, "ЧТО нужно сделать?", а не как.

adb shell
su
mount -o remount,rw,relatime -t yaffs2 /dev/block/mtdblock8 /system
все, системный раздел доступен для записи

German_B
() автор топика
Ответ на: комментарий от vit122
#echo hello > /system/hello.txt
#reboot

Дожидаемся окончания перезагрузки. Для верности перезагрузил еще раз кнопкой на корпусе.

$adb shell
$ ls -l /system/hello.txt
-rw-rw-rw- root     root            6 2012-02-03 16:42 hello.txt
$ cat /system/hello.txt
hello

German_B
() автор топика

Все, что тебе надо - подмонтировать раздел /system на запись и положить туда утилиту su. Все, ставь superuser, обновляй su до последней версии и радуйся.

eagleivg ★★★★★
()
Ответ на: комментарий от eagleivg

Большое спасибо. Именно это я и хотел услышать.

Еще остался вопрос, где лучше взять su?
На данный момент я наковырял 3 штуки:

  • из superuser.apk (market.android.com/details?id=com.noshufou.android.su)
  • из z4Root.apk (http://code.google.com/p/z4root/)
  • найденный на форуме по китайским телефонам, на той же платформе, что и мой
German_B
() автор топика
Ответ на: комментарий от vit122

Значит можно только порадоваться за юзеров сони и послать им лучи добра.

partyzan ★★★
()
Ответ на: комментарий от vit122

Ну зачем так-то? Элементарно можно через adb перемонтировать system и залить туда su, зачем лишние проблемы?

ms-dos32
()
Ответ на: комментарий от ms-dos32

Рас уж все равно ставить superuser.apk, то взял из него. В итоге вся последовательность выглядела так:

% adb shell
$ su
# mount -o remount,rw,relatime -t yaffs2 /dev/block/mtdblock8 /system
# cat /data/data/com.noshufou.android.su/files/su > /system/bin/su
# chmod 6775 /system/bin/su
su в прошивке уже был (/system/xbin/su), но повышать привилегии до root позволял только пользователю 2000, от которого запускается adbd.

German_B
() автор топика
Ответ на: комментарий от German_B

А разве нельзя было adb install superuser.apk?

Если ты через adb кидаешь файл, то, кажется, любой пользователь может получить к нему доступ. Мой su позволял это делать всем.

ms-dos32
()
Ответ на: комментарий от ms-dos32

adb install еще ни разу не пользовался, проще из маркета напрямую.

И, честно говоря, не понимаю чем это поможет. Пока телефон не рутован ни одно приложение не сможет редактировать раздел /system, а доступные для записи разделы все noexec. Все равно нужно вмешательство извне

German_B
() автор топика
Ответ на: комментарий от ms-dos32

Да, неверно выразился, я имел ввиду андроид-приложений, которые apk
вмешательство извне - так раз и есть adb

German_B
() автор топика

Я действовал по инструкции с вики циана, например.

Откатил через adb на старую прошивку, запустил через тот же adb там эксплоит, получил рут, перепрошил.

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

Может, в Вашем случае тоже есть такой способ?

Для Вашего девайса нашел только неоффициальный порт циана на форуме xda-developers.

tekk ★★★★★
()
Ответ на: комментарий от ms-dos32

ни одно приложение не сможет редактировать раздел /system

Кроме adb.

Та да %)

%adb remount
remount failed: Operation not permitted

AF ★★★
()
Ответ на: комментарий от ms-dos32

А нам татарам все равно! Наступать - бежать. Отступать бежать.

%adb shell
$mount
rootfs / rootfs rw 0 0
tmpfs /dev tmpfs rw,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
/dev/block/platform/mmci-omap-hs.1/by-name/system /system ext4 ro,relatime,barrier=1,data=ordered 0 0
/dev/block/platform/mmci-omap-hs.1/by-name/cache /cache ext4 rw,nosuid,nodev,relatime,barrier=1,data=ordered 0 0
/dev/block/platform/mmci-omap-hs.1/by-name/userdata /data ext4 rw,nosuid,nodev,relatime,barrier=1,data=ordered 0 0
/dev/block/platform/mmci-omap-hs.1/by-name/secure /.secure ext4 rw,nosuid,nodev,relatime,barrier=1,data=ordered 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
debugfs /debug debugfs rw,relatime 0 0
/dev/block/vold/179:5 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0602,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
/dev/block/vold/179:5 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0602,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
tmpfs /mnt/sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0
/dev/block/vold/179:17 /mnt/sdcard/external_sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0602,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0

#mount -o rw,remount -t ext4 /dev/block/platform/mmci-omap-hs.1/by-name/system /system
mount: Operation not permitted

Какая нафиг разница, откуда ремаунт делать, если adb на девайсе без соответствующих прав?
AF ★★★
()
Ответ на: комментарий от AF

Попробуй его запустить, он, кажется, именно так перемонтирует system

ms-dos32
()
Ответ на: комментарий от AF

Попробуйте выполнить

%adb shell
$su
#mount -o rw,remount ...
У меня в обоих телефонах дефолтный su (/system/xbin/su) позволял повышать привилегии пользователю, от которого работает adbd

German_B
() автор топика
Ответ на: комментарий от German_B

Root Explorer вроде как платный? Лень мне его искать

su тоже не работает :)

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

AF ★★★
()
Ответ на: комментарий от Storm_

adb remount очень часто ругается на отсутствие прав пользователя, в этому случае надо действовать через встроенный шелл.

ms-dos32
()
9 мая 2012 г.
Ответ на: комментарий от Storm_

GG

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

mount -w -o remount /system - как-то так делал... У них там свой mount, с блэкджеком и лишними параметрами...

x066it
()
Ответ на: GG от x066it

Кто здесь? О_о

Тема 3 месяца назад помечена как закрытая.

German_B
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.