Kann ich eine APK-Datei einer installierten App erhalten?

9

Ich habe die APK-Datei meiner Apps auf einem Qualcomm-Gerät bereitgestellt. Aufgrund meines Peches wurde mein Laptop, auf dem diese App entwickelt wurde, gestohlen. Also habe ich meinen App-Code nicht dabei. Allerdings habe ich das Gerät, auf dem ich zuvor meine App installiert hatte.

Meine Frage ist also, kann ich meine Apps .apk-Datei von diesem Gerät erhalten? Wenn ja, dann sag mir bitte, wie ich das bekomme.

Jede Hilfe ist spürbar.

Danke, Gaurav

GamDroid
quelle

Antworten:

4

Wenn Sie den installierten Dateinamen des apk kennen (der auf einigen Geräten myapp-1.apk oder myapp-2.apk sein kann und nicht nur myapp.apk), können Sie als normaler Benutzer direkt darauf zugreifen, einschließlich desjenigen, unter dem adb ausgeführt wird auf einem gesicherten Gerät, so sollten Sie in der Lage sein, es adb ziehen. Wenn Sie den installierten apk-Namen nicht kennen , können Sie das Verzeichnis / data / app nicht durchsuchen, ohne root oder aid_system zu sein.

Es könnte sich lohnen, nur den installierten Namen zu erraten - probieren Sie es einfach aus, versuchen Sie es mit dem -1.apk und dem -2.apk usw.

Es kann einen anderen Weg geben: Ich glaube, dass das Folgende auf einem gesicherten Gerät funktioniert, aber im Moment kein Gerät vor mir hat, um es zu testen.

BEARBEITEN: Neue Idee zur Bestimmung des genauen APK-Dateinamens

1) adb pull /data/system/packages.xml

2) Durchsuchen Sie den CodePath-Eintrag Ihrer Anwendung

3) adb zieh das

BEARBEITEN: In Bezug auf die alte Idee unten entdeckte Matthew, dass die pro-Prozess-Dateien unter / proc zwar Leseberechtigung auf einem gesicherten Gerät haben, aber leer sind, wenn sie von einer anderen nicht privilegierten UID als der ihres Besitzers gelesen werden. Das wird also nicht funktionieren.


1) Bringen Sie Ihre App zum Laufen. Sie benötigen auch eine Maschine mit adb.

2) Typ

adb shell ps 

und suchen Sie nach der Zeile mit dem Namen Ihrer App:

app_1     11959 907   112984 27580 ffffffff afd0c5bc S com.clevername.myapp

3) Nehmen Sie die Nummer in der zweiten Spalte, die die Prozess-ID ist, und zeigen Sie die virtuelle Speicherzuordnung an. In diesem Fall würde ich eingeben

adb shell cat /proc/11959/maps

und suche nach einer Zeile, in der es seine eigene apk-Datei in den Speicher abgebildet hat

43e9c000-43ea3000 r--s 001f4000 b3:06 15393      /data/app/com.clevername.myapp-1.apk

4) Das ist der Dateiname, den Sie zum Adb Pull benötigen würden

adb pull /data/app/com.clevername.myapp-1.apk .

Die Prüfung der Verzeichnisberechtigungen in / proc legt nahe, dass dies für einen nicht privilegierten Benutzer funktionieren sollte. Ich entschuldige mich, wenn dies nicht der Fall ist. Wenn Sie mit der Verwendung von 'grep' vertraut sind, können Sie dies verwenden, um ein manuelles Scannen der Ausgabe zu vermeiden.

Nachtrag: Ich bin mir nicht sicher, wie die Geschichte der auf der SD-Karte installierten Apps aussieht.

Chris Stratton
quelle
Ich habe gerade mein sicheres Gerät ausprobiert. adb shell cat /proc/####/mapsgibt leider nichts zurück.
Matthew Read
@Matthew ... seltsam, ich simuliere den sicheren Fall und sehe, dass die meisten Dateien in proc keine Größe haben, aber lesbar sind. Vorher hatte ich nur überprüft, ob sie Leseberechtigungen gehabt hätten. Möglicherweise werden sie anstelle von Berechtigungen auf Null gesetzt, damit / proc-Lesetools keinen konstanten Strom von Zugriffsfehlern erhalten. Na ja ... das Erraten der installierten apk-Namensvariante ist vielleicht die beste.
Chris Stratton
Mein apk-Dateiname war verrückt und nicht zu erraten, aber die Verwendung von packages.xml hat dazu beigetragen, den richtigen Namen herauszufinden. :)
Paläozogt