23 juillet 2011

Reverse avec apktool

Si, pour vous instruire sur Android, vous avez regardé le contenu d’un fichier apk (qui est en fait un fichier zip) vous avez constaté que les fichiers texte, comme les xml, sont illisibles. Heureusement il y a apktool !

Apktool est une application open source, écrite en java, qui permet de faire du reverse engineering sur des applications Android (apk).

Attention son téléchargent se fait en deux temps :
  1. Le fichier java apktool.jar, le même quelle que soit la plateforme Win/Mac/Linux.
    Le nom de l’archive qui contient ce fichier est de la forme apktool<x.y.z>.tar.bz2
  2. Un script et  un binaire (dépendant de la plateforme) pour lancer l’exécution du jar.
    Le nom de l’archive qui contient ce fichier est de la forme apktool-install-<plateforme>-r<xx>-brut1.tar.bz2
On copy l’ensemble de ces fichiers dans le même répertoire. L’idéal est d'avoir ce répertoire dans le PATH
Sous Windows on a donc : apktool.jar + apktool.bat + aapt.exe

USAGE 
Ouvrir une console (boite dos) et taper ( sans oublier le 'd' )

apktool  d  \path\to\application.apk

Un répertoire avec le nom de l’application a été créé dans le repertoire courant. Il contient les fichiers en clair. Il ne vous reste plus qu'a explorer !...
(Pour plus de détails sur les paramètres taper juste : apktool)

Où est le code java ?
Les fichiers java sont présentés sous forme de fichiers "smali". Il s'agit du code assembleur utilisé par la machine virtuelle Dalvik.

Application utile:
Il existe des sites web qui vous proposent de créer enligne votre application Android (et iPhone). Les applications ainsi générées nécessitent des droits très surprenant sans rapport avec les besoins réel de l'application. Que contient le fichier .apk à la fin ? Grâce à apktools vous allez découvrir tout ce qui est ajouté (en cachette) à votre application (pub, appel de numéro, liens vers d'autre sites, player étrange, ect) et tout ce qui en fait n'est pas dans votre application mais sur des serveurs.
Donc, grâce à apktool, j'ai appris qu'il ne fallait surtout pas utiliser ces services : trop gratuits pour être honnêtes  !!
Pour aller plus loin...


16 juillet 2011

Bug du SDK r12 d'Android


Quand on utilise le SDK r12 pour Android et que l’on tente d’exécuter un programme Android depuis Eclipse on obtient cette erreur : 

[2011-07-10 21:00:51 - Emulator] invalid command-line parameter: Files\Android\android-sdk\tools/emulator-arm.exe.
[2011-07-10 21:00:51 - Emulator] Hint: use '@foo' to launch a virtual device named 'foo'.

Le Paramètre invalide Files\Android\android-sdk\tools/emulator-arm.exe est en fait la deuxième partie de C:\Program Files\Android\... coupé par l'espace. Le problème vient donc de l’espace dans le path du SDK: C:\Program Files\Android\android-sdk

Solution :

1) Ouvrir une boite dos et taper la commande 
dir /x \ 
pour déterminer le chemin au format dos du répertoire « \Program Files » 

>dir /x \ 

Répertoire de C:\
17/01/2011  22:45       0    AUTOEXEC.BAT
17/01/2011  22:45       0    CONFIG.SYS 
24/01/2011  10:44    <REP>   DOCUME~1     Documents and Settings
10/07/2011  10:54    <REP>   PROGRA~1     Program Files 
17/06/2011  02:07    <REP>                WINDOWS
Ici le nom dos est “PROGRA~1

2) Dans Eclipse cliquer dans le menu sur : Window > Preferences > Android
Dans le champ SDK Location remplacer \Program Files\ par \PROGRA~1\

10 juillet 2011

Android: Versions, Api, Noms

Il n’est pas toujours facile de se repérer entre les numéros de version d’Android, leur nom de code et le « Api Level ».
  • L’Api level est le seul qui techniquement à une influence.Si ce numéro ne change pas c’est qu’aucune fonction n’est apparue, ou n’a disparue.
  • Le nom de code regroupe plusieurs versions ayant en gros les mêmes fonctionnalités.
  • Le numéro de version, comme l’Api level , montre l’évolution de logiciel mais avec en plus une hiérarchisation des changements.
2003 Octobre : Création de Android Inc.
2005 Aout: Rachat de Android Inc. par Google.
2005 Novembre: Création du consortium Open Handset Alliance.