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