|
“Symcrete” memory model with lazy initialization and objects of symbolic sizes in KLEE
S. A. Morozova, A. V. Misonizhnikb, D. A. Mordvinovc, D. V. Koznovc, D. A. Ivanovd a National Research University Higher School of Economics
b IT Solutions Inc.
c Saint Petersburg State University
d Huawei Technologies Co., Ltd.
Abstract:
Dynamic symbolic execution is a well-known technique for testing applications. It introduces symbolic variables – program data with no concrete value at the moment of instantiation – and uses them to systematically explore the execution paths in a program under analysis. However, not every value can be easily modelled as symbolic: for instance, some values may take values from restricted domains or have complex invariants, hard enough to model using existing logic theories, despite it is not a problem for concrete computations. In this paper, we propose an implementation of infrastructure for dealing with such “hard-to-be-modelled” values. We take the approach known as symcrete execution and implement its robust and scalable version in the well-known KLEE symbolic execution engine. We use this infrastructure to support the symbolic execution of LLVM programs with complex input data structures and input buffers with indeterminate sizes.
Keywords:
symbolic execution, software analysis, lazy initialization, symcrete execution, smt-solvers
Citation:
S. A. Morozov, A. V. Misonizhnik, D. A. Mordvinov, D. V. Koznov, D. A. Ivanov, ““Symcrete” memory model with lazy initialization and objects of symbolic sizes in KLEE”, Proceedings of ISP RAS, 35:3 (2023), 91–108
Linking options:
https://www.mathnet.ru/eng/tisp789 https://www.mathnet.ru/eng/tisp/v35/i3/p91
|
Statistics & downloads: |
Abstract page: | 27 | Full-text PDF : | 21 |
|