This commit is contained in:
parent
c998dc27ac
commit
f127c5533e
5 changed files with 95 additions and 28 deletions
|
|
@ -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 où 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>
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue