Osegi
Софт·1 мин чтения

Исходники Borland C++ 2.0 восстановили из BCC.EXE байт в байт

Borland никогда не публиковала исходники Borland C++ 2.0. Проект borland-reborn восстановил их из бинарника 1991 года, и сборка даёт тот же BCC.EXE.

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

Исходников Borland C++ 2.0 никто никогда не видел: Borland их не публиковала. Теперь они есть, и восстановили их из самого BCC.EXE 1991 года. Если собрать код оригинальным тулчейном Borland, получится файл, совпадающий с фирменным байт в байт, с тем же SHA-256.

Проект называется borland-reborn. В нём 298 исходных файлов в 15 каталогах: 265 на C (Borland C++ 2.0 и Turbo C 2.01) и 33 модуля, написанных вручную на TASM. Деление оригинала на скомпилированный C и ручной ассемблер сохранено. Пока готовы BCC.EXE и отдельный препроцессор CPP.EXE, другие версии Borland и Turbo обещают позже.

Как восстановили исходники BCC.EXE

BCC.EXE собран самим Borland C++ 2.0, ручные части через TASM 2.51, а линковка через TLINK 4.0 с оверлейным менеджером VROOMM. Функция совпадает с оригиналом, только если угаданы компилятор, его версия и все ключи. Автор начал с подбора и выяснил, что 29 модулей библиотеки собраны ещё Turbo C 2.01. Затем функции подгонялись по одной, пока не совпал каждый байт.

Только после этого код сделали читаемым: около 3100 имён функций, глобальных переменных и меток, 300 полей записей и примерно 10 000 строк комментариев. Каждое изменение, включая переименования, проходит ту же побайтовую проверку.

Какие ошибки нашлись в Borland C++

По дороге всплыли и ошибки самого компилятора. strrchr читает байт перед пустой строкой. Освобождённое место в файле предкомпилированных заголовков никогда не используется повторно. Парсер написан вручную, рекурсивным спуском, с разбором выражений по приоритету операторов, без yacc. А слияние хвостов в генераторе кода определило, как приходилось писать исходники.

Оригинальных программ Borland в репозитории нет, дистрибутивы для пересборки нужно скачать самому. Есть и сборка для модификаций компилятора: её проверили 1836 компиляциями, а тесты выполняют 83% кода. Собственные скрипты проекта лежат под лицензией MIT, а восстановленные исходники получены из защищённых авторским правом программ и выложены для изучения и сохранения, без заявления прав.

Приложения, на которые стоит взглянуть

SUMO: числовая головоломка

Выбирайте нужные клетки, складывайте, достигайте цели. Легко понять, сложно освоить. Бесплатно, для любого возраста.

Теги:borland c++borland-rebornreverse engineeringdecompilationretrocomputingexhume

Ещё за этот день

Показать все →

Ещё в рубрике: Софт

Показать все →