J'essaie d'extraire le fichier APK d'une application Android installée SANS autorisations root.
Je pensais que cela était impossible, car tous les fichiers APK pour les applications non système se trouvent dans / data / app, et l'accès à ce dossier nécessite une autorisation root. Ensuite, j'ai constaté qu'il existe de nombreuses applications dans le Google Play Store qui semblent avoir accès aux fichiers APK même sur des appareils non rootés.
Quelqu'un peut-il me dire comment cela est possible? N'y a-t-il pas des applications de sauvegarde qui sauvegardent les fichiers APK sans root?
Réponses:
L'accès à / data / app est possible sans autorisation root; les autorisations sur ce répertoire sont rwxrwx - x. Exécuter l'autorisation sur un répertoire signifie que vous pouvez y accéder, mais l'absence d'autorisation de lecture signifie que vous ne pouvez pas obtenir une liste de son contenu - donc pour y accéder, vous devez connaître le nom du fichier auquel vous accéderez. Le gestionnaire de packages d'Android vous indiquera le nom de l'apk stocké pour un package donné.
Pour ce faire à partir de la ligne de commande, utilisez
adb shell pm list packages
pour obtenir la liste des packages installés et recherchez le package souhaité.Avec le nom du package, nous pouvons obtenir le nom de fichier réel et l'emplacement de l'APK en utilisant
adb shell pm path your-package-name
.Et connaissant le répertoire complet, nous pouvons enfin extraire l'adb en utilisant
adb pull full/directory/of/the.apk
Nous remercions @tarn d'avoir souligné que sous Lollipop, le chemin apk sera
/data/app/your-package-name-1/base.apk
la source
adb shell pm list packages
pour obtenir la liste des packages installés, choisissez le package souhaité, ajoutez-1.apk
-le et extrayez-le/data/app
. Exemple: si le nom du package estorg.mozilla.firefox
, utilisezadb pull /data/app/org.mozilla.firefox-1.apk
.adb: error: remote object '/data/app/com.Slack-1/base.apk' does not exist
Android ajoute un numéro de séquence au nom du package pour produire le nom de fichier APK final (il est possible que cela varie selon la version d'Android OS). La séquence de commandes suivante fonctionne sur un périphérique non rooté :
Obtenez le nom de chemin complet du fichier APK pour le package souhaité.
Cela donne la sortie comme:
package:/data/app/com.example.someapp-2.apk
.Tirez le fichier APK de l'appareil Android vers la boîte de développement.
L'emplacement de l'APK après une extraction réussie sera à ../sdk/platform-tools/base.apk sur votre PC / ordinateur portable.
la source
Vous n'avez pas besoin d'autorisations ROOT pour obtenir la liste des applications installées.
Vous pouvez le faire avec android PackageManager.
Vous trouverez ci-dessous un petit extrait de code.
la source
la source
Lorsque vous avez installé le développement Eclipse pour Android:
la source
Sur Nougat (7.0), la version Android s'exécute
adb shell pm list packages
pour répertorier les packages installés sur l'appareil. Ensuite, exécutezadb shell pm path your-package-name
pour montrer le chemin de l'apk. Après avoir utilisé adb pour copier le package dans Téléchargementsadb shell cp /data/app/com.test-1/base.apk /storage/emulated/0/Download
. Ensuite, tirez l'apk de Téléchargements sur votre machine en exécutantadb pull /storage/emulated/0/Download/base.apk
.la source
j'ai un
does not exist error
Voici comment je le fais fonctionner:
la source
Liste PackageManager.getInstalledApplications () vous donnera une liste des applications installées et ApplicationInfo.sourceDir est le chemin d'accès au fichier .apk.
la source
J'ai trouvé un moyen d'obtenir le nom du package de l'APK dans un appareil non root. ce n'est pas si élégant, mais ça marche tout le temps.
Étape 1 : sur votre appareil, ouvrez l'APK cible
Étape 2 : sur la fenêtre PC cmd, tapez ces commandes:
la sortie de cette commande étant nombreuse, la redirection vers un fichier est recommandée.
Étape 3 : ouvrez ce fichier dump.txt avec n'importe quel éditeur.
pour l'appareil avant Android 4.4:
le début du fichier ressemblerait à ceci:
le nom du package se trouve sur la 3ème ligne, com.tencent.mm pour cet exemple.
pour Android 4.4 et
versions ultérieures: la sortie de dumpsys a légèrement changé. essayez de rechercher "Stack # 1", le nom du paquet serait très proche en dessous.
Aussi, recherchez "baseDir", vous trouverez le chemin complet du fichier apk!
la source
Ouvrez ES explorer -> appuyez sur le bouton Menu dans le coin supérieur gauche (trois bandes horizontales) -> dans la section Bibliothèques, choisissez APP.
Ainsi, vous obtenez la liste de toutes les applications utilisateur. Trouvez votre application et sélectionnez-la en appuyant longuement dessus. Appuyez ensuite sur "Plus" dans le coin inférieur droit et choisissez "Envoyer". Ensuite, vous pouvez utiliser différentes options, par exemple, vous pouvez choisir "ES Save To" afin d'enregistrer le fichier .apk dans votre répertoire personnel ou ailleurs.
la source
Ou vous pouvez obtenir «Transfert de fichiers Bluetooth» depuis Google Play et définir le dossier de départ sur
/system/
. Ensuite, vous pouvez même aller à/
.la source