Formal verification of memory preservation of x86-64 binaries

1Citations
Citations of this article
5Readers
Mendeley users who have this article in their library.
Get full text

Abstract

Formal verification of a binary can provide high software assurance, even when the source code is unavailable. It is, however, inherently hard due to the low level of abstraction involved; instead of verifying typed and structured source code, one has to verify machine code or reconstructed assembly. This paper presents a semi-automated methodology for formally verifying memory preservation, as well as register preservation, over disassembled binaries. The methodology is based on formal symbolic execution and Floyd-style verification. We show that the methodology is compositional on the function level, which is crucial for scalability. The methodology works for loops, recursion, and both optimized and non-optimized code. It can be used to expose preconditions required for non-exceptional behavior. We demonstrate applicability by verifying a set of functions from the HermitCore unikernel library.

Cite

CITATION STYLE

APA

Bockenek, J. A., Verbeek, F., Lammich, P., & Ravindran, B. (2019). Formal verification of memory preservation of x86-64 binaries. In Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) (Vol. 11698 LNCS, pp. 35–49). Springer Verlag. https://doi.org/10.1007/978-3-030-26601-1_3

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free