Ich versuche, die APK-Datei einer installierten Android-App OHNE Root-Berechtigungen zu extrahieren.
Ich dachte, dass dies unmöglich ist, da sich alle APK-Dateien für Nicht-System-Apps in / data / app befinden und für den Zugriff auf diesen Ordner die Root-Berechtigung erforderlich ist. Dann stellte ich fest, dass es im Google Play Store zahlreiche Apps gibt, die anscheinend auch auf nicht gerooteten Geräten Zugriff auf die APK-Dateien haben.
Kann mir jemand sagen, wie das möglich ist? Gibt es keine Backup-Apps, die die APK-Dateien ohne Root sichern?
Antworten:
Der Zugriff auf / data / app ist ohne Root-Berechtigung möglich. Die Berechtigungen für dieses Verzeichnis lauten rwxrwx - x. Wenn Sie die Berechtigung für ein Verzeichnis ausführen, können Sie darauf zugreifen. Wenn Sie jedoch keine Leseberechtigung haben, können Sie keine Auflistung des Inhalts erhalten. Um darauf zugreifen zu können, müssen Sie den Namen der Datei kennen, auf die Sie zugreifen möchten. Der Paketmanager von Android teilt Ihnen den Namen der gespeicherten Apk für ein bestimmtes Paket mit.
Verwenden Sie
adb shell pm list packages
dazu die Befehlszeile, um die Liste der installierten Pakete abzurufen und das gewünschte Paket zu finden.Mit dem Paketnamen können wir den tatsächlichen Dateinamen und den Speicherort der APK mithilfe von ermitteln
adb shell pm path your-package-name
.Und wenn wir das vollständige Verzeichnis kennen, können wir endlich die ADB mit ziehen
adb pull full/directory/of/the.apk
Dank an @tarn für den Hinweis, dass unter Lollipop der apk-Pfad lautet
/data/app/your-package-name-1/base.apk
quelle
adb shell pm list packages
in der Befehlszeile die Liste der installierten Pakete, wählen Sie das gewünschte Paket aus, hängen Sie-1.apk
es an und ziehen Sie es ab/data/app
. Beispiel: Wenn der Paketname lautetorg.mozilla.firefox
, verwenden Sieadb pull /data/app/org.mozilla.firefox-1.apk
.adb: error: remote object '/data/app/com.Slack-1/base.apk' does not exist
Android hängt eine Sequenznummer an den Paketnamen an, um den endgültigen APK-Dateinamen zu erstellen (dies hängt möglicherweise von der Version des Android-Betriebssystems ab). Die folgende Befehlsfolge funktioniert auf einem nicht gerooteten Gerät :
Rufen Sie den vollständigen Pfadnamen der APK-Datei für das gewünschte Paket ab.
Dies ergibt die Ausgabe als :
package:/data/app/com.example.someapp-2.apk
.Ziehen Sie die APK-Datei vom Android-Gerät in die Entwicklungsbox.
Der Speicherort von APK nach erfolgreichem Ziehen befindet sich unter ../sdk/platform-tools/base.apk auf Ihrem PC / Laptop.
quelle
Sie benötigen keine ROOT-Berechtigungen, um die Liste der installierten Apps abzurufen.
Sie können es mit Android PackageManager tun.
Unten finden Sie einen kleinen Code-Ausschnitt.
quelle
quelle
Wenn Sie die Entwicklung von Eclipse für Android installiert haben:
quelle
Unter Nougat (7.0) wird die Android-Version ausgeführt,
adb shell pm list packages
um die auf dem Gerät installierten Pakete aufzulisten. Dann renneadb shell pm path your-package-name
, um den Pfad der apk zu zeigen. Nach der Verwendung von adb kopieren Sie das Paket in Downloadsadb shell cp /data/app/com.test-1/base.apk /storage/emulated/0/Download
. Dann ziehen Sie die apk von Downloads auf Ihren Computer, indem Sie ausführenadb pull /storage/emulated/0/Download/base.apk
.quelle
Ich bekam ein
does not exist error
So mache ich es:
quelle
List PackageManager.getInstalledApplications () gibt Ihnen eine Liste der installierten Anwendungen, und ApplicationInfo.sourceDir ist der Pfad zur APK-Datei.
quelle
Ich habe einen Weg gefunden, den Paketnamen des APK auf einem Nicht-Root-Gerät abzurufen. es ist nicht so elegant, funktioniert aber die ganze Zeit.
Schritt 1 : Öffnen Sie auf Ihrem Gerät die Ziel-APK
Schritt 2 : Geben Sie im PC-Cmd-Fenster die folgenden Befehle ein:
Da die Ausgabe dieses Befehls zahlreich ist, wird empfohlen, in eine Datei umzuleiten.
Schritt 3 : Öffnen Sie diese dump.txt-Datei mit einem beliebigen Editor.
für Gerät vor Android 4.4:
Der Anfang der Datei würde folgendermaßen aussehen:
Der Paketname steht in der 3. Zeile, com.tencent.mm für dieses Beispiel.
für Android 4.4 und höher:
Die Ausgabe von dumpsys hat sich ein wenig geändert. Versuchen Sie, nach "Stapel Nr. 1" zu suchen. Der Paketname befindet sich sehr nahe darunter.
Suchen Sie auch nach "baseDir", Sie finden den vollständigen Pfad der apk-Datei!
quelle
Öffnen Sie den ES Explorer -> drücken Sie die Menütaste in der linken oberen Ecke (drei horizontale Streifen) -> wählen Sie im Abschnitt Bibliotheken die Option APPs.
So erhalten Sie die Liste aller Benutzer-Apps. Finden Sie Ihre App und wählen Sie sie mit langem Drücken aus. Drücken Sie dann "Mehr" in der rechten unteren Ecke und wählen Sie "Senden". Dann können Sie verschiedene Optionen verwenden, z. B. können Sie "ES Save To" wählen, um die APK-Datei in Ihrem Home-Verzeichnis oder an einem anderen Ort zu speichern.
quelle
Oder Sie können "Bluetooth File Transfer" von Google Play abrufen und den Home-Ordner auf einstellen
/system/
. Dann können Sie sogar gehen/
.quelle