#import "../lib.typ": epigraph, highlight-block, todo

= The Application of Theseus: After Adding Runtime Data, it is Still Your Application <sec:th>

//#epigraph("Plutarch, Life of Theseus 23.1")[The ship wherein Theseus and the youth of Athens returned from Crete had thirty oars, and was preserved by the Athenians \[...\] for they took away the old planks as they decayed, putting in new and strong timber in their places]
#epigraph("Undertale, Toby Fox")[Despite everything, it's still you.]

#align(center, highlight-block(inset: 15pt, width: 75%, block(align(left)[
  Some applications use dynamic code loading and reflection calls that prevent static analysis tools from analysing the complete application.
  Those behaviours can be analysed with dynamic analysis; however, the information collected is not enough to analyse the application: most tools do not have a way to process this additional data.
  In this chapter, we propose to use dynamic analysis to collect information related to dynamic code loading and reflection, and to encode this information in the bytecode of the application to allow further analysis.
  We compared the results of analysis on applications before and after the transformation, using tools like Flowdroid or Androguard, and found that the additional information is indeed processed by the tools.
  We also compared the finishing rate of the tools, using the same experiment as in @sec:rasta, and found that the finishing rate is generally only slightly negatively impacted by the transformation.
])))

#include("1_introduction.typ")
#include("2_overview.typ")
#include("3_static_transformation.typ")
#include("4_dynamic_data_collection.typ")
#include("5_results.typ")
#include("6_limits.typ")
#include("7_conclusion.typ")
