A. Zündorf, SE Group Reverse Engineering K2 1 Ziele Heute Compilerbau Nachlese Ausnutzung von Laufzeittypinformation.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
Harald Köbler Software Design Patterns Prototype.
Technische Universität Dortmund
Einführung in die Programmierung Ausführbare Klassen
Kapselung , toString , equals , Java API
Kapitel 4 Syntaktische Analyse: LR Parsing.
Parser generieren Yet Another Compiler – Compiler YACC.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Assoziationen (Beziehungen). Zwischen Objekten kann es eine Beziehung geben.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Grundlegende Analysen & Zwischendarstellungen
3. Klassendiagramme in Java implementieren
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Compilerbau und Reverse Engineering m Vorlesung im Wintersemester.
Reverse Engineering K2 1 Ziele Heute Nachlese Volltextsuche Dokumentation in Quelltext einbetten JavaDoc Vorbereitung für Compileransatz.
1 Reverse Engineering WS 07 / 08 A. Zündorf. Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University 2 Organisatorisches.
A. Zündorf, SE Group Reverse Engineering K2 1 Übersicht 1.Quelltextanalyse mit regulären Ausdrücken 2.Compilertechniken 3.Prozessanalyse 4.Dynamische Analyse.
Reverse Engineering Neuentwicklung von Software ist die Ausnahme => Weiterentwicklung von Legacy-Systemen Designdokumentation veraltet Aufgabenstellung:
A. Zündorf, SE Group Reverse Engineering K2 1 Reverse Engineering: Ziele Heute Compileransatz, die Zweite Findet UMLClass getName() Vorkommen Completion.
A. Zündorf, SE Group Reverse Engineering K2 1 Übersicht 1.Quelltextanalyse mit regulären Ausdrücken 2.Compilertechniken 3.Prozessanalyse 4.Dynamische Analyse.
A. Zündorf, SE Group Reverse Engineering K2 1 Übersicht 1.Quelltextanalyse mit regulären Ausdrücken 2.Compilertechniken 3.Prozessanalyse 4.Dynamische Analyse.
A. Zündorf, SE Group Reverse Engineering K2 1 Ziele Heute Compilerbau Nachlese Ausnutzung von Laufzeittypinformation.
Reverse Engineering 1 Reverse Engineering WS 04 / 05 A. Zündorf.
A. Zündorf, SE Group Reverse Engineering K2 1 Übersicht 1.Quelltextanalyse mit regulären Ausdrücken 2.Compilertechniken 3.Prozessanalyse 4.Dynamische Analyse.
A. Zündorf, SE Group Reverse Engineering K2 1 Übersicht 1.Quelltextanalyse mit regulären Ausdrücken 2.Compilertechniken 3.Prozessanalyse 4.Dynamische Analyse.
A. Zündorf, SE Group Reverse Engineering K2 1 Übersicht 1.Quelltextanalyse mit regulären Ausdrücken 2.Compilertechniken 3.Prozessanalyse 4.Dynamische Analyse.
DVG Einführung in Java1 Einführung in JAVA.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Bestimmung des ggT zweier Zahlen
Verzweigung.
Informatikunterricht mit Java
Struktogramme IF-ELSE FOR – Schleife
Von der Sprache zum Programm
Programmiersprachen II Integration verschiedener Datenstrukturen
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Informatik 1 Letzte Übung.
Style Guidelines für Java und .NET
Variablenkonzept Klassisch, in Java Basistyp
Programmiervorkurs WS 2014/15 Methoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
© 2004 Pohlig Informatik Kurse © 2004 Pohlig Informatik Kurse Der Tramp tanzt die Rekursion zünderUntersuchen(…) Basisfall Rückmeldung:
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Java Programme nur ein bisschen objektorientiert.
Einführung in AspectJ ● Inhalt: 1)Überblick 2)Elemente des crosscuttings in AspectJ 3)„Hello World“ in AspectJ 4)Wie Aspekte in Java verwoben werden 5)Join.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Java-Kurs - 4. Übung weitere Kontrollstrukturen
Dynamisches Laden von Klassen
Cäsar-Verschlüsselung
Grundkurs Informatik mit Java
Es gibt Klassen, die mit der Entwicklungsumgebung ausgeliefert werden
Cäsar-Verschlüsselung
Implementieren von Klassen
 Präsentation transkript:

A. Zündorf, SE Group Reverse Engineering K2 1 Ziele Heute Compilerbau Nachlese Ausnutzung von Laufzeittypinformation

A. Zündorf, SE Group Reverse Engineering K2 2 Compilerbau Nachlese reguläre Ausdrücke: einfach aber ungenau Compilerbau: –genaue Analyse der Struktur von Texten –Analyse von "statischer" Semantik per Symboltabelle (Cross Reference Table) –Datenflussanalyse: "read-from" Beziehung –Kontrollflulssanalyse: Ausführungsreihenfolgen –Slicing: wer hat hier zum Wert der Variablen X beigetragen? Übung zu Hause: –Jeder: selber die Parserübungen programmieren –Importe mit Berücksichtigen –if / while / for mit analysieren: wird in jedem Fall ein return ausgeführt?

A. Zündorf, SE Group Reverse Engineering K2 3 Compiler Compiler / Parser können von Compiler Compilern generiert werden z.B.: lex/yacc (veraltet), Eli, javacc (Standard für Java) Back-End in die Grammatik einbauen: Standard Back-End zur Erzeugung eines abstrakten Syntaxbaums z.B.: JTB (Java Tree Builder) Siehe Fujaba JavaParser Plugin

A. Zündorf, SE Group Reverse Engineering K2 4 Ausnutzung von Laufzeittypinformation schreibt Methode ClassFinder.addDotClassToSymbolTable() benutz java.lang.reflect –Class.forName (String) –Class. getDeclaredMethods () Method.getName ()... –Class.getDeclaredFields () Field.getName()... –Class.getInterfaces () –Class.getSuperClass () testet im Dobs ClassFinder.addDotClassToSymbolTable ("java.lang.System"),...