Osegi
Software·1 Min. Lesezeit

Borland C++ 2.0: Quellcode aus BCC.EXE Byte für Byte rekonstruiert

Borland hat den Quellcode von Borland C++ 2.0 nie veröffentlicht. Das Projekt borland-reborn hat ihn aus der Binärdatei von 1991 wiederhergestellt.

A vintage DOS screen showing a Borland C++ 2.0 command-line compiler prompt next to lines of recovered C source code.
Bild: Хабр

Der Quellcode von Borland C++ 2.0 aus dem Jahr 1991 wurde nie veröffentlicht. Jetzt gibt es ihn trotzdem, rekonstruiert aus der ausführbaren Datei des Compilers selbst. Wer ihn mit Borlands originaler Toolchain baut, erhält eine BCC.EXE mit demselben SHA-256-Hash wie das Original.

Das Projekt heißt borland-reborn. Es umfasst 298 Quelldateien in 15 Verzeichnissen: 265 in C (aus Borland C++ 2.0 und Turbo C 2.01) und 33 von Hand geschriebene TASM-Assemblermodule. Die Aufteilung des Originals in kompilierten C-Code und handgeschriebenen Assembler blieb erhalten. Auch der eigenständige Präprozessor CPP.EXE lässt sich Byte für Byte neu bauen.

Wie wurde der Borland-C++-Quellcode aus einer Binärdatei rekonstruiert?

Zuerst musste der Autor die richtige Compilerversion und alle Schalter erraten, denn eine Funktion stimmt nur dann überein, wenn alles passt. Dabei zeigte sich, dass 29 Bibliotheksmodule noch mit Turbo C 2.01 gebaut wurden. Danach wurden die Funktionen einzeln angepasst, bis jedes Byte stimmte.

Erst dann machte man den Code lesbar: rund 3.100 Namen, 300 Record-Felder, 40 Record-Layouts und etwa 10.000 Zeilen Kommentar. Jede spätere Änderung, auch jede Umbenennung, muss denselben Byte-Test bestehen.

Was steckt im Compiler?

Der Parser ist von Hand geschrieben, per rekursivem Abstieg, mit einem Ausdrucksparser nach Operatorrang und ohne yacc. Die Notizen nennen auch mutmaßliche Fehler im Original: strrchr liest ein Byte vor einem leeren String, und freigegebener Platz in der Datei für vorkompilierte Header wird nie wiederverwendet.

Borlands Programme liegen dem Repository nicht bei, zum Nachbauen muss man die Originaldistributionen selbst besorgen. Skripte und Dokumentation stehen unter MIT-Lizenz. Der rekonstruierte Code stammt aus urheberrechtlich geschützter Borland-Software und wird zu Studien- und Erhaltungszwecken veröffentlicht, Rechte werden nicht beansprucht.

Entstanden ist die Arbeit mit Exhume, einem Werkzeugsatz für Claude Code, der aus der Dekompilierung von Ultima Underworld II hervorging.

Apps, die sich lohnen

SUMO: das Zahlenrätsel

Tippe die richtigen Felder, addiere, triff das Ziel. Leicht zu lernen, schwer zu meistern. Kostenlos, für jedes Alter.

Schlagwörter:borland c++borland-rebornreverse engineeringdecompilationretrocomputingexhume

Mehr von diesem Tag

Alle anzeigen →

Mehr aus: Software

Alle anzeigen →