Also, heute habe ich mein Android-Tablet gerootet, und bei der Gelegenheit habe ich auch versucht herauszufinden, was das eigentlich bedeutet.
Ich habe also ein Script heruntergeladen, das auf einem Computer ausgeführt wird, und das über USB angeschlossene Tablett rooten soll – was auch geklappt hat. Aber was hat es eigentlich gemacht?
./adb shell "mkdir -p /data/local/tmp" ./adb push tools /data/local/tmp ./adb shell "chmod 0755 /data/local/tmp/mempodroid" ./adb shell "sh /data/local/tmp/runit.sh"
Es greift also per ADB auf das Tablett zu (ADB kommt von Google und dient dazu, Android-Software zu entwickeln und zu debuggen. Es funktioniert nur, wenn man in den Einstellungen des Tabletts die Option „USB debugging“ einschaltet) und kopiert ein paar Dateien auf das Tablett nach /data/local/tmp. Eine der Dateien ist das Programm mempodroid, das es dann auch als ausführbares Programm markiert.
Dann führt es das Script runit.sh auf dem Tablet aus. das enthält nur eine Zeile:
/data/local/tmp/mempodroid 0xd9f0 0xaf47 sh /data/local/tmp/getroot.sh
Mempodroid ist der eigentliche Exploit, das einen Fehler im Linux-Kerner 2.6.39 ausnutzt. Wie es das macht, ist hier ziemlich genau beschrieben. Am Ende kann memprodroid einen Befehl mit root-Rechten ausführen, und in diesem Fall ist das das Script getroot.sh.
Getroot.sh macht ungefähr folgendes:
toolbox mount -o remount, rw /system/ cat su >/system/bin/su chmod 06755 /system/bin/su cat busybox >/system/sbin/bb/busybox cat mount.sh >/system/sbin/mount chmod 755 /system/sbin/bb/busybox /system/sbin/mount /system/xbin/busybox --install -s /system/xbin
Es macht die /system-partition beschreibbar und installiert su und busybox. su hat root-Rechte (chmod 06755) und kann die daher auch weitergeben.
Der nächste Schritt ist, Superuser.apk aus dem Google Play Store zu installieren. Superuser ist das Frontend für su. Wenn ein Programm root-Rechte haben will, ruft es su auf, und su fragt Superuser ob das Programm sie bekommen soll oder nicht.