30.01.2014 Views

Annual Report 2010 - Fachgruppe Informatik an der RWTH Aachen ...

Annual Report 2010 - Fachgruppe Informatik an der RWTH Aachen ...

Annual Report 2010 - Fachgruppe Informatik an der RWTH Aachen ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Synthesizing Best Tr<strong>an</strong>sformers for Binary Code Analysis<br />

Jörg Brauer <strong>an</strong>d Andy King<br />

In August 2009, Jörg Brauer <strong>an</strong>d Andy King, have started a joint project to put forward the<br />

state-of-the-art in abstract interpretation of binary code. Andy King, who is working with the<br />

University of Kent in C<strong>an</strong>terbury <strong>an</strong>d Portcullis Computer Security Limited, is a widely<br />

appreciated expert in reasoning about low-level program sem<strong>an</strong>tics using satisfiability solving.<br />

The key observation this project is based on is that binary code behaves very differently<br />

compared to programs presented in high-level programming l<strong>an</strong>guages such as C, <strong>an</strong>d thus<br />

requires different verification methods. In particular, a single assignment in C is frequently<br />

compiled into a sequence of instructions, which leads to a tight coupling between the<br />

sem<strong>an</strong>tics of different instructions. Similarly, control logic is typically formulated in terms of<br />

Boole<strong>an</strong> relations over single bits. Following these two observations, the use of SAT-solving<br />

appears natural to reason about binary code.<br />

The key contribution of this cooperation lies in novel methods for synthesizing optimal<br />

abstract interpretations of binary programs, with a special focus on the integration of<br />

overflows that occur in machine arithmetic. The results have been published in two major<br />

conferences on program verification, namely the 17th International Static Analysis<br />

Symposium (SAS’10, Perpign<strong>an</strong>, Fr<strong>an</strong>ce) <strong>an</strong>d the 15th International Workshop on Formal<br />

Methods for Industrial Critical Systems (FMICS’10, Antwerp, Belgium). Two more papers are<br />

currently un<strong>der</strong> review. The cooperation of Jörg <strong>an</strong>d Andy has been supported by the Royal<br />

Society, the British national academy of sciences, with a international travel gr<strong>an</strong>t <strong>an</strong>d <strong>an</strong><br />

industrial secondment, the UMIC cluster of excellence, <strong>an</strong>d the DFG graduate school<br />

AlgoSyn.<br />

Synthesis of State Space Generators for Model Checking Microcontroller Assembly<br />

Code (DFG Research Training Group 1298 “AlgoSyn”)<br />

Dominique Gückel<br />

The [mc]square model checker verifies microcontroller programs by me<strong>an</strong>s of a simulator.<br />

The simulator is used to execute the program to be verified, <strong>an</strong>d thus to create the state space.<br />

As the model checking algorithm is separated from the microcontroller simulator, it is possible<br />

to add support for new platforms by adding new simulators. However, there are certain<br />

constraints which prevent us from using just <strong>an</strong>y simulator, such as the ones provided by<br />

device m<strong>an</strong>ufacturers. M<strong>an</strong>ually implementing simulators is possible, but time-consuming<br />

<strong>an</strong>d error-prone.<br />

The goal of our ongoing research in AlgoSyn is to improve the development process in the<br />

aforementioned two aspects. For this purpose, we have developed a synthesis system, centered<br />

around a new l<strong>an</strong>guage called State Space Generator Description L<strong>an</strong>guage (SGDL). The<br />

system is now in its second year of existence. In the first year, the primary goals were to<br />

363

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!