Prüfer: Tilo Müller
Beisitzer: Mykola Protsenko
Atmosphäre war sehr entspannt, Tilo ist geduldig, hilft einem auf die Sprünge, und ist absolut fair.
Assembly war auf Blatt gedruckt, drunter leere Stacks, die man beschreiben durfte, auf der Rückseite wurden dann die restlichen Sachen aufgemalt. Für den Exploit gab es im Endeffekt das Bild aus der Vorlesung mit einer eingezeichneten Position von ESP und EBP und man musste das Bild im weiteren Verlauf vervollständigen.
Hinweis: ich übernehme keine Garantie für Vollständigkeit oder Richtigkeit.
Assembly
32 bit; quersumme; gcc unoptimiert
(Was macht Windows bei 'nem printf? → da stand ich aufm Schlauch: da wird explizit auf cdecl gewechselt)
Parameteranzahl/-typ
div-Befehl erklären (Warum wird edx mit 0x0 initialisiert? → weil unsigned)
Basic Blocks einzeichnen (auch mit Pfeilen wo die jmps hingehen)
Stackframe zeichnen
Was passiert bei Framepointer Omission (FPO)? → anstatt ebp-relativ esp-relativ adressieren
Linear sweep + Recursive traversal
Wie funktionieren beide Algorithmen?
Wie kann man Linear Sweep besser dastehn lassen als Recursive Traversal? → worauf er raus wollte war, dass RT dem Code rekursiv folgt und ich letztlich durch rekursive Sprünge auf Daten den RT schlecht aussehen lassen kann, weil LS dem nicht folgt, RT aber schon und damit dann crasht.
Aufbau eines (x86-)Befehls
Wie groß kann so ein Befehl maximal werden? → 15 Byte
Wie ist der aufgebaut? (Das Bild aus der Vorlesung hinmalen und auch so ungefähr wissen wie groß die einzelnen Teile werden können), SIB wollte er bei mir noch genauer wissen (also 2 Bit Scale, 3 Index (Register), 3 Base (Register); welche Werte kann Scale annehmen und warum?) und wofür Displacement und Immediate verwendet werden.
Adressräume
Wie schaut der Adressraum auf 64 Bit Architekturen aus?
Wo liegen da jetzt Heap, Stack, Daten, …?
Unterschiede zwischen linearem, logischen und physischen Adressraum erklären
Was wird heute eingesetzt? (→ Long Mode de facto ohne Segmentierung)
Werkzeuge
Softwareschutz (in meinem Fall Obfuskierung)
Virtual Blackbox Obfuscator (Definition)
Quines
Kann man Quines auch obfuskieren? (Ja, und wenn man die Def von dem Virtual Blackbox Obfuscator her nimmt, dann ist das auch vollkommen ok und perfekt obfuskiert → Schwäche der Definition!)
Exploit (off by one)
Stackframes ergänzen
Was passiert, wenn die zwei Epiloge nicht direkt aufeinander folgen? → der Exploit ist dann nicht mehr möglich, weil ich mir alles aufm Stack zerschieße
Was passiert bei FPO? → dann kann ich den Exploit nicht mehr fahren, weil dann der Basepointer irgendwo hinzeigt, aber nicht mehr von mir kontrolliert wird.