web-dev-qa-db-fra.com

Est-il possible de décompiler un fichier .apk Android?

Les utilisateurs sont-ils en mesure de reconvertir le fichier apk de mon application en code réel?

78
aryaxt

Tout d’abord, un fichier apk n’est qu’un fichier jar modifié. La vraie question est donc de savoir s'ils peuvent décompiler les fichiers dex à l'intérieur. La réponse est en quelque sorte. Il existe déjà des désassembleurs, tels que dedexer et smali . Vous pouvez vous attendre à ce que ces améliorations ne soient que meilleures et théoriquement, il devrait éventuellement être possible de décompiler en source Java réelle (au moins parfois). Voir la question précédente décompiler DEX en code source Java

Ce qu'il ne faut pas oublier, c'est que l'obscurcissement 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.

78
Matthew Flaschen

La décompilation du fichier APK est possible. Mais il peut être difficile de comprendre le code s’il est obscurci.

ApkTool pour afficher les ressources dans le fichier APK 

  • Extrait AndroidManifest.xml et tout ce qui se trouve dans le dossier res (fichiers de mise en page xml, images, html utilisés dans la visualisation Web, etc.) 
  • commande: apktool.bat d sampleApp.apk
  • NOTE: Vous pouvez y parvenir en utilisant l'utilitaire Zip tel que 7-Zip. Mais, il extrait également le fichier .smali de tous les fichiers .class.

Utiliser dex2jar

  • Génère un fichier .jar à partir d'un fichier .apk. Nous avons besoin de JD-GUI pour afficher le code source de ce fichier .jar.
  • commande: dex2jar sampleApp.apk

Décompilation .jar à l'aide de JD-GUI

  • décompile les fichiers .class (obscurcis - dans le cas de l'application Android, mais un code original lisible est obtenu dans le cas d'un autre fichier .jar). c’est-à-dire que nous récupérons .Java de l’application.
32
gtiwari333

J'ajoute que, de nos jours, il est possible de décompiler une application Android en ligne, aucun logiciel n'est nécessaire!

Voici 2 options pour vous:

1
Andrew Rukin

Téléchargez cet outil jadx https://sourceforge.net/projects/jadx/files/

Décompressez-le et dans le dossier lib, exécutez le fichier jadx-gui-0.6.1.jar et naviguez maintenant dans votre fichier apk. Apk sera automatiquement décompilé et sauvegardé en appuyant sur le bouton Enregistrer . J'espère que cela fonctionnera pour vous . Merci

1
akhilesh Jha

Les utilisateurs sont-ils en mesure de convertir le fichier apk de mon application en code réel?

oui.

Les gens peuvent utiliser divers outils pour:

  • analyse: votre apk
  • décoder/pirater votre apk
    • utiliser FDex2 pour vider le fichier dex
      • puis en utilisant dex2jar pour convertir en jar
        • puis en utilisant jadx pour convertir en Java code source

S'ils le font - est-il possible d'empêcher cela?

oui. Plusieurs moyens (peuvent être combinés) pour prévenir (à un certain degré) ceci:

  • bas niveau: obscurcissement du code
    • en utilisant Android ProGuard
  • niveau élevé: utilisation du scénario de durcissement Android

Plus de détails peuvent se référer à mon chinois tutoriel: 的 安全 和 破解

0
crifan

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

0
polym