Root auf dem Android Emulator

  • Hallo meine lieben :)


    Vorweg, ich hab keinen zugriff auf den quellcode der app die ich teste.
    Es handelt sich dabei um die AR.Freeflight app von parrot.


    ich möchte auf dem Android emulator wifi simulieren, das ist nötig mit ich eine app nutzen kann, die ohne wifi nicht geht.
    Die app prüft nur ob wifi da ist, ich vermute sie wird auch mit dem normalen internet funktionieren und nur checken ob das wifi an ist.


    Dafür nutze ich das Xposed Framework und eine App namens FakeWifiConnection.
    Nun braucht das Xposed Framework aber Rootrechte und die muss ich nun in meinem Emulator erlangen.


    Es gibt haufenweise anleitungen im Web, wie man einen Emulator rootet. Leider funktionieren diese nur bis Android 2.3.3 und da funktioniert wiederum diese App die ich testen will nicht. Also nehm ich eine AVD mit Android 4.3.1 und installiere alle benötigten Apps. Dann rufe ich "adb remount" auf und schiebe mit push, su als "su" und nochmal als "daemonsu" in das system/xbin/ verzeichnis und gebe /system und /system/xbin/su bzw. /daemonsu dann 06755 chmod rechte. Anschließend installiere ich noch SuperSu für die verwaltung und teste dann ob ich root rechte habe. Xposed meint zumindest das es keine rootrechte bekommen kann. Es geht auch keine activity auf die fragt, ob ich der app rechte geben will. Also reboote ich, aber auch das ändert nichts. Nach dem reboot das selbe Spiel wieder.


    Nun steh ich ein bisschen auf dem Schlauch, weil ich nicht weiter weiß. Ich brauch dieses fakewifi unbedingt, und nebenbei einem emulator mal root verpassen wäre auch nicht schlecht. Hat von euch jemand eine Idee wie man das noch realisieren könnte?


    LG.


    Edit:
    Es gibt eine weitere Variante wie ich die App testen kann.
    Ich habe ein x86 Android in VMwarePlayer aufgesetzt und Rootrechte vergeben. Dort hat alles wunderbar funktioniert, Xposed funktioniert wunderbar, alle Apps die ich will bekommen root. Natürlich wärs zu einfach, wenn es einfach gehen würde....
    Denn in der Android X86 Umgebung bekomme ich bei Freeflight aufeinmal ständig einen unstatisfiedLinkError.
    Dann steht dort das /data/app-lib/libswscale.so nicht gefunden werden konnte. Über das Terminal hab ich nachgeschaut, die shared objects sind in dem ordner. Also denke ich das AndroidX86 diese nicht nutzen kann. Aber die anderen arm apps funktionieren doch auch, wieso kann der arm emulator keine arm natives laden :(?

  • Warum testest Du das Ding nicht auf einem Device?


    Im Übrigen steht x86 meines Wissens eben nicht für ARM, sondern für INTEL.
    AndroidX86 emuliert also ein Gerät mit Intel Atom Prozessor, auf dem die .so für ARMv7(s) natürlich so nicht gefunden werden kann.


    Es scheint sich bei AR Freeflight um eine Art Fernsteuerung für einen Quadrocopter oder ähnliches Gerät zu handeln – da wird WiFi auf jeden Fall notwendig sein und nur eine Verbindung mit dem Internet nicht ausreichen.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • weil ich dann die pakete nicht mit wireshark capturen kann.


    Das ist schon klar, arm ist eine komplett andere cpu architektur, aber intel hat einen arm emulator der arm apps auf x86 ausführen kann.
    Bei den normalen Apps klappt das ohne problem, aber wenn natives im spiel sind, die für die app benötigt werden, wirds kompliziert.


    es geht darum, dass ich an meinem laptop eine verbindung zu der drohne aufbaue, diese über das mobile internet des emulators erreichbar ist, aber die app ein wlan voraussetzt. ich möchte praktisch die pakete mit wireshark capturen die die app vom emulator an die drohne sendet.

  • Natives geht genau so gut wie Java. Der Ersteller des Programms muss nur dafür sorgen, dass seine nativen Sourcen auch für die anderen Prozessoren gebaut werden.
    Insofern wäre der für Dich einfachste Schritt wohl Parrot darauf hinzuweisen, dass ihre App auf Intel Atom nicht läuft und um einen Patch zu bitten.
    Dann kannst Du das Ganze nämlich simpel auf der x86 VM nutzen und bist alle Probleme los. :)


    Ansonsten macht Wireshark ja jetzt keinen Voodoo. Das kann auch das Gerät mitschneiden.
    Ist Dein Phone gerootet, dann kannst Du via tcpdump arbeiten.
    Wenn nicht, gibt es Android PCAP oder tPacketCapture.


    Im Zweifel kannst Du auch Deinen PC als WLAN Access Point einrichten und dort dann fröhlich alles über Wireshark mitschneiden.
    (Ich weiß, dass wir in einer Zeit leben, in der man glaubt, WLAN sei Voodoo und müsse vom Anbieter freigeschaltet werden – isses aber nicht.)


    Weitere Infos dazu liefert Dir StackOverflow:
    http://stackoverflow.com/quest…hone-traffic-on-wireshark

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Marcooo ich bin doch nich auf der Buttermilch hergeschwommen ;)
    Natürlich geht es wenn parrot für die app x86 shares objects mitliefert, das tun sie aber noch nicht.
    Bei Parrot anfragen hab ich versucht, finde mal ne email adresse, überall muss man seine telefonnummer oder adresse mit angeben, um mit dem support sprechen zu dürfen, nein danke.
    Ne direkte Support mail gibts nicht, hab schon ausgibig gesucht. Selbst wenn, würde das sicher etwas länger dauern, bis dahin is mein Projekt vorbei.


    Ich könnte auch tcpdump nutzen, aber hätte gern wireshark weil da gibts extra features für die parrot drohne.


    Und die Kommunikation über meinen Laptop laufen lassen hab ich schon probiert, die App erkennt dann die Drohnen nicht. Sie denkt die Drohnen sind nicht aktiv, was aber nicht der Fall ist. Das war gleich das erste was ich getestet habe, da das aber nicht funktioniert hat, bin ich auf den Emulator geswitcht. Nun muss nur die App noch laufen, die crasht halt gleich initial wenn man sie startet.


    Es gibt da einen emulator der arm auf x86 emuliert, der nennt sich libhoudini. Hab alle anleitungen befolgt zum installieren auf der VM, aber leider funktioniert das noch nicht. Ich vermute mal das waren veraltete shared objects die ich da in dem tutorial fand. Leider stand nämlich nicht dazu für welche arm architektur das ist, nur arm oder auch armv7, denn für JellyBean wird vermutlich was für armv7 benötigt.

  • Sorry für den Doppelpost aber Thema hat sich erledigt.


    Nach langem Try and Error, hab ich es geschafft die Datenpakete mit Wireshark abzufangen.
    Ich hab nun kein aktuelles android x86 genommen sondern die Version 4.3. Diese hab ich mit etwas Glück gerootet bekommen und die Apps installiert um wifi zu simulieren. Noch ein wenig Try and Error mit der Netzwerk konfig (fragt mich nich wie es am ende geklappt hat, aber es ging halt) und die App hat Daten an die Drohne gesendet. Leider ist die AR.Freeflight app dann abgestürzt, vermutlich wegen irgendwelcher Video natives die trotzallem nicht gingen.


    Thx für die Tipps marco, nun kenn ich für die Zukunft noch paar Android apps die packages capturen können :)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!