[Перевод] Исходники Borland C++ 2.0 восстановили из бинарника: BCC.EXE пересобирается байт в байт
Habr ·
![[Перевод] Исходники Borland C++ 2.0 восстановили из бинарника: BCC.EXE пересобирается байт в байт](https://habrastorage.org/extt/7e/24/6b/7e246bcc2943028b9dfc64e30094ecdd.jpg)
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», а в файлы предкомпилированных заголовков попадает мусор из кучи. Перевод описания проекта, метода и основных находок. Читать далее