Introduction à cette section
« Décompiler un APK » peut sembler être quelque chose de très haut de gamme, mais ce n'est en fait pas le cas. Cela consiste simplement à utiliser un certain logiciel de décompilation pour décompiler notre APK, afin d'obtenir des fichiers tels que le code source du programme, des images, des ressources XML, etc. Je me demande si vous avez déjà fait ceci : vous voyez l'interface d'une APP d'une autre personne magnifiquement conçue, ou vous aimez les ressources d'images de quelqu'un d'autre. La méthode simple consiste à télécharger l'APK de quelqu'un d'autre, changer son extension en xxx.zip, puis le décompresser. L'auteur a décompressé un APK au hasard :

Nous pouvons ouvrir le répertoire res pour obtenir les ressources d'images qu'il contient.

Cependant, avec cette méthode, vous ne pouvez obtenir que des ressources de fichiers bitmap telles que .png ou .jpg. S'il s'agit d'une ressource de type XML, vous constaterez qu'elle est illisible à l'ouverture. Et si nous voulons voir le code Java du programme APK, cela ne fonctionnera pas non plus, car tout est empaqueté dans le fichier classes.dex ! Mais la décompilation peut répondre à vos besoins~ De plus, n'utilisez jamais la décompilation pour des choses illégales, comme rempaqueter l'APK de quelqu'un d'autre, le signer avec votre propre signature, puis le publier sur les magasins d'applications concernés... Aussi, nous nous inspirons du code des autres, nous ne le copions pas complètement !!! Rappelez-vous !!
1. Trois outils à préparer
- apktool:Obtenir des fichiers de ressources, extraire des fichiers image, des fichiers de mise en page et certains fichiers de ressources XML.
- dex2jar:Décompiler l'APK en code source Java (convertir classes.dex en fichier jar)
- jd-gui:Afficher le fichier jar converti à l'étape 2, c'est-à-dire afficher les fichiers Java. Pour la commodité des lecteurs, ici les trois outils sont empaquetés ensemble et placés dans un espace de stockage en ligne. Si nécessaire, vous pouvez les télécharger :Decompilation-related three tools.zip
2. Utiliser apktool pour décompiler l'APK afin d'obtenir des images et des ressources XML :
Après avoir extrait l'apktool téléchargé, nous pouvons voir les fichiers suivants (ignorez ces deux éléments csdn ; l'un est l'APK décompilé, l'autre est les fichiers de sortie décompilés) :
Ensuite, double-cliquez sur cmd.exe pour ouvrir la ligne de commande, et tapez :apktool.bat d csdn.apkPuis appuyez simplement sur Entrée :
Ensuite, vous pouvez voir le dossier csdn généré, qui contient les ressources que nous voulons.
Très bien, donc les ressources XML sont en main, n'est-ce pas ! Les ressources d'images sont aussi en main !
3. Utiliser dex2jar pour convertir classes.dex en fichier jar :
Extrayez le dossier dex2jar téléchargé, et copiez le classes.dex de l'APK décompressé dans le répertoire où se trouve dex2jar.bat :
Ouvrez cmd, rendez-vous dans ce répertoire, puis saisissez :d2j-dex2jar.bat classes.dex
Ensuite, nous pouvons voir qu'un paquet jar a été généré :
Bien, la conversion est terminée !
4. Utilisation de jd-gui pour consulter le code Java dans le paquet jar :
Bien, ouvrez le dossier jd-gui
Après l'avoir ouvert, ouvrez le paquet jar converti à l'étape 3, et nous pouvons voir le code à l'intérieur :
Le client csdn n'obfusque en fait pas son code... Peut-être est-ce dans l'esprit de l'open source, nous permettant d'apprendre à partir du code ! En général, les versions APK sont obfusquées, puis un certain chiffrement est appliqué, ou une plateforme de chiffrement tierce est utilisée. Une des plus couramment utilisées est « loveencryption » (iJiami). Si cela vous intéresse, vous pouvez rechercher sur Baidu pour obtenir des informations plus détaillées !
Résumé de cette section
Bien, voilà qui conclut l'introduction à la décompilation d'APK. Je pense que vous avez déjà hâte d'essayer, alors lancez-vous et essayez. Un dernier rappel : ne faites pas de mauvaises choses ! Respectez le fruit du travail des autres ! De plus, ceci conclut le premier grand chapitre sur la configuration de l'environnement et quelques astuces de développement courantes. À partir de la section suivante, nous passerons au deuxième chapitre de cette série de tutoriels : apprendre les contrôles d'interface utilisateur courants dans Android ! Comme il y a pas mal de contrôles de base associés, estimés à des dizaines, apprendre des contrôles en permanence pourrait ne pas être intéressant. Peut-être que je rédigerai les tutoriels en parallèle, en apprenant un contrôle + un peu d'autres points de connaissance chaque jour. Je dois y réfléchir. Restez à l'écoute~ Merci~
Ensuite, double-cliquez sur cmd.exe pour ouvrir la ligne de commande, et tapez :apktool.bat d csdn.apkPuis appuyez simplement sur Entrée :


Très bien, donc les ressources XML sont en main, n'est-ce pas ! Les ressources d'images sont aussi en main !

Bien, la conversion est terminée !
Le client csdn n'obfusque en fait pas son code... Peut-être est-ce dans l'esprit de l'open source, nous permettant d'apprendre à partir du code ! En général, les versions APK sont obfusquées, puis un certain chiffrement est appliqué, ou une plateforme de chiffrement tierce est utilisée. Une des plus couramment utilisées est « loveencryption » (iJiami). Si cela vous intéresse, vous pouvez rechercher sur Baidu pour obtenir des informations plus détaillées !