[Перевод] Исходники Borland C++ 2.0 восстановили из бинарника: BCC.EXE пересобирается байт в байт

Habr ·

[Перевод] Исходники Borland C++ 2.0 восстановили из бинарника: BCC.EXE пересобирается байт в байт

Borland никогда не публиковала исходники Borland C++ 2.0. Проект borland-reborn восстановил их из самого BCC.EXE 1991 года: 298 файлов на C и TASM, собранные оригинальным тулчейном Borland, дают исполняемый файл с тем же SHA-256. Автор начал с подбора компилятора и ключей и выяснил, что 29 модулей библиотеки собраны ещё Turbo C 2.01. Затем функции подгонялись по одной, пока не совпал каждый байт, и только после этого код переписали для людей: около 3100 имён и примерно 10 000 строк комментариев. По дороге нашлись ошибки самого Borland C++: strrchr читает байт перед пустой строкой, постинкремент битового поля через дальний указатель обрывает компиляцию с «Register allocation failure», а в файлы предкомпилированных заголовков попадает мусор из кучи. Перевод описания проекта, метода и основных находок. Читать далее

Источник: Habr