सीधे शब्दों में, विघटन संकलन का विलोम है: एक निष्पादन योग्य फ़ाइल को उच्च स्तर की भाषा में अनुवाद करना।
मान लीजिए कि आप अपने डेल्फी प्रोजेक्ट के स्रोत को खो देते हैं और आपके पास केवल निष्पादन योग्य फ़ाइल है: मूल स्रोत उपलब्ध नहीं होने पर रिवर्स इंजीनियरिंग (डीकोम्पिलेशन) उपयोगी है।
एचएम, "स्रोत उपलब्ध नहीं हैं", क्या इसका मतलब यह है कि हम अन्य लोगों की डेल्फी परियोजनाओं को विघटित कर सकते हैं? खैर, हां और नहीं ...
क्या सच्चा विघटन संभव है?
नहीं बिलकुल नहीं। पूरी तरह से स्वचालित विघटन संभव नहीं है - कोई भी अपघटन मूल स्रोत कोड को पुन: उत्पन्न नहीं कर सकता है।
जब एक डेल्फी प्रोजेक्ट संकलित किया जाता है और एक स्टैंडअलोन निष्पादन योग्य फ़ाइल का उत्पादन करने के लिए लिंक किया जाता है, तो प्रोग्राम में उपयोग किए जाने वाले अधिकांश नाम पते में परिवर्तित हो जाते हैं। नामों के इस नुकसान का मतलब है कि एक अपघटनकर्ता को सभी स्थिरांक, चर, कार्य और प्रक्रियाओं के लिए अद्वितीय नाम बनाने होंगे। भले ही सफलता की एक निश्चित डिग्री हासिल हो, लेकिन उत्पन्न "स्रोत कोड" में सार्थक चर और फ़ंक्शन नामों का अभाव है।
जाहिर है, स्रोत भाषा वाक्यविन्यास अब निष्पादन योग्य में मौजूद नहीं है। एक डिकंपाइलर के लिए मशीन भाषा निर्देश (एएसएम) की श्रृंखला की व्याख्या करना बहुत मुश्किल होगा जो एक निष्पादन योग्य फ़ाइल में मौजूद है और यह तय करता है कि मूल स्रोत निर्देश क्या था।
क्यों और कब उपयोग करना विघटन
रिवर्स इंजीनियरिंग का उपयोग कई कारणों से किया जा सकता है, जिनमें से कुछ हैं:
- खो स्रोत कोड की वसूली
- एक नए हार्डवेयर प्लेटफ़ॉर्म पर अनुप्रयोगों का प्रवासन
- कार्यक्रम में वायरस या दुर्भावनापूर्ण कोड के अस्तित्व का निर्धारण
- जब एप्लिकेशन का स्वामी सुधार करने के लिए उपलब्ध नहीं है, तो त्रुटि सुधार।
- किसी और के स्रोत कोड की वसूली (उदाहरण के लिए एक एल्गोरिथ्म निर्धारित करने के लिए)।
क्या यह कानूनी है?
रिवर्स इंजीनियरिंग क्रैकिंग नहीं है, हालांकि उन दोनों के बीच ठीक रेखा खींचना कभी-कभी मुश्किल होता है। कंप्यूटर प्रोग्राम कॉपीराइट और ट्रेडमार्क कानूनों द्वारा संरक्षित हैं। कॉपीराइट स्वामी के अधिकारों के लिए अलग-अलग देशों में अलग-अलग अपवाद हैं। सबसे आम लोगों का कहना है कि विघटित होना ठीक है: व्याख्या के उद्देश्यों के लिए जहां इंटरफ़ेस विनिर्देश उपलब्ध नहीं कराया गया है, के लिए त्रुटि सुधार के उद्देश्य जहां कॉपीराइट के मालिक को सुधार करने के लिए उपलब्ध नहीं है, कार्यक्रम के कुछ हिस्सों को निर्धारित करने के लिए जो कि संरक्षित नहीं हैं कॉपीराइट। बेशक, आपको बहुत सावधान रहना चाहिए / अपने वकील से संपर्क करें यदि आप संदेह में हैं कि क्या आपको कुछ प्रोग्राम की exe फ़ाइल को अलग करने की अनुमति है।
ध्यान दें: यदि आप डेल्फी दरारें, प्रमुख जनरेटर या सिर्फ सीरियल नंबर की तलाश कर रहे हैं: आप गलत साइट पर हैं। कृपया ध्यान रखें कि यहां आपको जो कुछ भी मिला है वह केवल अन्वेषण / शैक्षिक उद्देश्यों के लिए लिखा / प्रस्तुत किया गया है।
फिलहाल, बोरलैंड एक निष्पादन योग्य (.exe) फ़ाइल या "डेल्फी संकलित इकाई" (.dcu) को मूल स्रोत कोड (.pas) पर वापस भेजने में सक्षम किसी भी उत्पाद की पेशकश नहीं करता है।
डेल्फी संकलित इकाई (DCU)
जब एक डेल्फी परियोजना संकलित की जाती है या एक संकलित इकाई (.pas) फ़ाइल बनाई जाती है। डिफ़ॉल्ट रूप से प्रत्येक इकाई का संकलित संस्करण एक अलग बाइनरी-प्रारूप फ़ाइल में एक ही नाम के साथ इकाई फ़ाइल के रूप में संग्रहीत किया जाता है, लेकिन एक्सटेंशन के साथ ।DCU। उदाहरण के लिए Unit1.dcu में Unit1.pas फ़ाइल में घोषित कोड और डेटा होता है।
इसका मतलब है कि यदि आपके पास कोई है, उदाहरण के लिए, घटक संकलित स्रोत आपको बस इतना करना है कि इसे उल्टा करना और कोड प्राप्त करना है। गलत। DCU फ़ाइल स्वरूप अनडाइंडेड (मालिकाना प्रारूप) है और संस्करण से संस्करण में परिवर्तित हो सकता है।
कंपाइलर के बाद: डेल्फी रिवर्स इंजीनियरिंग
यदि आप एक डेल्फी निष्पादन योग्य फ़ाइल को विघटित करने का प्रयास करना चाहते हैं, तो ये कुछ चीजें हैं जिन्हें आपको जानना चाहिए:
डेल्फी प्रोग्राम्स सोर्स फाइलें आमतौर पर दो फाइल प्रकारों में संग्रहीत होती हैं: ASCII कोड फाइलें (.pas, .dpr), और संसाधन फाइलें (.res, .rc, .df, .dcr)। डीएफएम फाइलों में एक फॉर्म में निहित वस्तुओं का विवरण (गुण) होता है। बनाते समय एक निर्वासन, डेल्फी समाप्त। Exe कोड फ़ाइल में .dfm फ़ाइलों की जानकारी कॉपी करता है। प्रपत्र फ़ाइलें आपके फ़ॉर्म में प्रत्येक घटक का वर्णन करती हैं, जिसमें सभी लगातार गुणों के मूल्य शामिल हैं। हर बार जब हम एक फॉर्म की स्थिति बदलते हैं, एक बटन का कैप्शन या एक घटक, डेल्फी के लिए एक घटना प्रक्रिया असाइन करते हैं DFM फ़ाइल में उन संशोधनों को लिखते हैं (ईवेंट प्रक्रिया का कोड नहीं - यह pas / dcu में संग्रहीत है फ़ाइल)। निष्पादन योग्य फ़ाइल से "dfm" प्राप्त करने के लिए हमें यह समझने की आवश्यकता है कि Win32 निष्पादन योग्य के अंदर किस प्रकार के संसाधन संग्रहीत हैं।
डेल्फी द्वारा संकलित सभी कार्यक्रमों में निम्नलिखित खंड हैं: CODE, DATA, BSS, .idata, tls, .rdata, .rsrc। देखने के बिंदु से सबसे महत्वपूर्ण CODE और .rsrc अनुभाग हैं। में "एक डेल्फी कार्यक्रम में कार्यक्षमता जोड़ना"डेल्फी के निष्पादनयोग्य प्रारूप, वर्ग की जानकारी और DFM संसाधनों के बारे में कुछ दिलचस्प तथ्यों को दर्शाया गया है: एक ही रूप में परिभाषित अन्य घटना संचालकों द्वारा संभाला जाने वाली घटनाओं को कैसे फिर से असाइन किया जाए। इससे भी अधिक: अपने स्वयं के ईवेंट हैंडलर को कैसे जोड़ा जाए, कोड को निष्पादन योग्य में जोड़ा जाए, जो एक बटन के कैप्शन को बदल देगा।
कई प्रकार के संसाधन जो एक exe फ़ाइल में संग्रहीत हैं, RT_RCDATA या अनुप्रयोग-परिभाषित संसाधन (कच्चा डेटा) संकलन से पहले DFM फ़ाइल में मौजूद जानकारी रखता है। एक एक्सई फ़ाइल से DFM डेटा निकालने के लिए हम कॉल कर सकते हैं EnumResourceNames API फ़ंक्शन... एक निष्पादन योग्य दृश्य से DFM निकालने पर अधिक जानकारी के लिए देखें: एक डेल्फी DFM एक्सप्लोरर कोडिंग लेख।
रिवर्स इंजीनियरिंग की कला परंपरागत रूप से तकनीकी जादूगरों की भूमि रही है, जो विधानसभा भाषा और डीबगर्स से परिचित है। कई डेल्फी डीकंपाइलर दिखाई दिए हैं जो सीमित तकनीकी ज्ञान के साथ किसी को भी अनुमति देते हैं, इंजीनियर को अधिकांश डेल्फी निष्पादन योग्य फ़ाइलों को उलटने के लिए।
यदि आप रिवर्स इंजीनियरिंग डेल्फी कार्यक्रमों में रुचि रखते हैं, तो मेरा सुझाव है कि आप निम्नलिखित कुछ "डिकंपाइलर्स" पर एक नज़र डालें:
निष्पादन योग्य फ़ाइलों (EXE) की एक decompiler और गतिशील पुस्तकालय (डीएलएल), डेल्फी में लिखा गया है और विंडोज 32 वातावरण में निष्पादित किया गया है। अंतिम परियोजना लक्ष्य प्रारंभिक डेल्फी के अधिकांश भाग को पुनर्स्थापित करने में सक्षम कार्यक्रम का विकास है स्रोत कोड संकलित फ़ाइल लेकिन IDR, साथ ही अन्य डेल्फी डिकम्पाइलर से, यह अभी तक नहीं कर सकता है। फिर भी, आईडीआर इस तरह की प्रक्रिया को सुविधाजनक बनाने की स्थिति में है। अन्य प्रसिद्ध डेल्फी विघटित करने वालों की तुलना में आईडीआर विश्लेषण के परिणाम में सबसे बड़ी पूर्णता और विश्वसनीयता है।
Revendepro कार्यक्रम में लगभग सभी संरचनाएं (कक्षाएं, प्रकार, प्रक्रियाएं आदि) पाता है, और पास्कल प्रतिनिधित्व करता है, प्रक्रियाओं को असेंबलर में लिखा जाएगा। असेंबलर में कुछ सीमा के कारण उत्पन्न आउटपुट को फिर से तैयार नहीं किया जा सकता है। इस अपघटन का स्रोत स्वतंत्र रूप से उपलब्ध है। दुर्भाग्य से यह केवल एक डिकंपाइलर है जो मैं उपयोग करने में सक्षम नहीं था - यह एक अपवाद के साथ संकेत देता है जब आप कुछ डेल्फी निष्पादन योग्य फ़ाइल को विघटित करने का प्रयास करते हैं।
ईएमएस सोर्स रेस्क्यूअर एक आसान-उपयोग वाला विज़ार्ड एप्लिकेशन है, जो आपके खोए हुए स्रोत कोड को पुनर्स्थापित करने में आपकी सहायता कर सकता है। यदि आप अपने डेल्फी या सी ++ बिल्डर प्रोजेक्ट स्रोतों को खो देते हैं, लेकिन एक निष्पादन योग्य फ़ाइल है, तो यह टूल खोए हुए स्रोतों के हिस्से को बचा सकता है। बचाव दल सभी निर्दिष्ट गुणों और घटनाओं के साथ सभी परियोजना रूपों और डेटा मॉड्यूल का उत्पादन करता है। उत्पादित घटना प्रक्रियाओं में एक निकाय नहीं होता है (यह एक डिकंपाइलर नहीं है), लेकिन निष्पादन योग्य फ़ाइल में कोड का एक पता है। अधिकांश मामलों में Rescuer आपके 50-90% समय को प्रोजेक्ट बहाली के लिए बचाता है।
DeDe एक बहुत तेज़ कार्यक्रम है जो डेल्फी के साथ संकलित निष्पादकों का विश्लेषण कर सकता है। विघटन के बाद DeDe आपको निम्नलिखित देता है:
- लक्ष्य की सभी dfm फाइलें। आप डेल्फी के साथ उन्हें खोलने और संपादित करने में सक्षम होंगे।
- सभी प्रकाशित विधियों में स्ट्रिंग्स, इंपोर्टेड फंक्शन कॉल्स, क्लासेस मेथड्स कॉल्स, यूनिट में कंपोनेंट्स, ट्राई-एक्सेप्ट और ट्राई-एक्ट-फाइनल ब्लॉक्स के संदर्भ में अच्छी तरह से प्रकाशित किए गए तरीकों के बारे में ASM कोड है। डिफ़ॉल्ट रूप से DeDe केवल प्रकाशित विधियों के स्रोतों को पुनर्प्राप्त करता है, लेकिन यदि आप RVA ऑफ़सेट्स टूल का उपयोग कर रहे हैं, तो आपको निष्पादन योग्य में दूसरी प्रक्रिया भी हो सकती है। डिस्कस प्रोक मेनू।
- बहुत सी अतिरिक्त जानकारी।
- आप सभी dfm, pas, dpr फ़ाइलों के साथ एक डेल्फी प्रोजेक्ट फ़ोल्डर बना सकते हैं। नोट: पीएएस फ़ाइलों में ऊपर वर्णित अच्छी तरह से टिप्पणी की गई ASM कोड शामिल है। उन्हें बदला नहीं जा सकता है!