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.
Pré-requis
- Disposer des droits d'administration.
- 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
Utilisation
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".
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
- (en) Freenode #apktool - IRC Channel pour support, bugs et discussions
—- Contributeurs principaux : deobs.
Basé sur A tool for reverse engineering Android apk files par Ryszard Wiśniewski créateur et Connor Tumbleson mainteneur actuel.