2010-06-26 9 views
75

Les utilisateurs peuvent-ils convertir le fichier apk de mon application en code réel? Si oui, y a-t-il un moyen d'empêcher cela?Est-il possible de décompiler un fichier .apk Android?

+1

Il existe plusieurs [méthodes de décompilation APK] (http://geeknizer.com/decompile-reverse-engineer-android-apk). Je juste APKTool plus souvent, c'est le meilleur et le plus puissant. Il est très facile de [modifier les fichiers apk] (http://www.androidng.com/how-to-modify-android-apk) avec elle. – Taranfx

+0

J'ai écrit un article de blog ici: http://codexplo.wordpress.com/2012/03/15/how-to-decompile-android-apk-to-java-source-code/ mais encore une fois, ce serait difficile pour le code obfuscated ... – rokonoid

+1

http://yeblon.com/how-to-decompile-android-apk-app-files - Cela pourrait belp –

Répondre

75

D'abord, un apk file est juste un fichier jar modifié. Donc la vraie question est de savoir s'ils peuvent décompiler les fichiers dex à l'intérieur. La réponse est en quelque sorte. Il y a déjà des désassembleurs, tels que dedexer et smali. Vous pouvez vous attendre à ce que celles-ci s'améliorent, et théoriquement, il devrait être possible de les décompiler vers une source Java réelle (du moins parfois). Voir la question précédente decompiling DEX into Java sourcecode. Ce dont vous devez vous rappeler, c'est que l'obfuscation ne fonctionne jamais. Choisissez une bonne licence et faites de votre mieux pour la faire respecter par la loi. Ne perdez pas de temps avec des mesures techniques peu fiables.

+39

Ne dites jamais jamais. L'obscurcissement n'arrêtera pas un voleur déterminé, mais il ralentira ou en dissuadera beaucoup d'autres. Le traitement avec Proguard est un moyen facile et fiable d'obscurcir votre code et en prime, il l'optimisera aussi. Et il est inclus dans le SDK Android, donc il est approuvé par Google. –

+3

L'obfuscation fonctionne définitivement, mais vous devez définir plus clairement votre objectif. Évidemment, la seule façon de garder votre code source en sécurité est de ne jamais y donner accès, serveur ou client. Notez que Proguard ne fonctionne pas correctement sur les classes qui ont des références dans des fichiers XML. Vous devez utiliser l'obfuscation manuelle pour contourner cela. – MattC

+0

upvote pour rappeler le fichier dex –

31

Decompilation of APK file is possible. But it might be difficult to understand the code if it is obfuscated.

ApkTool pour accéder aux ressources à l'intérieur du fichier APK

  • Extraits AndroidManifest.xml et tout dans le dossier res (mise en page des fichiers XML, images, HTMLS utilisé sur WebView etc ..)
  • commande: apktool.bat d sampleApp.apk
  • REMARQUE: Vous pouvez y parvenir en utilisant l'utilitaire zip comme 7-zip. Mais, Il extrait également le fichier .smali de tous les fichiers .class.

En utilisant dex2jar

  • Génère fichier .jar du fichier .apk, nous avons besoin de JD-GUI pour afficher le code source de cette .jar.
  • commande: dex2jar sampleApp.apk

décompilation .jar utilisant JD-GUI

  • décompile les fichiers .class (obfuscated- dans un cas de l'application Android, mais un code lisible d'origine est obtenu dans un cas d'autre fichier .jar). c'est-à-dire que nous récupérons .java depuis l'application.
+0

apktool ne crache pas les fichiers source java! Seulement smali –

+1

comme je l'ai déjà dit dans la réponse, apktool crée .jar à partir de .apk et nous devons utiliser l'outil comme JD-GUI pour décompiler .jar pour obtenir les fichiers sources .java. – gtiwari333

+1

tu as sauvé ma vie! quel message génial! J'ai perdu les deux derniers jours de code à cause d'un SSD qui a échoué (malheureusement, je n'ai pas commis de git). Cependant, j'ai eu l'apk et maintenant j'ai ma source, attention, un peu différent, mais source! – farcrats

0

Parfois, vous obtenez le code cassé, lors de l'utilisation dex2jar/apktool, notamment dans les boucles. Pour éviter cela, utilisez jadx, qui décompile le bytecode dalvik en code source java, sans créer de fichier .jar/.class d'abord comme dex2jar (apktool utilise dex2jar je pense). Il est également open-source et en développement actif. Il a même une interface graphique, pour GUI-fanatiques. Essayez-le!

2

Je peux également ajouter, que de nos jours il est possible de décompiler l'application Android en ligne, aucun logiciel nécessaire!

Voici 2 options pour vous:

+0

decompileandroid.com est hors ligne (lorsque vous téléchargez l'apk, vous aurez des problèmes pour le télécharger à nouveau) et http://www.javadecompilers.com/apk a mis mon apk dans une file d'attente depuis longtemps. Je suis allé hors ligne, puis en ligne, il était encore dans une file d'attente. J'ai effacé tout l'historique de navigation et maintenant l'apk que j'ai téléchargé pour la deuxième fois est dans une file d'attente. – iOSAndroidWindowsMobileAppsDev

1

Télécharger cette outil jadx https://sourceforge.net/projects/jadx/files/

Décompressez et que dans l'exécution des dossiers lib jadx-IUG-0.6 Fichier .jar maintenant parcourir votre fichier apk. C'est fait. Automatiquement apk va décompiler et enregistrer en appuyant sur le bouton de sauvegarde. J'espère que cela fonctionnera pour vous. Merci

Questions connexes