Décompilez l'APK pour obtenir du code et des ressources


Introduction à cette rubrique

"Decompile Apk" semble être très haut de gamme, mais en fait ce n'est pas le cas. Il utilise simplement un logiciel de décompilation pour décompiler notre APK afin d'obtenir le code source, les images, les ressources XML et autres fichiers du programme dont je dispose ; Je ne sais pas Avez-vous déjà fait cela auparavant ? Vous voyez que l'interface de l'application de quelqu'un d'autre est très belle, ou vous aimez le matériel photo de quelqu'un d'autre, nous pouvons télécharger l'APK de quelqu'un d'autre, puis changer le nom du suffixe en xxx zip. , puis décompressez : L'auteur a décompressé un APK au hasard :

Nous pouvons ouvrir le répertoire res et y récupérer les images.

Cependant, cette méthode n'obtiendra que certaines ressources de fichiers bitmap telles que .png ou .jpg. S'il s'agit d'une ressource XML, nous constaterons qu'elle est tronquée lorsque nous l'ouvrirons. Et si nous voulons voir le code Java de l'APK. programme, cela ne fonctionne pas non plus, car ils sont tous regroupés dans le fichier classes.dex ! Mais la décompilation peut résoudre vos besoins ~ De plus, n'utilisez pas la décompilation pour faire des choses illégales, comme reconditionner les APK d'autres personnes avec votre propre signature, puis les publier sur le marché concerné... De plus, nous nous référons au code d'autres personnes , plutôt qu'une copie complète ! ! ! Souviens-toi! !

1. Trois outils pour se préparer

  1. apktool : Obtenir des fichiers de ressources, extraire des fichiers image, des fichiers de mise en page et certains fichiers de ressources XML

  2. dex2jar : Décompiler l'APK en code source Java (convertir classes.dex en fichier jar)

  3. jd-gui : Afficher le fichier jar converti en 2, c'est-à-dire afficher le fichier Java Pour la commodité des lecteurs, voici trois packages réunis et mettez-les sur le disque cloud. Vous pouvez les télécharger si nécessaire : Trois outils liés à decompilation.zip.


2. Utilisez apktool pour décompiler l'APK afin d'obtenir des images et des ressources XML :

Après avoir décompressé l'apktool téléchargé, nous pouvons voir les fichiers suivants (ignorez les deux csdn, l'un est l'apk décompilé et l'autre est le fichier décompilé) :


Ensuite, double-cliquez sur cmd.exe, accédez à la ligne de commande, tapez : apktool.bat d csdn.apk et appuyez sur Entrée :

Ensuite, vous pouvez voir le dossier csdn généré, qui contient les ressources souhaitées.


D'accord, vous disposez maintenant de la ressource XML, n'est-ce pas ? Le matériel photo est également disponible !


3. Utilisez dex2jar pour convertir classes.dex en fichier jar :

Décompressez le dossier dex2jar téléchargé et copiez le fichiers classes.dex dans l'apk dans le répertoire où se trouve dex2jar.bat :

Ouvrez cmd et allez dans ce répertoire : tapez : d2j-dex2jar.bat classes.dex

Nous pouvons alors voir qu'un package jar est généré :

D'accord, conversion terminée !


4. Utilisez jd-gui pour afficher le code Java dans le package jar :

OK, ouvrez le dossier jd-gui

Après ouverture, ouvrez le package jar converti dans notre 3, nous pouvons voir le code à l'intérieur :

Le client csdn ne masque pas le code... c'est peut-être dans l'esprit de l'open source, apprenons le code ! De manière générale, la version apk sera Obscurcissez, puis effectuez un cryptage, ou utilisez une plate-forme de cryptage tierce, le « Love Encryption » le plus couramment utilisé. Si vous êtes intéressé, vous pouvez également consulter Baidu pour une introduction plus détaillée !


Résumé de cette section

D'accord, c'est tout pour introduire la décompilation d'APK. Je pense que vous vous préparez déjà et que vous voulez l'essayer. Alors essayez-le. Un dernier rappel, ne faites pas de mauvaises choses ! Respectez les fruits du travail des autres ! De plus, c'est tout pour le premier chapitre sur la construction de l'environnement et certaines techniques de développement courantes. À partir de la section suivante, nous commencerons le deuxième chapitre de cette série de didacticiels : l'apprentissage des contrôles courants de l'interface utilisateur sous Android ! Parce qu'il existe de nombreux contrôles de base associés, il y en a probablement des dizaines. Si vous continuez à apprendre les contrôles, cela peut ne pas être intéressant. Vous pouvez écrire des tutoriels en parallèle, en apprenant un contrôle chaque jour + quelques autres points de connaissances. je trouverai des idées, alors restez à l'écoute~Merci~