Statische Analyse � Was ist das? � Was mache ich damit? � Wie funktioniert das? � Wie benutze ich das? � Demo ◦ Find. Bugs ◦ STAN 4 j ◦ IDA Pro � Fragen?
Was ist das? � Analyse eines Programms, ohne es auszuführen ( dynamische Analyse) � Anwendung mathematischer Verfahren auf Programme-Code um Eigenschaften zu prüfen � Zwei Arten: ◦ Analyse des Source-Codes �Meist direkt auf dem AST der jeweiligen Sprache ◦ Analyse des Object-Codes �Wird oft in WHILE-ähnliche Sprachen übersetzt
Was mache ich damit? � Wird ◦ ◦ ◦ benutzt für: Optimierung (klassisch) Software-Qualität Sicherheit Reverse Engineering Korrektheit (-sbeweis) lint
Wie funktioniert das? � Methoden: ◦ Denotationelle Semantik �Abbildung von Zustandsräumen ◦ Operationelle Semantik �Schrittweise Zustandsänderung ◦ Axiomatische Semantik �Schlussregeln über Eingabe ◦ Abstrakte Interpretation �Verallgemeinerung/Teilweise (abstrakte) Ausführung � Möglichkeiten Halteproblem begrenzt durch das
Abstrakte Interpretation � Nachverfolgen des Control-Flows � Monotone Funktionen über Verbänden ◦ Praktisch: Mitführen eines Zustandsraumes durch das Programm � Ziel: Minimaler (möglichst präziser) Zustandsraum � Approximation von Fixpunkten bei Branches/Loops ◦ Beschränkung des Zustandsraumes ohne jede Iteration auszuführen ◦ z. B. durch Widening (aktuelle Forschung), abstrakte Domänen