Je dois modifier un fichier APK existant, modifier les sources, puis le recompiler.
Mais maintenant, je voudrais savoir comment recompiler les fichiers Java et les replacer dans un fichier jar! (La partie jar devrait être simple, le problème principal semble être comment Java pour Android)
Je sais qu'une autre solution consiste à utiliser apktool, puis à modifier les fichiers smali, mais cela semble vraiment compliqué lorsque nous voulons ajouter beaucoup de code!
Mon application est une base de HelloWorld sans obscurcissement.
Grâce à Chris Jester-Young, j'ai réussi à le faire fonctionner!
Je pense que la façon dont j'ai réussi à le faire ne fonctionnera que sur des projets très simples:
Avec apktool, j’ai eu le Android le manifeste et les fichiers de ressources
Dans Eclipse, je crée un nouveau projet avec les mêmes paramètres que l'ancien (vérification de toutes les informations du fichier manifeste).
/!\assurez-vous que vous avez supprimé l’ancien apk de l’appareil, une erreur sera générée indiquant que la signature d’apk n’est pas la même que l’ancienne!
Je sais que cette question a toujours une réponse, je voudrais passer une information sur la façon d’obtenir le code source d’apk avec dexjar.
Il y a un décompilateur en ligne pour Android apks
Je ne sais pas à quel point c'est fiable.
@ darkheir La réponse est le moyen manuel de décompiler un apk. Cela nous aide à comprendre les différentes phases de la création d'Apk.
Une fois que vous avez le code source, suivez l’étape mentionnée dans la réponse acceptée.
Un autre compilateur Apk en ligne @ Andrew Rukin : http://www.javadecompilers.com/apk
Toujours la peine. Chapeau aux créateurs.
Téléchargez d’abord l’outil dex2jar à partir du lien suivant http://code.google.com/p/dex2jar/downloads/list
Extraire le fichier qu'il crée le dossier dex2jar
Maintenant, vous choisissez votre fichier apk et changez son extension .apk en .Zip après avoir changé l'extension, il semble que ce soit un fichier Zip, puis extrayez ce fichier Zip que vous avez trouvé dans le fichier classes.dex
.
Maintenant, sélectionnez le fichier classes.dex et mettez-le dans le dossier dex2jar
Maintenant, ouvrez la fenêtre cmd et tapez le chemin du dossier dex2jar
Maintenant, tapez la commande dex2jar.bat classes.dex
Et appuyez sur Entrée
Ouvrez maintenant le dossier dex2jar
Dans lequel vous avez trouvé le fichier classes_dex2jar.jar
Ensuite, vous téléchargez le Java à partir du lien suivant http://Java.decompiler.free.fr/?q=jdgui
Dernière étape Ouvrez le fichier classes_dex2jar.jar
Dans Java, vous pouvez maintenant voir le code apk.
Je sais que cette question a reçu une réponse et je ne cherche pas à donner une meilleure réponse ici. Je vais juste partager mon expérience dans ce sujet.
Une fois, j'ai perdu mon code et je n'avais que le fichier apk
. Je l'ai décompilé en utilisant l'outil ci-dessous et ça a fait ma journée.
Ces outils DOIVENT être utilisés dans une telle situation, sinon, c'est contraire à l'éthique et même parfois c'est illégal (voler les efforts de quelqu'un d'autre). Alors s'il vous plaît utilisez-le à bon escient.
Ce sont mes outils préférés pour le faire:
et pour obtenir l'apk de Google Play, vous pouvez le rechercher sur Google ou consulter ces sites:
À la date d'affichage de cette réponse, j'ai testé tous les liens et cela a fonctionné parfaitement pour moi.
REMARQUE: Apk Décompiler n'est pas efficace en cas de code progressif. Parce que Proguard rétrécit et obscurcit le code et renomme les classes en noms non-sens, ce qui rend assez difficile la compréhension du code.
Bonus:
dex2jar avec jd-gui donnera tous les Java mais ils ne sont pas exactement les mêmes. Ce sont des fichiers .class presque équivalents. (pas 100%). Donc, si vous voulez changer le code d'un fichier apk:
décompiler en utilisant apktool
apktool générera un fichier smali (version d'assemblage de dex) pour chaque fichier Java portant le même nom).
smali est compréhensible pour l’être humain, apportez des modifications au fichier concerné, recompilez-vous en utilisant le même apktool (apktool b Nw.apk <Folder Containing Modified Files>
)