Pour clarifier quelque peu, il existe deux voies principales que vous pouvez emprunter ici en fonction de ce que vous voulez accomplir :
Décompiler le bytecode Dalvik (dex) en source Java lisible. Vous pouvez le faire facilement avec dex2jar y jd-gui comme le mentionne Fred. Le source résultant est utile pour lire et comprendre la fonctionnalité d'une application, mais ne produira probablement pas un code utilisable à 100%. En d'autres termes, vous pouvez lire la source, mais vous ne pouvez pas vraiment la modifier et la reconditionner. Notez que si la source a été obfusquée avec proguard, le code source résultant sera beaucoup plus difficile à démêler.
L'autre alternative majeure consiste à désassembler le bytecode en smali Un langage d'assemblage conçu précisément dans ce but. J'ai trouvé que la manière la plus simple de le faire est avec apktool . Une fois apktool installé, il suffit de le faire pointer sur un fichier apk pour obtenir un fichier smali pour chaque classe contenue dans l'application. Vous pouvez lire et modifier le smali ou même remplacer entièrement les classes en générant le smali à partir d'une nouvelle source Java (pour ce faire, vous pourriez compiler votre source .java en fichiers .class avec javac, puis convertir vos fichiers .class en fichiers .dex avec le compilateur dx d'Android, et enfin utiliser baksmali (désassembleur de smali) pour convertir les fichiers .dex en fichiers .smali, comme décrit dans cette question . Il peut y avoir un raccourci ici). Une fois que vous avez terminé, vous pouvez facilement empaqueter à nouveau l'apk avec apktool. Notez qu'apktool ne signe pas l'apk résultant, vous devez donc vous en occuper. comme toute autre application Android .
Si vous optez pour la voie du smali, vous pourriez essayer APK Studio L'outil de développement intégré (IDE) qui automatise certaines des étapes ci-dessus pour vous aider à décompiler et recompiler un apk et à l'installer sur un appareil.
En résumé, vous avez le choix entre décompiler en Java, ce qui est plus lisible mais probablement irréversible, ou désassembler en smali, ce qui est plus difficile à lire mais beaucoup plus flexible pour effectuer des changements et reconditionner une application modifiée. L'approche que vous choisirez dépendra de ce que vous cherchez à obtenir.
Enfin, la suggestion de oser est également à noter. Il s'agit d'un outil de reciblage permettant de convertir les fichiers .dex et .apk en fichiers java .class, afin qu'ils puissent être analysés à l'aide des outils d'analyse statique typiques de Java.
0 votes
Jetez un coup d'œil aquí . Vous obtiendrez de là des pistes possibles pour avancer.
0 votes
Des informations mises à jour sont disponibles sur le blog coders hub : coders-hub.com/2013/04/comment-convertir-un-fichier-apk-en-source.html
0 votes
Si vous avez de l'argent, achetez jeb sinon, utilisez jadx voir aquí pourquoi
0 votes
Il existe un nouvel outil multiplateforme (java) et open source, qui vous permet de le faire, il suffit de vérifier bytecodeviewer : stackoverflow.com/a/36557898/795245