Loop-Extended Symbolic Execution on Binary Programs

Loop-Extended Symbolic Execution on Binary Programs
1 · 2 · 3

symbolic length symbolic execution

1 They generalize symbolic execution to examining more than one execution path at a time by introducing symbolic variables for the number of times each loop executes and linking it to features as variable-length or repeating fields (what is it?). They examine a class of paths at a time. Can we do this not only for loops? They use term single-path symbolic execution (SPSE) for the common concolic. They present loop-extended symbolic execution (LESE). It performs more detailed analysis to identify loop-dependent variables (e.g. which variables is a linear function of index).

2 Their tests is for binary code. They said, concolic is a combination between dynamic and static analysis (they refer to EXE, DART, CUTE).

while (input[ptr] != DELIMITER) {
    // do something
    index++; ptr++;
if (index > 8) {...}

Single-path exploration does not have enough information to reason about index value. Is it a implicit dependency? 3 In SPSE some concrete values indirectly dependent on the input because of loops. In LESE they are symbolic. They introduce new class of symbolic variables—trip count. Each loop has a trip count (number of times loop has executed). Construct relationships: input ↔ trip count ↔ symbolic variable. They are looking for linear functions of the trip counts (covers a lot). For input ↔ count connection they introduce auxiliary input variables for lengths and repetition counts.

Sergey Vartanov, 2007–2020