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 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 d'une connexion à Internet configurée et activée.
  • Avoir Java 7 (JRE 1.7) installé
  • Connaissances basique de Android SDK, AAPT and smali

Installation

  • Télécharger Linux wrapper script (Clic droit, enregistrer le lien sous apktool)
  • Télécharger apktool-2 (derniere version ici)
  • Assurez vous d'avoir les librairies ia32-libs installées, si vous etes sur ubuntu 64bit. (support aapt 32bits, requis par apktool)
  • Renomer 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 executable (chmod +x)
  • Lancez apktool via le Terminal avec la commande apktool
Wrapper scripts n'est pas indispensable, mais pratique pour ne pas a avoir a taper "java -jar apktool.jar" encore et encore.

Utilisation

Lancez l'application via le terminal (toutes versions d'Ubuntu) avec la commande suivante :

apktool

Décodage

L'option de décodage peut être appelé par les argument 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 <dir> - Stocke le framework dans <dir>
  • -t, –tag <tag> - Tag frameworks utilisant <tag>
$ apktool if framework-res.apk
I: Framework installé dans: 1.apk 
// pkgId du framework-res.apk détermines 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 different 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 habituel. 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 situes dans /usr/local/bin . Les apk que vous aurez décompilé sont conservées.

Voir aussi

—- Contributeurs principaux : deobs.

Basé sur A tool for reverse engineering Android apk files par Ryszard Wiśniewski créateur et Connor Tumbleson mainteneur actuel.

  • apktool.txt
  • Dernière modification: Le 28/04/2018, 11:17
  • (modification externe)