Suche
Wie patcht man ein Programm dessen Quelltext man nicht hat?
Microsoft musste vor kurzem ein Sicherheitsupdate für ein sehr altes Programm einspielen. Und es scheint, als hätten Sie den Quelltext für das Programm verloren.
Das man mit Programmen deren Quelltext man nicht hat trotzdem eine ganze Menge anstellen kann, haben wir auf Nordbord ja schon im Rahmen der Einführung in die Cheat-Engine und bei der Hack-Challenge gesehen. Aber den Quelltext der Programme haben wir dabei nicht verändert, sondern "nur" den Arbeitsspeicher. Erfahrene Programmierer können aber noch einen Schritt weitergehen: Sie sind in der Lage den Maschinencode der vom Prozessor ausgeführt wird direkt zu lesen. Normalerweise benutzen Entwickler einfachere Programmiersprachen (Fachleute reden von so genannten "höheren Programmiersprachen"), weil das Arbeiten mit dem Maschinencode wirklich aufwändig ist: Man braucht sehr viele Zeilen Code um sehr triviale Gedanken zu formulieren. Mitja Kolsek vom 0patch Team ist einer dieser Entwickler, die sich dennoch sehr gut mit dem Maschinencode auskennen. In seinem Blogbeitrag hat er die Änderungen am dem eingangs erwähnten Programm von Microsoft untersucht, auch das Titelbild stammt aus dem Beitrag. Es handelt sich bei dem Programm um den mathematischen Formeleditor für Microsoft Office 2000 (!). In seinem Beitrag beschreibt Mitja wie die gemachten Änderungen funktionieren und was man dabei alles beachten muss. Und er kommt zu einem recht interessanten Schluss: Der Fehler hätte viel trivialer behoben werden können, wenn man das Problem einfach im originalen Quelltext beseitigt hätte. Und dann hätte sich aber an der ausführbaren Datei wesentlich mehr geändert. Man kann sich das von Microsoft gewählte Vorgehen vielleicht ein bisschen so vorstellen, als würde man man mit handschriftlichen Notizen in einem PDF-Dokument rumkorrigieren: Das funktioniert natürlich (und das Ergebnis kann auch genau so gut sein), aber man kann das grundsätzliche Layout des Dokuments nicht mehr verändern. Und bei ausführbaren Programmen ist das ähnlich: Man musste nun halt mit chirurgischer Präzision einzelne Bereiche verändern und dabei beachten, dass vom restlichen Programm nichts kaputt geht.
Kommentare
Einen Kommentar schreiben