====== Reverse Engineering SS 2017 ====== * Schriftl. Klausur (wohl seit SS 2016) * Prüfer: Tilo Müller * Struktur mit 5-6 Aufgaben und Aufgabenarten wurden bereits in der Vorlesung mitgeteilt * Keine Hilfsmittel * 14 Seiten, davon ca. 2-3 Seiten nur Angabe und evtl. eingezeichnete Notizen/Markierungen * Dieses Mal nur Intel-Syntax vorgekommen, kein AT&T * Aufgaben * Teil 1 (Lückentext) * Angeben, ob ca. 20 Beispiele einzelner Befehle in Intel-Assembler-Syntax gültige Befehle beschreiben, oder warum nicht. [je 1/2P] * ??? * Teil 2 (Freitext) * ??? * Unterschiede test/cmp? Was beschreiben die Flags ZF/SF/CF/OF? * ??? * Teil 3 (Diagramme) * Aufbau Instruktionen beschreiben; anhand von Beispiel (1 Befehl vorgegeben: Hex & Assembly) demonstrieren * ??? * ??? * Abkürzung TEB/PEB erklären, TEB zeichnen, 4 Inhalte von TEB beschreiben, Assemblercode für TEB-Pointer-Abruf schreiben, was ist dabei bei 64bit-Systemen zu beachten? * Teil 4 (Struct) [12P] * Nonsense-Struct mit Pointer auf sich selbst, ints, shorts, int[]s und char[]s aus Algo (Unteraufrufe an strcpy und malloc) analysieren, signed/unsigned wo möglich angeben; als C-Code darstellen. * Teil 5 (Algo) [12P] * rekursiven Assemblercode für ggT-Funktion in C-Code umwandeln, dazu Struktur des Assemblercodes markieren * Teil 6 (Exploit) [12P] * Assembler-Programm in Shellcode umwandeln (Stack-ASLR beachten) [6P] * geeignete Exploit-Technik auswählen, Stack um strcpy-Aufruf mit Exploit zeichnen -- strcpy-Header war leider nicht gegeben, Aufrufkonvention war auch nur zu erraten. [6P] Ein etwas umfangreicherer Braindump findet sich hier: [[https://pad.stuve.fau.de/p/r.e84bb6126c0712f9d9117d9dacf392e5]][[https://pad.stuve.fau.de/p/re_klausur_2017|(edit)]]