This commit is contained in:
Jean-Marie 'Histausse' Mineau 2025-09-11 09:49:07 +02:00
parent ed8bbd12e5
commit 5611281c56
Signed by: histausse
GPG key ID: B66AEEDA9B645AD2
5 changed files with 73 additions and 17 deletions

View file

@ -1,20 +1,66 @@
#import "../lib.typ": todo, epigraph
#import "../lib.typ": epigraph, APK, pb1-text-fr, pb2-text-fr, pb3-text-fr, eg
#let mp = text(font: "libertinus serif", sym.dot.c)
= Résumé en Français
#epigraph("Ellana Caldin, Le Pacte des Marchombres, Tome 1: Ellana, de Pierre Bottero")[Il y a deux réponses à cette question, comme à toutes les questions : celle du savant et celle du poète.]
== Introduction
#todo[
Write a "Substantial Summary" in french, at least 4 pages: https://ed-matisse.doctorat-bretagne.fr/fr/soutenance-de-these#p-151
]
Android est le système d'exploitation pour téléphones portables le plus utilisé depuis 2014, et depuis 2017, il surpasse même Windows toute platformes confondues.
Cette popularité en fait une cible de choix pour les acteurs malveillants.
Il est donc important d'être capable d'analyser une application pour savoir exactement ce qu'elle fait.
Ce processus est appelé l'ingénierie inverse.
#text(fill: luma(75%), lorem(200))
Beaucoup de travail à été fait dans ce domaine pour les programmes d'ordinateur.
Toutefois, les applications Android présentent leur propres difficultés.
Par example, les applications sont distribué dans leur format spécifique, le format #APK, et le code des applications est lui même compilé dans un format de code à octets spécifique à Android: Dalvik.
La première difficulté pour l'ingénieur#mp;e inverse est donc d'avoir des outils qui comprennent les formats utilisés par Android.
Dans le processus d'analyse, une première étape serait alors de lire le contenu de l'application.
Des outils comme Apktool peuvent être utilisé pour convertir les fichiers binaire de l'application dans une version lisible par un#mp;e humain#mp;e.
D'autres comme Jadx essaient de générer le code source Java depuis le code à octets.
Toutefois, les applications Android peuvent être trés grossent et il n'est pas toujours possible de les analyser manuellement.
D'autres outils ont été développer pour extraire une représentation plus haut niveau du contenu de l'application.
Par example, Flowdroid a pour objectif de détecter les fuites d'informations: l'utilisateur#mp;ice définit une liste de méthodes qui génèrent des informations sensbiles, et une liste de méthodes qui exfiltrent des informations vers l'extérieur.
Flowdroid va alors calculer si il existe des chemins dans l'application permettant de relier des méthodes de la première catégorie avec des méthodes de la seconde.
Malheureusement, ces outils sont difficile a utiliser, et même si ils fonctionnent sur des applications simples construitent dans le but de tester les outils, il n'est pas rare que ces outils échouent sur de vrais applications.
Cela pause la problématique #pb1-text-fr
Il y a deux familles d'analyse: l'analyse statique et l'analyse dynamique.
L'analyse statique analyse l'application sans la lancer, alors que l'analyse dynamique examine le comportement de l'application peudant son exécution.
Chacune a ses forces et ces faiblesses, et certain problèmes d'analyse sont traditionnellement associé à l'une ou l'autre pour les résoudre.
L'un de ces problème est le chargement dynamique de code.
Les applications Android sont initiallement prévu pour être codé en Java, et donc Android à hérité de beaucoup de fonctionnalités de Java.
En l'occurence, Android utilisent un systeme de chargeur de classes similaire à celui de Java, qui peut être utiliser pour charger, en cour d'exécution, du code extérieur à l'application.
Etant donné que ce code chargé dynamiquement n'est pas nécessairement disponnible dans l'application initiallement, ce problème est relégé a l'analyse dynamique.
Toutefois, il semblerais qu'une généralisation hâtive soit souvant faite, et que le système de chargement de classe dans sont ensemble soit relégé à l'analyse dynamique.
L'absence d'étude détaillé de ce mechanisme nous amène à notre seconde problématique: #pb2-text-fr
Un autre problème usuellement associé à l'analyse dynamique est la réflection.
Android permet à une application de manipuler les classes et méthodes sous forme d'objet.
En utilisant cette fonctionnalité, il est donc possible d'appeler une méthode en utilisant son nom sous forme de chaine de caractère au lieu d'utiliser une instruction Dalvik avec une référence vers méthode.
Ce cas est déjà compliqué à analyser statiquement quand la chaine de caractère est lisible dans l'application, mais il devient imposible quand elle ne l'ai pas (#eg la chaine est envoyé par un serveur externe lors de l'execution, ou elle est stocké chiffré est n'est déchiffré qu'au dernier moment).
L'analyse dynamique permet de capturer à la fois le code chargé dynamiquement et les méthodes appelés par reflection.
Toutefois, obtenir ces instructions est insuffisant.
Il n'existe pas de solutions standards pour transmettre ces données aux outils d'analysise statique, qui pourtant peuvent en avoir besoin pour analyser l'application dans sont entièreté.
Certaine contributions d'ingenierie inverse ont déjà proposé d'instrumenter (modifier) l'application pour y ajouter les résultats de leur analyse avant de l'analyser avec d'autres outils.
Cette approche prométeuse motive notre troisième problématique: #pb3-text-fr
== Evaluation de la réutilisabilité des outils d'analyse static pour Android
== Chargeurs de classes au milieu: Dérouter les analyseur static pour Android
== L'Application de Thésée: Même après avoir ajouté les informations d'exécution, c'est toujours votre application
== Conclusion
/*
* Vocabulaire:
* - Obfuscation: brouillage, Reverse Engineering: Ingénierie Inverse, jofr 1 jav 2013 https://www.legifrance.gouv.fr/jorf/jo/id/JORFCONT000026871045
* - Malware: Maliciel, https://cyber.gouv.fr/le-cyberdico#M
* - Bytecode: Code à octets, https://www.culture.gouv.fr/fr/thematiques/langue-francaise-et-langues-de-france/agir-pour-les-langues/moderniser-et-enrichir-la-langue-francaise/nos-publications/Vocabulaire-des-TIC-2017
*
*
* autres ref: