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 का सोर्स कोड कभी सार्वजनिक नहीं किया। अब 1991 के इस कंपाइलर का सोर्स मौजूद है, और उसे इसी के बाइनरी से निकाला गया है। उसे Borland के मूल टूलचेन से कंपाइल करें तो BCC.EXE बाइट-दर-बाइट वैसा ही निकलता है, यानी SHA-256 भी वही।

यह काम borland-reborn प्रोजेक्ट का है। रिपॉज़िटरी में 15 सबसिस्टम डायरेक्टरी में 298 सोर्स फ़ाइलें हैं: 265 C की (Borland C++ 2.0 और Turbo C 2.01) और 33 मॉड्यूल हाथ से लिखे TASM असेंबली में। मूल का बँटवारा जस का तस रखा गया है। असेंबली को ज़बरदस्ती C में नहीं बदला गया, और कंपाइल हुए C को असेंबली नहीं रहने दिया गया। BCC.EXE के साथ अलग प्रीप्रोसेसर CPP.EXE भी इसी तरह बाइट-दर-बाइट बन जाता है।

यह बाइनरी से सोर्स कैसे बना

पहला कदम सही कंपाइलर और उसके स्विच पहचानना था। BCC.EXE खुद Borland C++ 2.0 से बना था, हाथ वाले हिस्सों के लिए TASM 2.51 और लिंकिंग के लिए TLINK 4.0 (ओवरले मैनेजर VROOMM के साथ) लगे थे। कोई फ़ंक्शन तभी मेल खाता है जब कंपाइलर, उसका वर्ज़न और सारे स्विच (-mm -G -O -Z -p, ओवरले कोड के लिए -Y) सही अंदाज़े हों। इसी दौरान पता चला कि लाइब्रेरी के 29 मॉड्यूल अभी Turbo C 2.01 से बने थे।

फिर फ़ंक्शन एक-एक करके तब तक ठीक किए गए जब तक हर बाइट मिल न गया। उसके बाद ही कोड को इंसानों के पढ़ने लायक बनाया गया: करीब 3100 नाम और लगभग 10,000 पंक्तियों की टिप्पणियाँ। हर बदलाव उसी बाइट-दर-बाइट जाँच से गुज़रता है।

Borland C++ में कौन सी गड़बड़ियाँ मिलीं?

रास्ते में खुद Borland C++ की खामियाँ भी सामने आईं। strrchr खाली स्ट्रिंग से ठीक पहले का एक बाइट पढ़ लेता है। प्रीकंपाइल्ड हेडर फ़ाइल में खाली की गई जगह दोबारा इस्तेमाल ही नहीं होती। पार्सर हाथ से, रिकर्सिव डिसेंट तरीके से लिखा है, और ऑपरेटर प्रेसिडेंस वाला एक्सप्रेशन पार्सर भी, यानी yacc नहीं। कोड जनरेटर की टेल मर्जिंग ने तय किया कि सोर्स कैसे लिखना पड़ेगा।

रिपॉज़िटरी में Borland के मूल प्रोग्राम शामिल नहीं हैं। पुनर्निर्माण के लिए उनके डिस्ट्रिब्यूशन खुद डाउनलोड करने होंगे। प्रोजेक्ट की अपनी स्क्रिप्ट MIT लाइसेंस में हैं, जबकि रिकवर किया गया सोर्स कॉपीराइट वाले Borland प्रोग्रामों से निकला है और अध्ययन व संरक्षण के लिए रखा गया है। यह काम Exhume टूलकिट पर हुआ, जो Claude Code के लिए टूल और स्किल्स का सेट है।

देखने लायक ऐप्स

SUMO: नंबर पज़ल

सही खाने चुनें, जोड़ें, लक्ष्य तक पहुँचें। सीखना आसान, महारत मुश्किल। मुफ़्त, हर उम्र के लिए।

Dialo: बोलकर भाषाएँ सीखें

AI बातचीत साथी से बात करें; हर वाक्य सुधरकर आपकी भाषा में समझाया हुआ लौटता है। 9 भाषाएँ, A1 से C2 तक।

giftdetect: मिनटों में सही तोहफ़ा

चुनें किसके लिए, किस मौके पर और कैसा स्वभाव। सर्च इंजन स्थानीय दुकानों के उत्पाद विवरण पढ़कर सबसे उपयुक्त विकल्प ऊपर रखता है। मुफ़्त, बिना साइन-अप।

टैग:borland c++borland-rebornreverse engineeringdecompilationretrocomputingexhume

इसी दिन की और ख़बरें

सभी देखें →

और पढ़ें:: सॉफ़्टवेयर

सभी देखें →