Получите root-доступ через su в эмуляторе Android

#android #android-emulator

#Android #android-эмулятор

Вопрос:

Мне нужно получить root-доступ через su, чтобы загрузить двоичный файл TcpDump (я работаю над чем-то вроде Android-сниффера). Я использую этот код :

 try {
    Process process = Runtime.getRuntime().exec("su");
    DataOutputStream os = new DataOutputStream(process.getOutputStream());
    os = new DataOutputStream(process.getOutputStream());
    os.writeBytes("/data/local/tcpdump-arm -c 10 -s 0 -w /data/local/out.txtn");
    os.writeBytes("exitn");
    os.flush();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
  

Это отлично работает на рутированном телефоне, но я хочу добиться этого в эмуляторе.
По умолчанию вы не можете получить root-права через su в эмуляторе (хотя это возможно через adb shell).

Я нашел этот пост

Но у меня это не работает. Я где-то читал, что этот совет не будет работать с текущей версией sdk, но в нем не сказано, с какой она будет работать. Я пытаюсь использовать sdk версии 10, а avd запускать Android 2.1.

Ответ №1:

Хорошо, я решаю проблему самостоятельно :/

Это работает с версией sdk 10 и в avd 2.2. Проблема с подсказкой, которой я следовал ранее, заключается в повторном монтаже. Вот список команд, работающих у меня (выдержка из http://forum.xda-developers.com/showthread.php?t=821742 ) :

 adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock03 /system
adb push su /system/xbin/su
adb shell chmod 06755 /system
adb shell chmod 06755 /system/xbin/su
adb install superuser.apk
  

Вы можете получить двоичный файл su и приложение для суперпользователя здесь:http://forum.xda-developers.com/showthread.php?t=682828

Вы должны делать это при каждом запуске эмулятора.

Ответ №2:

Я смог заставить superuser.apk оставаться между перезагрузками, удалив /system/app/SdkSetup.apk

Я только что проверил еще раз, и он был воссоздан, но у меня все еще есть Superuser.apk между моими перезагрузками.

Я бы также рекомендовал использовать двоичный файл busybox вместе с su.

Ответ №3:

Обратите внимание, что шаги из a.b.d также работали для эмулятора AVD с OS 2.3.3 Gingerbread. Я скачал su-2.3.6.1-signed.zip по предоставленной ссылке.

Кроме того, я создал файл .bat, содержащий команды, предоставленные a.b.d для мгновенного выполнения.