more alt text
All checks were successful
/ test_checkout (push) Successful in 45s

This commit is contained in:
Jean-Marie 'Histausse' Mineau 2025-11-15 15:51:36 +01:00
parent c998dc27ac
commit f127c5533e
Signed by: histausse
GPG key ID: B66AEEDA9B645AD2
5 changed files with 95 additions and 28 deletions

View file

@ -312,7 +312,23 @@ Par exemple, nous avons tracé l'évolution du taux de finition en fonction de l
image(
"../3_rasta/figs/finishing-rate-by-year-of-java-based-tools.svg",
width: 90%,
alt: ""
alt: (
"Graphe montrant le taux de finition en ordonées (de 0 à 100%) ",
"et l'année les applications ont été découvertes pour la première ",
"fois en abscisse (de 2010 à 2023). ",
"Il y a une courbe pour chacun des outils suivant: anadroid, blueseal ",
"dialdroid, didfail, droidsafe, flowdroid, gator, ic3, ic3_fork, ",
"iccta, perfchecker, et saaf. ",
"saaf, ic3, ic3_fork et gator commencent en 2010 entre 95% et 100%. ",
"blueseal est autour de 90%, flowdroid 70%, didfail 60%, ",
"perfchecker, iccta et dialdroid entre 45% et 55%, ",
"gator 40%, et anadroid 15%. ",
"Ils chuttent tous au cour du temps, finissant autour de 75% pour ",
"gator, 60% pour ic4, 40% pour perfchecker et entre 0% et 20% pour ",
"les autres. ",
"On peut remarquer que saaf chutte soudainement entre 2014 et 2017, ",
"et ic3_fork commence a chutter après 2017."
).join()
),
caption: [Taux de finition des outils basé sur Java au cours des ans],
) <fig:rasta-exit-evolution-java-fr>
@ -399,28 +415,27 @@ Aussi, le code contenu fichier `classes100.dex` peut être utilisé par Android,
Plus surprenant, de code contenu dans un fichier `classes1.dex` ou `classes02.dex` ne serra pas utilisé.
Lors de l'analyse statique d'applications, ces deux points peuvent mener à des complications que nous allons maintenant explorer.
#todo[traduire en francais @lst:algo-cl]
#figure(
```python
def get_mutli_dex_classses_dex_name(index: int):
if index == 0:
def obtenir_multi_dex_classes_nom_dex(indice: int):
if indice == 0:
return "classes.dex"
else:
return f"classes{index+1}.dex"
return f"classes{indice+1}.dex"
def load_class(class_name: str):
if is_platforn_class(class_nane):
return load_from_boot_class_loader(class_name)
def charge_classe(nom_classe: str):
if est_class_platforme(nom_classe):
return charge_depuis_chargeur_class_boot(nom_classe)
else:
index = 0
dex_file = get_nutli_dex_classses_dex_name(index)
while file_exists_in_apk(dex_file) and \
not class_found in_dex_file(class_name, dex_file):
index += 1
if file_exists_in apk(dex_file):
return load_from_file(dex_file, class_name)
indice = 0
fichier_dex = obtenir_multi_dex_classes_nom_dex(indice)
while fichier_existe_dans_apk(fichier_dex) and \
not classe_non_trouvee_dans_fichier_dex(nom_classe, fichier_dex):
indice += 1
if fichier_existe_dans_apk(fichier_dex):
return charge_depuis_fichier(fichier_dex, nom_classe)
else:
raise ClassNotFoundrror()
raise ErreurClasseNonTrouvee()
```,
caption: [Algorithme de chargement de classe par défaut pour les applications Android],
) <lst:algo-cl>

View file

@ -46,8 +46,6 @@ The container images used to run the different tools are available on Zenodo at
The list of applications we scanned in @sec:cl, as well as the lists of platform classes, fields and, methods we extracted from the emulators for Android #SDKs 32, 33, and 34, are stored on Zenodo at https://doi.org/10.5281/zenodo.15846481.
#jfl-note[Et le dataset utilsé pour évaluer les outils?]
== Theseus
The scripts we used for dynamic analysis and the code implementing the transformations described in @sec:th are available at the following locations: