Obtenir le code source à partir d'un fichier .apk? [fermé]

21

Ayant un fichier .apk, est-il possible d'obtenir son code source?

eldarerathis
la source
7
Avant cela, avez-vous vérifié si le package est open source?
ott--
Un .apk est simplement un fichier .zip. Mais malheureusement, toute version d'application pour la «version» sera probablement protégée par ProGuard .
Daniel López
@MatthewRead The Op lui demande s'il pourrait obtenir le code d'une API, et j'ai répondu à ce que ce phénomène est appelé et aux moyens d'empêcher au moins de faire une application similaire. Il ne dit pas comment empêcher d'obtenir le code. Alors oui, cela répond à la question.
Être humain

Réponses:

11

Si vous avez de la chance et que votre .apkfichier n'est pas protégé par Proguard ou analogique, vous pouvez utiliser l' outil APK . Il s'agit d'un outil pour la rétro-ingénierie d'applications tierces, fermées et binaires Android.

HitOdessit
la source
Apktool ne génère que du code Smali, pas du code Java - c'est une grande différence.
Robert
2

Depuis l' un des wiki de la communauté de Parnkul Garg dans SO :


Procédure de décodage des fichiers .apk, méthode pas à pas:

Étape 1:

  1. Créez un nouveau dossier et copiez le fichier .apk que vous souhaitez décoder.

  2. Maintenant, renommez l'extension de ce fichier .apk en .zip (par exemple renommez de filename.apk en filename.zip) et enregistrez-la. Vous pouvez maintenant accéder aux fichiers classes.dex, etc. À ce stade, vous pouvez voir les fichiers dessinables mais pas les fichiers xml et java, alors continuez.

Étape 2:

  1. Extrayez maintenant ce fichier .zip dans le même dossier (ou NOUVEAU DOSSIER).

  2. Téléchargez dex2jar et extrayez-le dans le même dossier (ou NOUVEAU DOSSIER).

  3. Déplacez le fichier classes.dex dans le dossier dex2jar.

  4. Ouvrez maintenant l'invite de commande et changez le répertoire dans ce dossier (ou NOUVEAU DOSSIER). Ensuite, écrivez d2j-dex2jar classes.dexet appuyez sur Entrée. Vous avez maintenant le fichier classes.dex.dex2jar dans le même dossier.

  5. Téléchargez le décompilateur Java , double-cliquez sur jd-gui, cliquez sur le fichier ouvert et ouvrez le fichier classes.dex.dex2jar à partir de ce dossier: vous obtenez maintenant les fichiers de classe.

  6. Enregistrez tous ces fichiers de classe (dans jd-gui, cliquez sur Fichier -> Enregistrer toutes les sources) par nom src. À ce stade, vous obtenez la source java mais les fichiers .xml sont toujours illisibles, alors continuez.

Étape 3:

Maintenant, ouvrez un autre nouveau dossier

  1. Mettez le fichier .apk que vous souhaitez décoder

  2. Téléchargez la dernière version d' apktool ET la fenêtre d'installation d'apktool (les deux peuvent être téléchargées à partir du même lien) et placez-les dans le même dossier

  3. Téléchargez framework-res.apk et placez-le dans le même dossier (tous les fichiers apk n'ont pas besoin de ce fichier, mais cela ne fait pas de mal)

  4. Ouvrez une fenêtre de commande

  5. Accédez au répertoire racine de APKtool et tapez la commande suivante: apktool if framework-res.apk

  6. apktool d myApp.apk (où myApp.apk désigne le nom de fichier que vous souhaitez décoder)

maintenant, vous obtenez un dossier de fichiers dans ce dossier et pouvez facilement lire les fichiers xml de l'apk.

Étape 4:

Ce n'est pas une étape, copiez simplement le contenu des deux dossiers (dans ce cas, les deux nouveaux dossiers) dans le seul

et profitez du code source ...

user3226511
la source