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


86

Les utilisateurs peuvent-ils reconvertir le fichier apk de mon application en code réel? S'ils le font, y a-t-il un moyen d'empêcher cela?


1
Il existe plusieurs méthodes pour décompiler l'APK . Je viens d'APKTool plus souvent, c'est le meilleur et le plus puissant. Il est très facile de modifier les fichiers apk avec.
Taranfx

J'ai écrit un article de blog ici: codexplo.wordpress.com/2012/03/15/… mais encore une fois, ce serait difficile pour le code obscurci ...
rokonoid


3
duplication possible de Existe
Reaz Murshed

Réponses:


80

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 ceux-ci s'améliorent, et théoriquement, il devrait éventuellement être possible de décompiler vers la source Java réelle (au moins parfois). Reportez-vous à la question précédente sur la décompilation de DEX en code source Java .

Ce dont vous devez vous souvenir, 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.


45
Ne jamais dire jamais. L'obfuscation n'arrêtera pas un voleur déterminé mais elle ralentira ou en dissuadera beaucoup d'autres. Le traitement avec Proguard est un moyen simple et FIABLE de masquer votre code et en prime, il l'optimisera également. Et il est inclus dans le SDK Android, il est donc approuvé par Google.
Barry Fruitman

3
L'obscurcissement fonctionne certainement, mais vous devez définir plus clairement quel est votre objectif. De toute évidence, la seule façon de garder votre code source vraiment sûr est de ne jamais donner accès à quiconque, serveur ou client. Notez que Proguard ne fonctionne pas bien sur les classes qui ont des références dans des fichiers XML. Vous devez utiliser l'obfuscation manuelle pour contourner cela.
MattC

35

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 xml de mise en page, images, html utilisés sur la vue Web, etc.)
  • commande: apktool.bat d sampleApp.apk
  • REMARQUE: vous pouvez y parvenir en utilisant un utilitaire zip tel que 7-zip. Mais, il extrait également le fichier .smali de tous les fichiers .class.

Utilisation de 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 .jar.
  • commande: dex2jar sampleApp.apk

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

  • décompile les fichiers .class (masqués - 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.

apktool ne crache pas les fichiers source java! Only smali
IgorGanapolsky

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

1
tu m'as sauvé la vie! quel post génial! J'ai perdu les deux derniers jours de code à cause d'un SSD défectueux (malheureusement, je ne me suis pas engagé à git). Cependant, j'avais l'apk et maintenant j'ai ma source, remarquez, un peu différente, mais la source!
farcrats

3

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

Voici 2 options pour vous:


decompileandroid.com est hors ligne (lorsque vous téléchargez l'apk, vous aurez des problèmes pour le télécharger à nouveau) et javadecompilers.com/apk a mis mon apk dans une file d'attente depuis longtemps. Je suis allé hors ligne, puis en ligne, c'était toujours 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échargez cet outil jadx https://sourceforge.net/projects/jadx/files/

Décompressez-le et que dans le dossier lib, exécutez le fichier jadx-gui-0.6.1.jar maintenant parcourez votre fichier apk. C'est fait. Apk se décompilera automatiquement et l'enregistrera en appuyant sur le bouton Enregistrer. J'espère que cela fonctionnera pour vous. Merci


0

Parfois, vous obtenez du code cassé, lors de l'utilisation de dex2jar/ apktool, notamment dans les boucles. Pour éviter cela, utilisez jadx , qui décompile le bytecode dalvik en code source java, sans créer d'abord un fichier .jar/ .classcomme le dex2jarfait (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

Les utilisateurs peuvent-ils reconvertir 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
    • utilisation FDex2pour vider le dexfichier
      • puis en utilisant dex2jarpour convertir enjar
        • puis en utilisant jadxpour convertir en javacode source

S'ils le font, y a-t-il un moyen d'empêcher cela?

Oui. Plusieurs moyens (peuvent être combinés) pour éviter (dans une certaine mesure) cela:

  • bas niveau: obfuscation du code
    • en utilisant Android ProGuard
  • haut niveau: utilisez le scénario de renforcement Android

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


0

Oui, il existe des tonnes de logiciels disponibles pour décompiler un fichier .apk.

Récemment, j'avais compilé une liste ultime des 47 meilleurs décompilateurs APK sur mon site Web. Je les ai disposés en 4 sections différentes.

  1. Décompilateurs APK Open Source
  2. Décompilateurs APK en ligne
  3. APK Decompiler pour Windows, Mac ou Linux
  4. Applications de décompilation APK

J'espère que cette collection vous sera utile.

Lien: https://www.edopedia.com/blog/best-apk-decompilers/

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.