Osegi
Yazılım·1 dk okuma

Borland C++ 2.0 kaynak kodu, BCC.EXE'den bayt bayt geri çıkarıldı

Borland, Borland C++ 2.0'ın kaynak kodunu hiç yayımlamadı. borland-reborn projesi onu 1991 tarihli çalıştırılabilir dosyadan çıkardı ve derleyince aynı BCC.EXE çıkıyor.

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

Borland, Borland C++ 2.0'ın kaynak kodunu hiç yayımlamadı. Şimdi 1991 tarihli BCC.EXE dosyasının kendisinden çıkarılmış bir kaynak kodu var. Orijinal Borland araçlarıyla derlenince ortaya, fabrika sürümüyle bayt bayt aynı, SHA-256 değeri de aynı bir dosya çıkıyor.

Projenin adı borland-reborn. 15 alt sistem klasöründe 298 kaynak dosya var: 265'i C (Borland C++ 2.0 ve Turbo C 2.01), 33'ü elle yazılmış TASM modülü. Orijinaldeki derlenmiş C ile elle yazılmış assembly ayrımı korunmuş. Şimdilik BCC.EXE ve ayrı önişlemci CPP.EXE hazır. Diğer Borland ve Turbo sürümleri sonradan eklenecek.

BCC.EXE kaynak kodu nasıl geri çıkarıldı?

BCC.EXE, Borland C++ 2.0 ile derlenmiş. Elle yazılan kısımlar için TASM 2.51, bağlama için VROOMM overlay yöneticisiyle TLINK 4.0 kullanılmış. Bir fonksiyon, ancak derleyici, sürümü ve tüm anahtarlar doğru tahmin edilirse orijinalle eşleşiyor. Yazar işe bunları bulmakla başlamış ve kütüphanedeki 29 modülün daha Turbo C 2.01 ile derlendiğini görmüş. Sonra fonksiyonlar tek tek, her bayt tutana kadar ayarlanmış.

Okunabilir hale getirme işi ancak bundan sonra yapılmış: yaklaşık 3100 fonksiyon, global değişken ve etiket adı, 300 kayıt alanı ve yaklaşık 10.000 satır yorum. Yeniden adlandırmalar dahil her değişiklik aynı bayt bayt testten geçiyor.

Borland C++'ta bulunan hatalar

Çalışma sırasında derleyicinin kendi hataları da çıkmış. strrchr, boş bir dizenin önündeki baytı okuyor. Önceden derlenmiş başlık dosyasında boşalan yer bir daha kullanılmıyor. Ayrıştırıcı elle, özyinelemeli inişle yazılmış, ifadeler için operatör önceliğine dayalı bir ayrıştırıcı var, yacc yok. Kod üreticideki kuyruk birleştirme de kaynakların nasıl yazılması gerektiğini belirlemiş.

Depoda Borland'ın orijinal programları yok, yeniden derlemek için dağıtımları kendiniz indirmeniz gerekiyor. Derleyiciyi değiştirmek için ayrı bir derleme türü de var: 1836 derlemeyle sınanmış ve testler kodun %83'ünü çalıştırıyor. Projenin kendi betikleri MIT lisanslı. Geri çıkarılan kaynaklar telif hakkıyla korunan Borland programlarından türetilmiş, öğrenme ve koruma amacıyla yayımlanmış ve üzerlerinde hak iddia edilmiyor.

Göz atmaya değer uygulamalar

SUMO: sayı bulmacası

Doğru kareleri seçin, toplayın, hedefe ulaşın. Öğrenmesi kolay, ustalaşması zor. Ücretsiz, her yaşa uygun.

Dialo: konuşarak dil öğrenin

Yapay zekâ sohbet partneriyle konuşun; her cümleniz düzeltilip kendi dilinizde açıklanarak geri gelsin. 9 dil, A1'den C2'ye.

Etiketler:borland c++borland-rebornreverse engineeringdecompilationretrocomputingexhume

Aynı günden diğer haberler

Tümünü gör →

Daha fazla: Yazılım

Tümünü gör →