6.1 Compiler, Interpreter und Assembler6.1.1 Interpretierte Sprachen6.1.2 Kompilierte Sprachen6.1.3 Statisches und dynamisches Linking6.2 Die x86-Architektur6.2.1 Instruction Set Architecture6.2.2 CPU-Register6.2.3 Ablaufsteuerung6.3 Betriebssystem-Grundlagen6.3.1 Dateiformate für Executables6.3.2 Abschnitte6.3.3 Prozesse und Threads6.3.4 Netzwerkschnittstelle des Betriebssystems6.3.5 Application Binary Interface6.4 Statisches Reverse Engineering6.4.1 Kurzanleitung für die Nutzung der IDA Pro Free Edition6.4.2 Stackvariablen und Argumente analysieren6.4.3 Schlüsselfunktionalitäten identifizieren6.5 Dynamisches Reverse Engineering6.5.1 Breakpunkte setzen6.5.2 Debugger-Fenster6.5.3 Wo setzt man Breakpunkte?6.6 Reverse Engineering von Managed Code6.6.1 .NET-Anwendungen6.6.2 ILSpy nutzen6.6.3 Java-Anwendungen6.6.4 Mit Verschleierungstaktiken umgehen6.7 Reverse-Engineering-Ressourcen6.8 Am Ende dieses Kapitels