Osegi
البرمجيات·2 دقائق قراءة

شيفرة 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 الشيفرة المصدرية لـ Borland C++ 2.0 قط. اليوم توجد هذه الشيفرة، وقد استُعيدت من ملف 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 آلاف سطر من التعليقات. وكل تعديل، ومنه إعادة التسمية، يمر باختبار المطابقة بايتاً ببايت نفسه.

ما الأخطاء التي وُجدت في Borland C++؟

ظهرت في الطريق أخطاء في المترجم نفسه. فالدالة strrchr تقرأ بايتاً يسبق السلسلة الفارغة. والمساحة المحررة في ملف الترويسات المترجمة مسبقاً لا يُعاد استخدامها أبداً. والمحلل كُتب يدوياً بطريقة النزول التكراري، مع محلل للتعابير يعتمد أولوية العوامل، ومن دون yacc. أما دمج الذيول في مولّد الشيفرة فقد حدد الطريقة التي كان لا بد أن تُكتب بها المصادر.

لا تحتوي المستودعات برامج Borland الأصلية، وعلى من يريد إعادة البناء تنزيلها بنفسه. وتوجد أيضاً نسخة بناء لتعديل المترجم، اختُبرت بـ1836 عملية ترجمة وتنفذ الاختبارات 83% من شيفرته. أما سكربتات المشروع فبرخصة MIT، بينما استُخرجت المصادر المستعادة من برامج Borland المحمية بحقوق النشر ونُشرت للدراسة والحفظ دون المطالبة بأي حقوق عليها.

تطبيقات تستحق النظر

SUMO: لغز الأرقام

اختر المربعات الصحيحة واجمعها وحقّق الهدف. سهل التعلم، صعب الإتقان. مجاني، لجميع الأعمار.

الوسوم:borland c++borland-rebornreverse engineeringdecompilationretrocomputingexhume

المزيد من هذا اليوم

عرض الكل →

المزيد في: البرمجيات

عرض الكل →