На эмуляторе, входящем в состав SDK r10, вы можете получить корневую оболочку, выполняющую «оболочку adb» с вашего хост-компьютера. Если у вас есть такая корневая оболочка, вы можете выполнить следующие шаги, чтобы получить команду, которая может зарегистрировать вас как пользователя root из эмулятора терминала:
# Remount /data to allow executables and setuids on it
mount -o remount,rw /dev/block/mtdblock1 /data
# There's no "cp" command on Android
cat /system/bin/sh > /data/su
# Give setuid permissions to the shell
chmod 7755 /data/su
Теперь из эмулятора просто запустите «/data/su» и все, вы root.
Обычная команда «/system/xbin/su», включенная в SDK, выполняет внутренние проверки идентификатора пользователя, поэтому эти команды...
mount -o remount,rw /dev/block/mtdblock0 /system
chmod 7755 /system/xbin/su
... просто не будет работать. Невозможно обмануть /system/xbin/su, чтобы обычный пользователь (в моем случае UID 10018) стал root.
Обратите внимание, что работа с программами с setuid может представлять угрозу безопасности (хотя и не выше, чем универсальная команда «su»). Используйте это решение на свой страх и риск.
person
eocanha
schedule
13.05.2011