2019
DOI: 10.1002/stvr.1722
|View full text |Cite
|
Sign up to set email alerts
|

Memory models in symbolic execution: key ideas and new thoughts

Abstract: Symbolic execution is a popular program analysis technique that allows seeking for bugs by reasoning over multiple alternative execution states at once. As the number of states to explore may grow exponentially, a symbolic executor may quickly run out of space. For instance, a memory access to a symbolic address may potentially reference the entire address space, leading to a combinatorial explosion of the possible resulting execution states. To cope with this issue, state-of-the-art executors either concretiz… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
4
0

Year Published

2020
2020
2023
2023

Publication Types

Select...
6
1
1

Relationship

3
5

Authors

Journals

citations
Cited by 13 publications
(4 citation statements)
references
References 35 publications
(81 reference statements)
0
4
0
Order By: Relevance
“…angr also has a feature to support generating path constraints from an entire lookup table [6] which we investigated, but we were not able to set up an appropriate experimental comparison as of this submission. In the example we tried, it appeared that angr did successfully generate a lookup table but it concluded that the path, on which the CRC of the symbolic input matched the concrete target, was infeasible.…”
Section: B Resultsmentioning
confidence: 99%
“…angr also has a feature to support generating path constraints from an entire lookup table [6] which we investigated, but we were not able to set up an appropriate experimental comparison as of this submission. In the example we tried, it appeared that angr did successfully generate a lookup table but it concluded that the path, on which the CRC of the symbolic input matched the concrete target, was infeasible.…”
Section: B Resultsmentioning
confidence: 99%
“…To mitigate this problem, Qs y m [4] has proposed a concolic executor built through dynamic binary instrumentation (DBI) that cuts down the time spent for running the program by maintaining only the symbolic state and offloads completely the concrete state to the native c P u . Additionally, it simplifies the symbolic state by concretizing symbolic addresses [22], [23] but also generates inputs that can lead the program to access alternative mem-ory locations. More recently, SYMCC [5] has improved the design of Qs y m by proposing a source-based instrumentation approach that further reduces the emulation time.…”
Section: Concolic Executionmentioning
confidence: 99%
“…Its scheme brings byte manipulations and table lookups relevant for transformation functions of variable complexity that users may obfuscate. In the presence of table lookups, using concrete values for input-dependent pointers is no longer effective (even counterproductive) for DSE engines for exploring relevant states, thus we enable the per-page theory-of-arrays [15] memory model of S2E. S2E could thus recover a 6-byte input in approximately 102 seconds for the original implementation, 180 for 2VM-imp last , 281 for 2VM-imp all , and 1622 for 3VM-imp last .…”
Section: Deployabilitymentioning
confidence: 99%