Die Karten sind selbst komplexe Programme
Die Erweiterungen sind selbst zum Teil komplexe Entwicklungen. Nach Angaben von Bachaalany entwickelte die Community über die Jahre sogar eigene Skriptsprachen, um Einheitenkommandos zu entwerfen, vom Spiel nicht vorgesehene Eingaben über die Tastatur abzurufen oder eigene Grafiksets einzubauen, die im ursprünglichen Level-Editor nicht vorgesehen sind.
Die Karten enthalten zudem selbst zum Teil mehrere Level. Bei der EUD-Karte Mario Exodus sollen es 20 Level sein, durch die sich Spieler kämpfen können. Andere Karten enthalten sogar eine eigene Physik-Engine, um etwa das Hüpfverhalten eines Balls zu steuern.
In einigen Karten gebe es sogar kommerzielle Werbung, mit der die Ersteller der Map Geld verdienen, sagte Bachaalany. Diese Werbung verschwinde dann entweder von selbst nach einem bestimmten Zeitraum oder erst nach einer Interaktion durch den Nutzer. Demzufolge war es auch kein leichtes Unterfangen, diese Maps ohne Buffer Overflow wieder zum Laufen zu bekommen.
Moderne Sicherheitsfunktionen gab es 1998 noch nicht
Der zum Release von Starcraft Remastered am 30. Juli 2017 geplante Eingriff war nicht trivial. Als Starcraft 1 im Jahr 1998 erstmals veröffentlicht wurde, waren moderne Sicherheitstechniken in der Spieleentwicklung noch nicht vorhanden. Eine Funktion wie Adress Space Layout Randomization (ASLR) wurde noch nicht genutzt. Ein Emulator für die Sicherheitslücke muss also moderne Programmiertechniken und eine modernisierte Infrastruktur um das Programm herum mit den EUD-Karten zusammenbringen.
Die Mods nutzen die vom ursprünglichen Star-Craft-Spiel hardcodierten Speicheradressen, um einen Puffer zum Überlaufen zu bringen und eigenen Code auszuführen. Moderne Betriebssysteme und Programme weisen Speicher hingegen zufälligen Adressbereichen zu, damit Angreifer Sicherheitslücken im Speichermanagement schwerer ausnutzen können.
Drei Wochen lang das Spiel verstehen
Für die Entwicklung des Emulators musste Bachaalany deshalb zunächst einmal die genaue Mechanik des alten Spiels verstehen. Viele der ursprünglichen Entwickler gehören dem Unternehmen gar nicht mehr an, außerdem war von der betroffenen Variante 1.6.1 nicht für alle Elemente der Quellcode vorhanden. Das Wissen war also begrenzt oder nicht mehr verfügbar. Bachaalany setzte sich zunächst einmal für rund drei Wochen hin, um das Spiel zu reverse-engineeren und genau zu verstehen.
Ebenfalls nicht bekannt war die genaue Version des Compilers, mit dem der Quelltext während der Entwicklung übersetzt wurde. Nach einigem Herumprobieren nutzte er Microsofts Visual Studio 2003 und erzielte damit brauchbare Ergebnisse.
Die Suche nach den richtigen Werkzeugen war aber nur der erste Schritt.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Starcraft Remastered: Warum Blizzard einen Buffer Overflow emuliert | Jäger und Sammler von Speicheradressen |
und hätte Blizzard die Sicherheitslücke sofort nach bekanntwerden gepatcht, hätten sich...
Also unser Unternehmen kann auf über 20 Jahre alten Code zurückgreifen. Irgendwann wurde...
DANKE. Die Begründung ist herrlich :-D Ich bin also wie C 8-)
In dem Fall wird das per Mapping entschieden.
Was würdest du denn erwarten? Die Präsi von dem hätte ich mir auf jeden Fall gar nicht...