Borland C++ 2.0 소스, BCC.EXE에서 바이트 단위로 복원
Borland가 공개한 적 없는 Borland C++ 2.0 소스를 1991년 바이너리에서 복원했습니다. 다시 빌드하면 BCC.EXE가 똑같이 나옵니다.

Borland C++ 2.0의 소스 코드는 한 번도 공개된 적이 없습니다. 그런데 1991년 컴파일러의 바이너리만으로 소스를 되살린 프로젝트 borland-reborn이 나왔습니다. Borland 원래 툴체인으로 빌드하면 BCC.EXE가 원본과 바이트 단위로 일치하고, SHA-256도 같습니다.
저장소에는 15개 하위 시스템 디렉터리에 소스 파일 298개가 있습니다. C 파일이 265개(Borland C++ 2.0과 Turbo C 2.01), 손으로 짠 TASM 모듈이 33개입니다. 원본의 C와 어셈블리 구분은 그대로 유지했습니다. 어셈블리를 억지로 C로 바꾸지 않았고, 컴파일된 C를 어셈블리로 남겨 두지도 않았습니다. 별도 전처리기 CPP.EXE도 같은 방식으로 일치합니다.
바이너리에서 소스를 어떻게 복원했나
먼저 컴파일러와 옵션을 알아내야 했습니다. BCC.EXE는 Borland C++ 2.0 자체로 빌드했고, 손으로 쓴 부분에는 TASM 2.51, 링크에는 오버레이 관리자 VROOMM이 들어간 TLINK 4.0을 썼습니다. 컴파일러, 버전, 모든 옵션(-mm -G -O -Z -p, 오버레이 코드는 -Y)을 맞게 짚어야 함수가 일치합니다. 이 과정에서 라이브러리 모듈 29개가 Turbo C 2.01로 빌드됐다는 사실도 드러났습니다.
이후 함수를 하나씩 고쳐 모든 바이트가 맞을 때까지 반복했습니다. 사람이 읽기 좋게 만든 것은 그다음입니다. 이름 약 3100개와 주석 약 1만 줄이 붙었고, 모든 변경은 같은 바이트 비교 검사를 통과해야 합니다.
Borland C++에서 발견된 버그
작업 중 원래 컴파일러의 결함도 나왔습니다. strrchr는 빈 문자열 바로 앞의 1바이트를 읽습니다. 미리 컴파일된 헤더 파일에서 해제한 공간은 다시 쓰이지 않습니다. 파서는 yacc 없이 재귀 하향 방식과 연산자 우선순위 수식 파서로 직접 작성됐습니다.
Borland의 원본 프로그램은 저장소에 없어서, 다시 빌드하려면 배포판을 직접 내려받아야 합니다. 프로젝트의 스크립트는 MIT 라이선스이고, 복원된 소스는 저작권이 있는 Borland 프로그램에서 나온 것이라 연구와 보존 목적으로 공개됩니다.
주목할 만한 앱
올바른 칸을 고르고 더해 목표 숫자를 맞추세요. 배우긴 쉽고 마스터하긴 어렵습니다. 무료, 전 연령.
AI 대화 파트너와 대화하세요. 모든 문장이 교정되어 내 언어로 설명과 함께 돌아옵니다. 9개 언어, A1부터 C2까지.
EDIFACT와 X12 메시지를 열어 각 세그먼트 설명을 보고, JSON/XML로 변환하고, PDF와 Excel로 내보내세요. 로컬에서 실행, 업로드 없음.
받는 사람, 기념일, 성격을 고르세요. 검색 엔진이 현지 상점의 상품 설명을 읽고 어울리는 것을 추려 줍니다. 무료, 가입 없음.
같은 날의 다른 뉴스
전체 보기 →관련 카테고리: 소프트웨어
전체 보기 →
Chrome 시크릿 모드가 숨기는 것과 숨기지 못하는 것

Meta Takes 앱, 현금 대신 '크레드' 점수로 예측 시장 테스트
마이크로소프트 장애, 아웃룩·팀즈·오피스 11시간 넘게 먹통




