[JAVA] [Version de préservation 2018] Application Android d'ingénierie inverse (.apk) sur Mac

Ceci est l'article sur le 24ème jour du "Calendrier de l'Avent de l'ingénieur athlétique 2017". Le 23ème jour était @ yuzu_afro "Faire un sapin de Noël brillant et sonore avec Raspberry Pi".

Pensez-vous que c'est Harenchi que vous souhaitez jeter un œil à l'intérieur de votre application?

Cette fois ** J'ai perdu le code source de l'application publiée sur Google Play **

Même si le monde flotte complètement dans l'atmosphère de Noël Nous sommes confrontés à une situation misérable sans assistance Domo est Nagao Demain est ** l'anniversaire du Christ ** C'est ** Reverse engineering de votre propre application ** (ci-après Rivaen) ** Festival de la résurrection de l'application **

Vous voulez faire trois choses, non?

[[1] Je veux voir le code source Java (Kotlin)](# 1 Je veux voir le code source javakotlin-1)

[[2] Je veux voir le code xml](je veux voir le code xml # 23 et le fichier image utilisé dans l'application)

[[3] Je veux voir le fichier image utilisé dans l'application](je veux voir le code de # 23xml et le fichier image utilisé dans l'application)

Tout d'abord, les préparatifs nécessaires quoi que vous fassiez ** Préparez l'apk que vous souhaitez réactiver ** Je partirai de

Obtenez le fichier apk de l'application que vous souhaitez réactiver à partir de votre smartphone

(Si vous avez déjà l'application que vous souhaitez réactiver en .apk, vous n'avez pas besoin de ce flux)

Il existe également un moyen de le faire avec une commande Il est ** rapide ** d'utiliser ** l'application d'extraction apk ** sur Google Play.

** Par exemple, une telle application ** https://play.google.com/store/apps/details?id=com.pandaz.apkextraction

Lorsque vous l'installez sur votre smartphone et le démarrez 1.png

Les applications sur votre smartphone sont alignées dans une rangée Vérifiez l'application que vous recherchez et appuyez sur ** Extraction apk ** Après cela, vous pouvez personnaliser ** apk ** en le téléversant sur Google Drive avec le bouton de partage.

Commençons par le simple

[2] [3] Je veux voir le code xml et le fichier image utilisés dans l'application

Grosso modo ** Vous pouvez voir les deux en lançant l'apk dans Android Studio ** est

Premier ** Placez l'apk ** que vous avez obtenu précédemment quelque part sur votre ** ordinateur ** à l'avance. Et Dans Android Studio ** Fichier → Nouveau → Nouveau projet ** Choisissez le nom du projet de manière appropriée et créez un projet avec Suivant → Suivant ... Avec le projet créé ouvert ** Construire → Analyser l'APK **

2.png

Une boîte de dialogue de sélection de fichier apparaîtra Sélectionnez l'apk que vous mettez sur votre ordinateur à l'avance Ensuite, cet écran s'ouvrira (cette fois j'utilise l'apk de l'application sample-app)

8.png

Facile à voir ** Cliquez une fois sur le fichier xml que vous souhaitez voir ** Puis

9.png

Le contenu de xml est affiché dans la partie inférieure ** Fichiers image ** Quelque chose est généralement dans le ** dessinable habituel ** Vous pouvez le voir en ** un seul clic **

** [2] et [3] sont terminés **

[1] Je veux voir le code source Java (Kotlin)

Il y a beaucoup plus à faire que [2] et [3]

1.Faites un fichier zip et décompressez-le

Changez simplement ** apk ** en ** zip ** Tout ce que vous avez à faire est de changer le ** nom de fichier ** de l'apk de ** XXX.apk ** à ** XXX.zip **

** Normalement, il est développé en double-cliquant simplement dessus ** ** Double-cliquez sur ce zip ** L'un après l'autre ** Il n'y a aucun signe que quelque chose comme un parent zip est né ** et s'est développé ... Face à une telle ** situation de fermeture éclair matriochka **

The Unarchiver https://itunes.apple.com/jp/app/the-unarchiver/id425424353?mt=12 Installez ceci sur ** Mac ** Cliquez avec le bouton droit sur ** zip ** et sélectionnez cette application pour la développer. (Certaines des applications similaires sont devenues ** Matryoshka **, je publierai donc celle qui a fonctionné.)

2. Utilisez dex2jar pour générer un fichier jar à partir du fichier classes.dex

C'est dans le prochain dossier développé classes.dex ** Générer un fichier jar ** à partir du fichier Comment faire

dex2jar https://sourceforge.net/projects/dex2jar/ Téléchargez le truc (** dex2jar-2.0.zip **) ** Extraire dans le même dossier où se trouve le dossier dans lequel vous avez extrait l'application ** (Ce zip est ** double-cliqué **, mais il ne devient pas matriochka et est développé normalement **) Cette fois, Nagao a créé un dossier appelé Rivaen for work ** J'ai mis le ** dossier où l'application a été développée ** et le dossier ** dex2jar-2.0 ** dans le dossier ** Rivaen ** C'est

11.png

alors $ cd Rivaen (Accédez au répertoire Rivaen) Appuyez sur la commande suivante

$ cd dex2jar-2.0/
$ chmod +x *
$ cd ..
$ dex2jar-2.0/d2j-dex2jar.sh sample-app/classes.dex

↑ Avez-vous fait Nani? 1ère ligne déplacée vers le dossier dex2jar-2.0 2ème ligne: donnez l'autorisation d'exécution au fichier exécutable dans le dossier dex2jar-2.0. 3e ligne Retour au dossier Rivaen Ligne 4 Générez un fichier jar à partir de classes.dex en utilisant un shell appelé d2j-dex2jar.sh est Si vous faites jusqu'à présent, ce sera dans le dossier Rivaen

12.png

classes-dex2jar.jar Un ** fichier jar ** sera créé!

3. Affichez le contenu du fichier jar (code Java) à l'aide de JD_GUI

Et c'est parti! Une fois arrivé ici

JD-GUI http://jd.benow.ca/ ** Installez l'application sur votre Mac ** Si vous faites un clic droit sur le ** fichier jar que vous venez de créer ** et ouvrez-le avec cette application Vous devriez enfin pouvoir voir le ** code source Java **!

4. [Interview] Ouvrir un jar avec JD-GUI peut provoquer un crash.

(2018/7/17 s'est toujours écrasé sur High Sierra) Si vous pouvez le voir en toute sécurité, c ’est fini. Ce crash semble se produire sur ** Sierra ** et ** HighSierra ** Pour être honnête, je pensais que c'était ** la fin du match ** Qu'est-ce qu'une application de décryptage de fichiers de classe? ** Je ne trouve rien d'autre que JD-GUI ** (T_T) Mais cette fois ** Pourquoi Nagao fait-il Rivaen en premier lieu **? ** Parce que j'ai perdu le code source important de l'application publiée sur Google Play ** Alors

Je ne sais pas pourquoi c'est fini Je n'ai pas d'autre choix que de faire quelque chose à ce sujet

Sur la page où je suis arrivé à la recherche d'une solution ** Si vous construisez vous-même le JD-GUI sur github, c'est cool! ** ** C'était

Faisons le

Vous pouvez le faire dans n'importe quel répertoire Dans un endroit facile à comprendre pour le moment $ cd Rivaen (Déplacer vers le répertoire Rivaen)

** Commande pour créer JD-GUI par vous-même **

$ git clone https://github.com/java-decompiler/jd-gui.git
$ cd jd-gui
$ ./gradlew installOsxDist

↑ Avez-vous fait Nani? 1ère ligne: Clonez le code source JD-GUI depuis github 2ème ligne déplacée dans le jd-gui cloné 3e ligne: créez l'application avec gradle est Si tu fais ça ** Rivaen → jd-gui → → construire → installer → jd-gui-osx ** Dans 7.png ** JD-GUI.app ** est prêt ...! Il a fallu moins d'une minute pour cloner et construire

Maintenant! Avec cela, lorsque vous ouvrez enfin le fichier jar que vous avez créé plus tôt en cliquant avec le bouton droit de la souris avec celui-ci 10.png

** J'ai pu voir! ** ** (Au fait, c'est le code source écrit en Kotlin)

[1] est terminé ** Merci pour votre soutien! !! ** **

Conclusion

Conservez le code source de l'application dans un endroit sûr pour ne pas le perdre

** Demain, c'est enfin Noël"Calendrier de l'Avent ingénieur sportif 2017" est la dernière personne à décorer @Nkzn! ** **

Recommended Posts

[Version de préservation 2018] Application Android d'ingénierie inverse (.apk) sur Mac
Développement d'applications ROS sur Android
Remarques sur l'appel du programme d'installation sur l'application Android
J'ai créé une application de calculatrice sur Android
Permet la lecture automatique de Youtube même avec l'application Android de Cordova
Mes pensées sur l'avenir [Version de l'application Gradle ①]
Jusqu'à ce que vous commenciez à développer des applications Android sur Mac
Run Edge (version Chromium) sur Mac avec Selenium
Obtenez votre numéro de version dans l'application Android