{{tag>Xenial Android}} ---- ====== Apktool ====== Il s'agit d'un outil en ligne de commandes de réingénierie d'applications Android binaires, tierces et fermées sous licence [[https://github.com/iBotPeaches/Apktool/blob/master/LICENSE|Apache 2.0]]. Il peut décoder des ressources à la forme presque originale et les reconstruire après avoir fait quelques modifications; Il permet de déboguer le code smali étape par étape. De plus, il facilite le travail avec l'application grâce à la structure de fichiers et à l'automatisation de certaines tâches répétitives comme la construction d'apk, etc. Il n'est PAS destiné à la piraterie et à d'autres utilisations non légales. Il pourrait être utilisé pour la localisation, l'ajout de certaines fonctionnalités ou de soutien pour les plates-formes personnalisées et d'autres bonnes raisons. Il suffit d'essayer d'être juste avec les auteurs d'une application, que vous utilisez et probablement aimez. ===== Pré-requis ===== * Disposer des [[:sudo|droits d'administration]]. * Disposer d'une connexion à Internet configurée et activée. * Avoir [[:java]] 7 (JRE 1.7) installé * Connaissances basiques de Android SDK, AAPT and smali ===== Installation ===== * Télécharger [[https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool|Linux wrapper script]] (Clic droit, enregistrer le lien sous apktool) * Télécharger apktool-2 [[https://bitbucket.org/iBotPeaches/apktool/downloads|(derniere version ici)]] * Renommer le fichier .jar téléchargé en apktool.jar * Déplacer les deux fichiers (apktool.jar & apktool) dans /usr/local/bin (root requis) * Rendez les deux fichiers executables (chmod +x) * Lancez apktool via le Terminal avec la commande apktool Le script Wrapper n’est pas indispensable, mais pratique pour ne pas à avoir à taper "java -jar apktool.jar" tout le temps. ===== Utilisation ===== Lancez l'application via le [[:terminal]] (toutes versions d'Ubuntu) avec la [[:commande_shell|commande]] suivante : apktool ==== Décodage ==== L'option de décodage peut être appelée par les arguments ''d'' ou ''decode'' comme montré ci-dessous apktool d foo.jar // décode foo.jar dans le répertoire foo.jar.out apktool decode foo.jar // décode foo.jar dans le répertoire foo.jar.out apktool d bar.apk // décode bar.apk dans le répertoire bar apktool decode bar.apk // décode bar.apk dans le répertoire bar apktool d bar.apk -o baz // décode bar.apk dans le répertoire baz ==== Construction ==== L'option de re/construction peut être appelée par les argument ''b'' ou ''build'' comme montré ci-dessous apktool b foo.jar.out // builds foo.jar.out folder into foo.jar.out/dist/foo.jar file apktool build foo.jar.out // builds foo.jar.out folder into foo.jar.out/dist/foo.jar file apktool b bar // builds bar folder into bar/dist/bar.apk file apktool b . // builds current directory into ./dist apktool b bar -o new_bar.apk // builds bar folder into new_bar.apk ==== Frameworks ==== Comme vous le savez probablement, les applications Android utilisent du code et des ressources qui se trouvent sur le système d'exploitation Android lui-même. Ceux-ci sont connus comme des Framework et Apktool s'appuie sur ceux-ci pour correctement décoder et construire des apks. Les Frameworks peuvent êtres installés avec ''if'' ou ''install-framework'', de plus deux paramètres autorisent un contrôle plus précis sur la manière dont les fichiers sont nommés et stockés. * ''-p, --frame-path '' - Stocke le framework dans '''' * ''-t, --tag '' - Tag frameworks utilisant '''' apktool if framework-res.apk I: Framework installé dans: 1.apk // pkgId du framework-res.apk déterminent le numéro (lequel est 0x01) apktool if com.htc.resources.apk I: Framework installé dans: 2.apk // pkgId de com.htc.resources est 0x02 apktool if com.htc.resources.apk -t htc I: Framework installé dans: 2-htc.apk // pkgId-tag.apk apktool if framework-res.apk -p foo/bar I: Framework installé dans: foo/bar/1.apk apktool if framework-res.apk -t baz -p foo/bar I: Framework installé dans: foo/bar/1-baz.apk Les différents Framework sont stockés dans ''$HOME/.local/share/apktool'' Pour la plupart des apk dans ''/system/framework'' sur un appareil sera un fichier framework. Sur certains appareils, ils peuvent être situés dans ''/data/system-framework'' et même habilement cachés dans ''/system/app'' ou ''/system/priv-app''. Ils sont habituellement désignés sous les noms "resources", "res" or "framework". Chaque version d'Apktool contient en interne le Framework le plus à jour d'AOSP au moment de la publication. Cela vous permet de décoder et de construire la plupart des apks sans problème. Cependant, les fabricants ajoutent leurs propres fichiers Framework en plus des AOSP habituels. Pour utiliser apktool avec ces fabricants, vous devez d'abord installer les fichiers du framework fabricant. ===== Désinstallation ===== Pour supprimer cette application, il suffit de supprimer les fichiers apktool et apktool.jar situés dans /usr/local/bin . Les apk que vous aurez décompilé sont conservées. ===== Voir aussi ===== * **(en)** [[https://ibotpeaches.github.io/Apktool|Site officiel du logiciel]] * **(en)** [[https://webchat.freenode.net/?channels=apktool|Freenode #apktool]] - IRC Channel pour support, bugs et discussions * **(en)** [[https://forum.xda-developers.com/showthread.php?t=1755243|Fil de discussion sur XDA]] ---- //Contributeurs principaux : [[utilisateurs:deobs|deobs]].// //Basé sur [[https://ibotpeaches.github.io/Apktool/|A tool for reverse engineering Android apk files]] par [[https://github.com/brutall|Ryszard Wiśniewski]] créateur et [[https://github.com/iBotPeaches|Connor Tumbleson]] mainteneur actuel.//