DeepAI AI Chat
Log In Sign Up

Proof-Producing Symbolic Execution for Binary Code Verification

by   Andreas Lindner, et al.

We propose a proof-producing symbolic execution for verification of machine-level programs. The analysis is based on a set of core inference rules that are designed to give control over the tradeoff between preservation of precision and the introduction of overapproximation to make the application to real world code useful and tractable. We integrate our symbolic execution in a binary analysis platform that features a low-level intermediate language enabling the application of analyses to many different processor architectures. The overall framework is implemented in the theorem prover HOL4 to be able to obtain highly trustworthy verification results. We demonstrate our approach to establish sound execution time bounds for a control loop program implemented for an ARM Cortex-M0 processor.


page 1

page 2

page 3

page 4


Certifying C program correctness with respect to CH2O with VeriFast

VeriFast is a powerful tool for verification of various correctness prop...

Symbolic Loop Compilation for Tightly Coupled Processor Arrays

Loop compilation for Tightly Coupled Processor Arrays (TCPAs), a class o...

MetaEmu: An Architecture Agnostic Rehosting Framework for Automotive Firmware

In this paper we present MetaEmu, an architecture-agnostic emulator synt...

TrABin: Trustworthy Analyses of Binaries

Verification of microkernels, device drivers, and crypto routines requir...

Reproducible Execution of POSIX Programs with DiOS

In this paper, we describe DiOS, a lightweight model operating system wh...

Deriving AOC C-Models from D V Languages for Single- or Multi-Threaded Execution Using C or C++

The C language is getting more and more popular as a design and verifica...

Binsec/Rel: Efficient Relational Symbolic Execution for Constant-Time at Binary-Level

The constant-time programming discipline (CT) is an efficient countermea...