normalization and move french to the end
All checks were successful
/ test_checkout (push) Successful in 1m51s
All checks were successful
/ test_checkout (push) Successful in 1m51s
This commit is contained in:
parent
4e38131df5
commit
c3a27f8711
7 changed files with 57 additions and 53 deletions
|
@ -111,12 +111,12 @@ android.jar en version 9 qui génère des erreurs
|
|||
|
||||
During the running of our experiment, we parsed the standard output and error to capture:
|
||||
|
||||
- Java errors and stack traces
|
||||
- Python errors and stack traces
|
||||
- Ruby errors and stack traces
|
||||
- Log4j messages with a "ERROR" or "FATAL" level
|
||||
- XSB error messages
|
||||
- Ocaml errors
|
||||
- Java errors and stack traces.
|
||||
- Python errors and stack traces.
|
||||
- Ruby errors and stack traces.
|
||||
- Log4j messages with a "ERROR" or "FATAL" level.
|
||||
- XSB error messages.
|
||||
- Ocaml errors.
|
||||
|
||||
For example, Dialdroid reports an average of #num(55.9) errors for one successful analysis.
|
||||
On the contrary, some tools, such as Blueseal report very few errors at a time, making it easier to identify the cause of the failure.
|
||||
|
|
|
@ -13,8 +13,8 @@ During the packaging and testing of the tools we examined in our experiment, the
|
|||
To make a tool easy to reuse, it should have documentation with at least:
|
||||
- Instructions about how to install the dependencies.
|
||||
- Instructions about how to build the tool (if the tool needs to be built).
|
||||
- Instructions about how to use the tool (#eg command line arguments)
|
||||
- Instructions about how to interpret the results of the tools (we only checked for the existence of the results in our experiment, but we found that some results can be quite obscure)
|
||||
- Instructions about how to use the tool (#eg command line arguments).
|
||||
- Instructions about how to interpret the results of the tools (we only checked for the existence of the results in our experiment, but we found that some results can be quite obscure).
|
||||
In addition to the documentation, a minimum working example with the expected result of the tools allows a potential user to check if everything is working as intended.
|
||||
This #MWE have the additional benefit that it can serve as an example in the documentation.
|
||||
|
||||
|
|
|
@ -114,7 +114,7 @@ With such a hypothesis, the delegation process can be modelled by the pseudo-cod
|
|||
|
||||
In addition, it is important to distinguish the two types of #platc handled by `BootClassLoader` and that both have priority over classes from the application at runtime:
|
||||
|
||||
- the ones available in the *#Asdk* (normally visible in the documentation);
|
||||
- the ones available in the *#Asdk* (normally visible in the documentation).
|
||||
- the ones that are internal and that should not be used by the developer. We call them *#hidec*~@he_systematic_2023 @li_accessing_2016 (not documented).
|
||||
|
||||
As a preliminary conclusion, we observe that a priority exists in the class loading mechanism and that an attacker could use it to prioritise an implementation over another one.
|
||||
|
|
|
@ -8,7 +8,7 @@ In this section, we will present those issues and potential avenues of improveme
|
|||
|
||||
=== Bytecode Transformation
|
||||
|
||||
#paragraph[Custom Classloaders][
|
||||
#paragraph[Custom Class Loaders][
|
||||
The first obvious limitation of our bytecode transformation is that we do not know what custom class loaders do, so we cannot accurately reproduce statically their behaviour.
|
||||
We elected to fallback to the behaviour of the `BaseDexClassLoader`, which is the highest Android-specific class loader in the inheritance hierarchy, and whose behaviour is shared by all class loaders except `DelegateLastClassLoader`.
|
||||
The current implementation of the #ART enforces some restrictions on the class loader's behaviour to optimise the runtime performance by caching classes.
|
||||
|
@ -22,7 +22,7 @@ A more reasonable approach would be to improve the static analysis to intercept
|
|||
This would allow us to collect a mapping $("class loader", "class name") -> "class"$ that can then be used when renaming colliding classes.
|
||||
]
|
||||
|
||||
#paragraph[Multiple Classloaders for one `Method.invoke()`][
|
||||
#paragraph[Multiple Class Loaders for one `Method.invoke()`][
|
||||
Although we managed to handle calls to different methods from one `Method.invoke()` site, we do not handle calling methods from different class loaders with colliding class definitions.
|
||||
The first reason is that it is quite challenging to compare class loaders statically.
|
||||
At runtime, each object has a unique identifier that can be used to compare them over the course of the same execution, but this identifier is reset each time the application starts.
|
||||
|
|
36
main.typ
36
main.typ
|
@ -95,19 +95,6 @@
|
|||
|
||||
include("0_preamble/acknowledgements.typ")
|
||||
|
||||
// https://ed-matisse.doctorat-bretagne.fr/fr/soutenance-de-these#p-151
|
||||
// > Le manuscrit est normalement rédigé en français (Loi relative à l'emploi de la langue française, 1994).
|
||||
// > Toutefois, il est accepté de bâtir le manuscrit sur la base d'un résumé substantiel en français
|
||||
// > (au moins 4 pages), le reste du manuscrit étant considéré comme des annexes et étant alors rédigé en
|
||||
// > langue étrangère.
|
||||
// >
|
||||
// > Dans le cas d'une thèse qui ne serait pas rédigée en français, il est conseillé de bien distinguer le
|
||||
// > résumé substantiel des chapitres de la thèse pour éviter d'essuyer un refus de la part de
|
||||
// > l'administration de l'établissement d'inscription (par exemple en l'intitulant résumé en français et
|
||||
// > en ne lui affectant aucun numéro de chapitre).
|
||||
//
|
||||
include("0_preamble/french_summary.typ")
|
||||
|
||||
outline(title: "Table of Contents", indent: auto)
|
||||
show outline.entry: it => {
|
||||
v(5mm, weak: true)
|
||||
|
@ -137,9 +124,6 @@
|
|||
// Keep interline in table
|
||||
#show table: set par(leading: 0.65em) if paper_draft
|
||||
|
||||
#todo[Normalize classloaders vs class loaders]
|
||||
#todo[Normalize bullets/item: either end with a '.' or a ';']
|
||||
|
||||
#include("1_introduction/main.typ")
|
||||
#include("2_background/main.typ")
|
||||
#include("3_rasta/main.typ")
|
||||
|
@ -148,3 +132,23 @@
|
|||
#include("6_conclusion/main.typ")
|
||||
|
||||
#bibliography("bibliography.bib")
|
||||
|
||||
#{
|
||||
set heading(numbering: none, outlined: false)
|
||||
set figure(outlined: false)
|
||||
set page(numbering: "i")
|
||||
counter(page).update(0)
|
||||
|
||||
// https://ed-matisse.doctorat-bretagne.fr/fr/soutenance-de-these#p-151
|
||||
// > Le manuscrit est normalement rédigé en français (Loi relative à l'emploi de la langue française, 1994).
|
||||
// > Toutefois, il est accepté de bâtir le manuscrit sur la base d'un résumé substantiel en français
|
||||
// > (au moins 4 pages), le reste du manuscrit étant considéré comme des annexes et étant alors rédigé en
|
||||
// > langue étrangère.
|
||||
// >
|
||||
// > Dans le cas d'une thèse qui ne serait pas rédigée en français, il est conseillé de bien distinguer le
|
||||
// > résumé substantiel des chapitres de la thèse pour éviter d'essuyer un refus de la part de
|
||||
// > l'administration de l'établissement d'inscription (par exemple en l'intitulant résumé en français et
|
||||
// > en ne lui affectant aucun numéro de chapitre).
|
||||
//
|
||||
include("0_preamble/french_summary.typ")
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue