We present a methodology for generating a characterization of the memory used by an assembly program, as well as a formal proof that the assembly is bounded to the generated memory regions. A formal proof of memory usage is required for compositional reasoning over assembly programs. Moreover, it can be used to prove low-level security properties, such as integrity of the return address of a function. Our verification method is based on interactive theorem proving, but provides automation by generating pre- and postconditions, invariants, control-flow, and assumptions on memory layout. As a case study, three binaries of the Xen hypervisor are disassembled. These binaries are the result of a complex build-chain compiling production code, and...
Our objective is to propose methods for resource-aware compilation inspired by the implicit complexi...
A number of questions regarding programs involving heap-based data structures can be phrased as ques...
Runtime stacks are critical components of any modern software — they are used to implement powerful ...
We present a methodology for generating a characterization of the memory used by an assembly program...
We present a Coq-based system to certify the entire process of implementing declarative mathematical...
Part of the Lecture Notes in Computer Science book series (LNCS, volume 12167).We present an origina...
International audienceWe present an approach for proving behavioral properties of numerical programs...
This paper presents an approach to analyze stack-based assembly code with respect to leakages of pri...
We present an approach for proving behavioral properties of numerical programs by analyzing their co...
AbstractFormal verification of embedded software systems often requires a low-level representation o...
Systems code is almost universally written in the C programming language or a variant. C has a very ...
AbstractWith today’s dissemination of embedded systems manipulating sensitive data, it has become im...
With today's dissemination of embedded systems manipulating sensitive data, it has become important ...
Abstract. We present a first-order linearly typed assembly language, HBAL, that allows the safe reus...
Systems code is almost universally written in the C programming language or a variant. C has a very ...
Our objective is to propose methods for resource-aware compilation inspired by the implicit complexi...
A number of questions regarding programs involving heap-based data structures can be phrased as ques...
Runtime stacks are critical components of any modern software — they are used to implement powerful ...
We present a methodology for generating a characterization of the memory used by an assembly program...
We present a Coq-based system to certify the entire process of implementing declarative mathematical...
Part of the Lecture Notes in Computer Science book series (LNCS, volume 12167).We present an origina...
International audienceWe present an approach for proving behavioral properties of numerical programs...
This paper presents an approach to analyze stack-based assembly code with respect to leakages of pri...
We present an approach for proving behavioral properties of numerical programs by analyzing their co...
AbstractFormal verification of embedded software systems often requires a low-level representation o...
Systems code is almost universally written in the C programming language or a variant. C has a very ...
AbstractWith today’s dissemination of embedded systems manipulating sensitive data, it has become im...
With today's dissemination of embedded systems manipulating sensitive data, it has become important ...
Abstract. We present a first-order linearly typed assembly language, HBAL, that allows the safe reus...
Systems code is almost universally written in the C programming language or a variant. C has a very ...
Our objective is to propose methods for resource-aware compilation inspired by the implicit complexi...
A number of questions regarding programs involving heap-based data structures can be phrased as ques...
Runtime stacks are critical components of any modern software — they are used to implement powerful ...