thesis/3_rasta/8_futur_works.typ
Jean-Marie Mineau e794c037e8
rasta
2025-08-17 00:10:58 +02:00

59 lines
2.8 KiB
Typst

#import "../lib.typ": jfl-note, etal, APKs
#import "X_var.typ": tool_info
#import "X_lib.typ": ok
== Futur Works <sec:rasta-futur>
A first extention to this work would obviously be to studdy more tools.
We restricted ourself to the tools listed by Li #etal, but it would interesting to compare our result to the finishing rate of recently released tools.
It would be interesting to see if they are better at handling large #APKs, but also to see if older applications are more challenging for them due to discontinued features.
Another avenue would be to define a benchmark to check the ability of tools to handle real-world applications.
Our dataset is much to large for a simple benchmark, and is sampled to have a variety of application size and year of publication.
Hence, the first step would be to sample a dataset for this benchmark.
Current benchmark datasets focus on accuracy of the tested tools, with difficult to analyse applications.
It could be instesting to extract from our result some of applications that the most tools failed to analyse, and either use them directly or studdy them to craft simpler applications reproducing the same challenged as those applications.
Such dataset would need to be updated regularly: we saw that there is a trend for newer applications to be harder to analyse, a frozen dataset would ignore this factor.
In addition to the finishing rate, it would be both interesting and usefull to have reference value.
@tab:rasta-rec-deps list common Android related dependencies we encontered when packaging the tools.
We can see that each tools use at least one of those dependencies.
It would be resonnable to consider the best finishing ratio a tool can have to be the finishing ratio of a tool that would perfom an "empty analysis" using the same dependencies.
Considering the prevalence of those dependencies, having those theoritical minimum could also guide future tool developers when choosing their dependencies.
#figure({
//show table: set text(size: 0.80em)
let ko = []
table(
columns: 4,
inset: (x: 0% + 5pt, y: 0% + 2pt),
stroke: none,
align: center+horizon,
table.hline(),
table.header(
table.cell(colspan: 4, inset: 3pt)[],
[Tool],
table.vline(end: 3),
table.vline(start: 4),
[Soot],
[Androguard],
[Apktool],
),
table.cell(colspan: 4, inset: 3pt)[],
table.hline(),
table.cell(colspan: 4, inset: 3pt)[],
..tool_info
.map(entry => (
[#entry.tool_name],
if entry.use_soot { ok } else { ko },
if entry.use_androguard { ok } else { ko },
if entry.use_apktool { ok } else { ko },
)).flatten(),
table.cell(colspan: 4, inset: 3pt)[],
table.hline(),
)
},
placement: none, // small section: floating figure makes this table go in another section
caption: [Commonly found dependencies],
) <tab:rasta-rec-deps>