2021
DOI: 10.1145/3426470
|View full text |Cite
|
Sign up to set email alerts
|

Analyzing Dynamic Code

Abstract: Dynamic languages, such as JavaScript, employ string-to-code primitives to turn dynamically generated text into executable code at run-time. These features make standard static analysis extremely hard if not impossible, because its essential data structures, i.e., the control-flow graph and the system of recursive equations associated with the program to analyze, are themselves dynamically mutating objects. Nevertheless, assembling code at run-time by manipulating strings, such as by eval … Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
5

Citation Types

1
18
0

Year Published

2021
2021
2024
2024

Publication Types

Select...
4
2

Relationship

2
4

Authors

Journals

citations
Cited by 13 publications
(19 citation statements)
references
References 34 publications
1
18
0
Order By: Relevance
“…Recently, several techniques have been proposed for JavaScript code obfuscation 1 , meaning that also client-side code protection is becoming an increasingly important problem to be tackled by the research community and by practitioners. Hence, it is not always possible to simply ignore eval without accepting to lose the possibility of analyzing the rest of the program [3]. str = " x =5"; while ( i < 3) { str = str + "5"; i = i + 1; } str = str + ";"; eval ( str ) ; The Context: Analyzing Dynamic Code.…”
Section: Introductionmentioning
confidence: 99%
See 4 more Smart Citations
“…Recently, several techniques have been proposed for JavaScript code obfuscation 1 , meaning that also client-side code protection is becoming an increasingly important problem to be tackled by the research community and by practitioners. Hence, it is not always possible to simply ignore eval without accepting to lose the possibility of analyzing the rest of the program [3]. str = " x =5"; while ( i < 3) { str = str + "5"; i = i + 1; } str = str + ";"; eval ( str ) ; The Context: Analyzing Dynamic Code.…”
Section: Introductionmentioning
confidence: 99%
“…This happens because program data structures, such as the control-flow graph and the system of recursive equations associated with the program in question, are themselves dynamically mutating objects. Recently [3], the problem of analyzing dynamic code has been tackled by treating code as any other dynamic structure that can be statically analyzed by abstract interpretation, and to treat the abstract interpreter as any other program function that can be recursively called. In particular, in [3], we provide a static analyzer architecture for a core dynamic language, containing non-removable eval statements, that still has some limitation in terms of precision but provides the necessary ground for studying more precise solutions to the problem.…”
Section: Introductionmentioning
confidence: 99%
See 3 more Smart Citations