Project

General

Profile

Recherche et analyse des méthodes de protection d'applications Androïd

Contexte

On constate de nos jours qu'il devient de plus en plus courant pour les studios de développement d'appliquer des restrictions sur les applications qu'ils diffusent. Ces protections visent par exemple à empêcher l'application de s'exécuter sur un téléphone rooté, ou disposant d'une fausse localisation, et autres. On peut prendre l'exemple récent de Niantic avec Pokémon GO 0.37 qui désormais vérifie que le téléphone n'est pas rooté, auquel cas l'application refuse de se lancer (http://www.numerama.com/pop-culture/194528-pokemon-go-derniere-mise-a-jour-bloque-smartphones-android-rootes.html)

Objectifs du projet (pas nécessairement dans l'ordre) :

  • recenser les différentes restrictions que l'on peut rencontrer sur les applis du Google Play Store (blocage du root, fakeGPS, ...)
  • comprendre comment sont détectées ces modifications du système (via SafetyNetAPI https://developers.google.com/android/reference/com/google/android/gms/safetynet/SafetyNet pour le root et Pokémon GO, ...) et à partir de quelles API d'androïd ces mesures de protection sont applicables
  • modifier ces applications manuellement de manière à lever ces protections (on pourra s'appuyer sur des applications de Patch telles que Lucky Patcher https://lucky-patcher.netbew.com/)
  • les fichiers d'installation d'applications (apk) étant compilés, il conviendra d'apprendre à les décompiler afin d'analyser plus facilement le code. Dans un premier temps, les patchs se feront sur l'application décompilée que l'on recompilera ensuite. Dans un deuxième temps, il serai judicieux de pouvoir appliquer ces patchs sur l'apk lui-même ou sur l'application installée sur le téléphone. On pourra utiliser des outils tels qu'Apktool (http://forum.frandroid.com/topic/101899-tuto-décompiler-traduire-compiler-et-signer-une-apk/).
  • comprendre les principes des formats d'exécution de Dalvik (.dex), la machine virtuelle java d'androïd, et chercher s'il n'existe pas des points d'entrée sur ces formats qui permettrait des modifications.
  • chercher les différences avec ART (le remplaçant de Dalvik dans les nouvelles versions) et si de même il ne permet pas certaines modifications.
  • comparer les méthodes de protection entre les différentes applications qui se protègent d'une même modification (comparer les applis qui refusent le root, ...).

Ressources :
suhide : http://forum.xda-developers.com/apps/supersu/suhide-t3450396
how to remove google ads from apk : http://forum.xda-developers.com/showthread.php?t=1989897
apk multi tool linux : https://github.com/APK-Multi-Tool/APK-Multi-Tool-Linux
guide reverse engineering : https://www.rsaconference.com/writable/presentations/file_upload/stu-w02b-beginners-guide-to-reverse-engineering-android-apps.pdf
androguard : https://github.com/androguard/androguard
xmodgames : http://www.xmodgames.com/faq/789.html

contact : mathieu.valois at unicaen.fr et thomas.gougeon at ensicaen.fr