Es gibt zahlreiche Programme, um Android auf dem Computer auszuführen. Ein Beispiel sei da Blue Stacks. Allerdings sind diese Programme meist für Gaming ausgelegt, geben nicht so wirklich auf den ersten Blick preis, welche Android-Version da eigentlich vor sich hin werkelt und was daran modifiziert wurde und vor allem: Funktionieren sie bei mir nicht (sofern ein leeres Fenster nicht beabsichtigt ist).
Grund, sich mal darüber Gedanken zu machen, ob es solche Programme überhaupt braucht. Denn eigentlich gibt's ja mit Virtual Box eine gratis erhältliche Virtualisierungs-Lösung mit der man sogar Android virtualisiert auf dem Computer laufen lassen kann.
Wir brauchen...
Virtual Box und ein Android-Image von android-x86.Die aktuellste Version, die ich hier organisieren konnte war android-x86_64-9.0-r2 (Aufschrei: "zu alt!" – "unsicher!". Ist mir Schnurzpipegal) VirtualBox starten und mit "Neu" eine neue virtuelle Maschine anlegen.
Folgende Screenshots und Beschreibungen beziehen sich hierbei auf den "Geführten Modus" und nicht auf den "Experten Modus" (lässt sich über den Button links unten umschalten).
"Typ" sollte Linux sein und "Version" sollte Other Linux (64-bit) sein (sofern das 64bit-Image von android-x86.org heruntergeladen wurde, ansonsten 32bit). Name kann beliebig sein.
Das Fenster kann mit einem Klick auf "OK" geschlossen und die virtuelle Maschine mit einem Klick auf "Starten" gestartet werden.
Mit den Cursor-Tasten "Advanced" auswählen und mit Return bestätigen.
Danach dürfte es ein paar Minuten gehen, bis Android in der virtuellen Maschine installiert wurde.
Um sicher zu gehen oder bei Problemen "Alle WLANs anzeigen" auswählen...
Damit sollte die Netzerkverbindung auf jeden Fall klappen.
Tipps
- Beim Einrichtungsassistenten konnte ich ums Verrecken kein @ eingeben, um mein Google-Konto einzurichten.
Hier hatte es geholfen, auf die US-Tastatur umzustellen und dann das @ mit der Tastenkombination Shift-2 einzugeben.
- Mit der Tastenkombination alt-F1 und alt-F7 lässt sich zwischen Kommandozeile und Android-UI hin und her schalten.
- IP-Adresse des Android-Systems in Erfahrung bringen:
Mit alt-F1 zur Console wechseln, ifconfig eingeben und nachher wieder mit alt-F7 zurück ins Android-UI wechseln.
- Android neustarten oder herunterfahren:
Einfach das Fenster der virtuellen Maschine schließen. Im darauffolgenden Dialog auswählen, dass das Shutdown-Signal gesendet werden soll. Darauf erscheint der von Android bekannte Herunterfahren/Neustart-Dialog im Fenster der virtuellen Maschine
- Das installierte Android ist übrigens gerootet!
Magisk
Da das installierte Android gerootet ist, wollte ich Magisk installieren, um den Root-Status vor einigen Programmen zu verstecken und den SafetyNet-Test zu bestehen.Kleiner Spoiler: Magisk konnte ich installieren, aber das mit dem Root-Hide und SafetyNet hatte bei mir nicht funktioniert.
Wer sich trotzdem dafür interessiert, wie man Magisk installiert:
Vorab
Entweder Virtuelle Maschine klonen oder einen Sicherungspunkt erstellen. Falls etwas schief geht, hat man so immerhin schnell wieder die frühere, funktionierende Version in petto.Methode 1
MagiskOnEmulator Ein paar Skripte, die alles Notwendige mit wenigen Eingaben auf der Kommandozeile erledigen.Hatte bei mir nicht funktioniert.
Android bekam beim Neustart eine Kernel Panic.
Mag daran liegen, dass diese Skripte das letzte Mal mit Android 8 getestet wurden.
Methode 2
Frei nach dieser Seite.Wir benötigen:
- Auf dem Computer die Android Platform tools / ADB Tools (Download für Mac)
- Magisk (Download hier)
- Ein Linux-System. Ich habe in VirtualBox auch eine virtuelle Ubuntu Maschine und jene benutzt
- Um einiges mehr Zeit als bei Methode 1
Konventionen:
- "Der Computer"/"Der Host" ist bei mir der Host, auf dem VirtualBox läuft und von welchem aus ich auch per Kommandozeile auf die virtuelle Android-Maschine und die virtuelle Ubuntu-Maschine zugreife
- Die virtuelle Android-Maschine hat im Folgenden beispielhaft die IP 192.168.178.99
- Die virtuelle Ubuntu-Maschine hat im Folgenden beispielhaft die IP 192.168.178.98
- Eigentlich kann man auch gleich auf dem virtuellen Linux-System die Android Platform tools installieren und spart sich das Datei-Rumgeschiebe zwischen Host und Linux-System. Oder das Host-System ist sowieso ein Linux-System, dann kann man sich den Schritt ebenso sparen. Im Folgenden greife ich ausschließlich von meinem Host-Mac auf Android zu und verwurschtel den Kernel auf dem virtuellen Linux.
1. Aktuellen kernel und ramdisk aus Android holen
Am Host auf der Kommandozeile eine adb-Verbindung herstellen (installierte Android Platform tools vorsusgesetzt; IP:Port können abweichen), dann die System-Partition von Android mounten und die benötigten Dateien zum Host-System holen
adb connect 192.168.3.99:5555
# System mounten
adb -e shell "mkdir /data/local/tmp/root"
adb -e shell "su -c 'mount /dev/block/sda1 /data/local/tmp/root'"
# Die gesuchten Dateien sollten sich in /data/local/tmp/root/android-9.0-r2 befinden
# (Bei neueren Android x86 Versionen wird der Verzeichnisname abweichen)
# Mit einem ls mal einen Blick in das Verzeichnis werfen, ob kernel
# und ramdisk.img auch tatsächlich dort sind
adb -e shell "ls /data/local/tmp/root/android-9.0-r2"
#Ausgabe optimalerweise:
#data
#initrd.img
#kernel
#ramdisk.img
#system.sfs
# Nun die Dateien auf den Host holen.
adb pull /data/local/tmp/root/android-9.0-r2/kernel ~/
adb pull /data/local/tmp/root/android-9.0-r2/ramdisk.img ~/
# Von hier aus schiebe ich die Daten noch eines weiter
# auf die virtuelle Ubuntu-Maschine
scp kernel ubuntuuser@192.168.178.98:~
scp ramdisk.img ubuntuuser@192.168.178.98:~
2. Auf dem Linux-System erstellen wir aus kernel und ramdisk eine boot.img
Nun sind wir auf der Kommandozeile des Linux-Systems:
sudo apt install android-tools-mkbootimg abootimg
# kernel + ramdisk.img => boot.img
mkbootimg --kernel kernel --ramdisk ramdisk.img --output boot.img
# Zurück damit zum Host
scp boot.img hostuser@192.168.178.100:~/
3. Erstelltes boot.img und Magisk auf Android-System schieben
Im Folgenden verwende ich den Dateinamen Magisk-v25.2.apk – das war zum Zeitpunkt dieses Artikels die Aktuellste Version, die man hier herunterladen konnte.
Auf dem Host:
adb -e push ~/boot.img /sdcard/Download
4. boot.img patchen
Dies können wir auf unserem virtuellen Android erledigen (alternativ auch auf einem Handy, auf welchem Magist installiert ist).
Dazu im virtuellen Android Magisk installieren, welches wir gerade eben in den Download-Ordner gepusht hatten. Sollte mit dem standard Dateimanager von Android auffindbar und installierbar sein.
Dann Magisk öffnen und auf "Installieren" tippen (was nicht wirklich etwas installiert).Das gepatchte boot.img befindet sich unter dem hier im Log angegebenen Dateinamen im Download-Verzeichnis
5. Gepatchte boot.img zurück zum Host holen...
# In meinem Fall heißt die gefundene Datei magisk_patched-25200_f5fiw.img
adb pull /sdcard/Download/magisk_patched-25200_f5fiw.img ~/
# Und dann gleich ab zum Linux-System damit!
scp magisk_patched-25200_f5fiw.img ubuntuuser@192.168.178.98:~
6. ...und auf dem Linux-System wieder in kernel+ramdisk "splitten"
# "zImage" in "kernel" umbenennen und "initrd.img" in "ramdisk.img" umbenennen
mv zImage kernel
mv initrd.img ramdisk.img
# Das Folgende dürftet ihr schon geahnt haben: Zurück zum Host damit!
# Vorher dort die alten beiden Dateien, die wir uns mal ursprünglich
# von Android geholt hatten, löschen, damit nichts durcheinander kommt!
scp kernel hostuser@192.168.178.100:~/
scp ramdisk.img hostuser@192.168.178.100:~/
7. Gepatchte Dateien auf das Android-System übertragen
Auf dem Host...
# Die benenne ich um. Man weiß ja nie...
adb -e shell "su root mv /data/local/tmp/root/android-9.0-r2/kernel /data/local/tmp/root/android-9.0-r2/kernel.old"
adb -e shell "su root mv /data/local/tmp/root/android-9.0-r2/ramdisk.img /data/local/tmp/root/android-9.0-r2/ramdisk.img.old"
# Nun die beiden neuen Dateien ins Download-Verzeichnis pushen
# Wegen Berechtigungsproblemen kann ich sie nicht direkt
# nach /data/local/tmp/root/android-9.0-r2/ pushen
adb -e push kernel /sdcard/Download
adb -e push ramdisk.img /sdcard/Download
# Nun an die letztendliche Position schieben
adb -e shell "su root mv /sdcard/Download/ramdisk.img /data/local/tmp/root/android-9.0-r2/ramdisk.img"
adb -e shell "su root mv /sdcard/Download/kernel /data/local/tmp/root/android-9.0-r2/kernel"
Allerdings stimmen die Datei-Berechtigungen noch nicht.
Mal alle Dateien mit ihren Berechtigungen auflisten lassen und man wird sehen, dass die Berechtigungen von kernel.old andere sind, als bei (dem neuen) kerneltotal 940792
drwxr-xr-x 3 root root 4096 2022-10-27 10:41 .
drwxr-xr-x 5 root root 4096 2022-10-25 20:14 ..
drwxrwx--x 37 system system 4096 2022-10-25 20:15 data
-rw-r--r-- 1 root root 1358743 2022-10-25 20:14 initrd.img
-rw-rw---- 1 root sdcard_rw 7511040 2022-10-27 10:41 kernel
-rw-r--r-- 1 root root 7511040 2022-10-25 20:14 kernel.old
-rw-rw---- 1 root sdcard_rw 2367433 2022-10-27 10:41 ramdisk.img
-rw-r--r-- 1 root root 1914143 2022-10-25 20:14 ramdisk.img.old
-rw-r--r-- 1 root root 942682112 2022-10-25 20:15 system.sfs
Das wollen wir noch ändern:
adb -e shell "su root chown root:root /data/local/tmp/root/android-9.0-r2/kernel"
adb -e shell "su root chmod 644 /data/local/tmp/root/android-9.0-r2/ramdisk.img"
adb -e shell "su root chmod 644 /data/local/tmp/root/android-9.0-r2/kernel"
Nun kann man Android neu starten und danach sollte Magisk aktiv sein.
Es empfiehlt sich, in den Magisk-Einstellungen Zygisk zu aktivieren.Danach kann man die "Verweigerungsliste" (die Programme, die root nicht sehen sollten) verwenden.
War bei mir allerdings nicht erfolgreich. Die Programme hatten den root trotzdem gesehen.
Außerdem kann ich keine Module installieren. Nach Installation und Neustart werden keine installierten Module angezeigt.
![]() ![]() ![]() ![]() |
|
Erstellt am: 27.10.2022 | .Kommentieren |