Puis-je obtenir le fichier .apk d'une application installée?

9

J'ai déployé mon fichier .apk d'applications sur un appareil Qualcomm. Maintenant, en raison de ma malchance, mon ordinateur portable sur lequel cette application a été développée a été volé. Je n'ai donc pas le code de mon application avec moi. Cependant, j'ai l'appareil sur lequel j'avais précédemment installé mon application.

Ma question est donc la suivante: puis-je obtenir le fichier .apk de mes applications à partir de cet appareil? si oui, alors dites-moi comment l'obtenir.

Toute aide est appréciable.

Merci, Gaurav

GamDroid
la source

Réponses:

4

Si vous connaissez le nom de fichier installé de l'apk (qui sur certains appareils peut être myapp-1.apk ou myapp-2.apk plutôt que simplement myapp.apk), vous pouvez y accéder directement en tant qu'utilisateur ordinaire, y compris celui qui s'exécute comme adb sur un appareil sécurisé, vous devriez donc pouvoir le tirer. Mais si vous ne connaissez pas le nom apk installé , vous ne pouvez pas parcourir le répertoire / data / app sans être root ou aid_system.

Il vaut peut-être la peine de deviner le nom installé - essayez-le simplement, essayez-le avec -1.apk et -2.apk, etc.

Il peut y avoir une autre façon: je pense que ce qui suit fonctionnera sur un appareil sécurisé mais je n'en ai pas en face de moi pour le tester.

EDIT: nouvelle idée pour déterminer le nom exact du fichier APK

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

2) Recherchez à travers elle l'entrée codePath de votre application

3) adb pull that

EDIT: En ce qui concerne l'ancienne idée ci-dessous, Matthew a découvert que même si les fichiers par processus sous / proc ont une autorisation de lecture sur un périphérique sécurisé, ils sont vides lorsqu'ils sont lus par un uid non privilégié autre que celui de leur propriétaire. Donc ça ne marchera pas.


1) Lancez votre application. Vous aurez également besoin d'une machine avec adb.

2) type

adb shell ps 

et recherchez la ligne avec le nom de votre application:

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

3) prenez le numéro dans la deuxième colonne qui est l'ID du processus, et affichez sa carte de mémoire virtuelle, dans ce cas, je taperais

adb shell cat /proc/11959/maps

et recherchez une ligne où il a mappé son propre fichier apk en mémoire

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

4) C'est le nom de fichier dont vous auriez besoin pour tirer

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

L'examen des autorisations de répertoire dans / proc suggère que cela devrait fonctionner pour un utilisateur non privilégié, mes excuses si ce n'est pas le cas. Si vous êtes familier avec l'utilisation de 'grep', vous pouvez l'utiliser pour éviter de scanner manuellement la sortie.

Addendum: je ne suis pas vraiment sûr de l'histoire des applications installées sur la carte SD.

Chris Stratton
la source
Je viens d'essayer sur mon appareil sécurisé; adb shell cat /proc/####/mapsne renvoie rien, malheureusement.
Matthew Read
@Matthew ... bizarre, je simule le boîtier sécurisé et je vois la plupart des fichiers dans proc ont une taille nulle, mais sont lisibles. Avant, j'avais seulement vérifié qu'ils auraient des autorisations de lecture. Peut-être que cela est fait en les annulant plutôt qu'en autorisations afin que les outils de lecture / proc n'obtiennent pas un flux constant d'erreurs d'accès. Eh bien ... deviner la variante du nom apk installé peut être le meilleur.
Chris Stratton
Mon nom de fichier apk était fou et impossible à deviner, mais l'utilisation de packages.xml a permis de déterminer le vrai nom. :)
paleozogt