Reverse Engineering Android : A quick Overview - Part I

Romain KRAFT

Whoami

  • Areizen tavu
  • Aperi'Kube member
  • Android lover
  • A beautiful otter <3

Android késako ?

Répartition des différentes version en octobre 2018

Android Name Android Version Usage Share
Nougat 7.0, 7.1 28.2%
Marshmallow 6.0 21.3%
Lollipop 5.0, 5.1 17.9%
Oreo 8.0, 8.1 21.5%
KitKat 4.4 7.6%
Jelly Bean 4.1.X, 4.2.X, 4.3.X 3%
Ice Cream Sand. 4.0.3, 4.0.4 0.3%
Gingerbread 2.3.3 to 2.3.7 0.2%

Android késako ?

http://www.androidvulnerabilities.org/

Environnement de développement Android

Environnement de développement Android

Android Debug Bridge

Vous avez toujours révé d'éxécuter des commandes sur votre téléphone, voici la solution

Environnement de développement Android

Android Debug Bridge

ADB c'est aussi :

  • Installer des applications
  • Lister les packages installés
  • Trouver l'emplacement de ces applications
  • Télécharger les application installés depuis le téléphone
  • Uploader des fichiers
  • etc.
adb install app.apk
adb shell pm list packages
adb shell pm path <package name>
adb pull <android_path> <local_path>
adb push <local_path> <android_path>

Architecture globale d'Android

  • Basé sur SELinux
  • Cloisonnement d'application
  • Sandboxing d'application
  • Système de permissions
  • Signature d'applications

Architecture globale d'Android

Lancement d'une application

Architecture globale d'Android

Cloisonnement

➜ adb shell ls -la /data/data

....
drwx------   4 u0_a65         u0_a65         4096 2019-03-19 16:29 com.google.android.tts
drwx------   8 u0_a81         u0_a81         4096 2019-03-19 16:29 com.google.android.videos
drwx------   4 u0_a40         u0_a40         4096 2019-01-23 15:27 com.google.android.webview
drwx------   8 u0_a84         u0_a84         4096 2019-03-19 16:29 com.google.android.youtube
...

Architecture globale d'Android

Permissions

Architecture globale d'Android

Inter Process Communications (IPC)

Android application in a nutshell

  • Java est votre ami
  • L'émulateur est votre ami
  • https://developer.android.com/ est votre ami

Android application in a nutshell

  • AndroidManifest.xml : Fichier définissant les interfaces et les permissions

  • lib : librairies natives

  • res : contient des ressources utilisées par l'application, notamment strings.xml

  • smali : bytecode Java contenant le code

  • assets : contient des fichiers utiles à l'application (config, etc...)

Android application in a nutshell

Manifest.xml

Contient des informations globales à l'application :

  • Permissions
  • Versions d'Android minimums et ciblées
  • Activity principale et celles qui acceptent les intent

Android application in a nutshell

Manifest.xml

adb shell am start -n <nom du package>/.MainActivity

Architecture du code

Architecture du code

Activity

Architecture du code

Receivers

Compilation

javac [options] [.java files]
jar -cvf [.jar out] [.class in files]
dx --dex --output=[.apk out] [.jar in]
dex2opt
dex2oat

Reverse starts in part II ;)

Reverse Engineering Android : A quick Overview

By areizen

Reverse Engineering Android : A quick Overview

  • 610