स्वागत है, आपका हमारी इस पोस्ट मैं जिसमे हम Software Engineering के महत्वपूर्ण Topic Reverse Engineering के बारे मैं जानेगे। जैसे की Reverse Engineering क्या होता है? Reverse Engineering के Objective और Steps कौन – कौन से होते है। Reverse Engineering के बारे मैं जानने के लिए इस पोस्ट को अंत तक जरूर पढ़े।
What is Reverse Engineering in Hindi
Software Reverse Engineering, सॉफ्टवेयर इंजीनियरिंग में एक ऐसी process है जिस में यह process किसी भी product के code या प्रोग्राम को analysis करके उसकी functionality, requirements, और design को समझा जाता है। इस process की सहायता से हम जरूरी जानकारी प्राप्त करते है जिस के लिए हम इस process में एक program database को बनाते है।
Reverse Engineering जो है उस की सहायता से हम Source Code में से प्रोडक्ट के डिज़ाइन से जुडी हुई किसी भी तरह की जानकारी का पता लगा सकते है। लेकिन इस प्रक्रिया के रिजल्ट पर documentation की कम्प्लीटनेस, टूल्स का उपयोग, एब्सट्रेक्शन का level, और human analyst की involvement आदि की बजह से बहुत प्रभाब पड़ता है।
Objective of Reverse Engineering
Reducing Costs
Reverse engineering में किसी भी तरह के प्रोडक्ट डेवलोपमेन्ट के खर्चो या इस की cost को कम करने के लिए Reducing Costs बहुत उपयोगी मानी जाती है। क्योकि यह कम्पोनेंट्स और सिस्टम के लिए Replacement और economical जैसे option ढूंडने में मदत गार होता है।
Analysis of Security
Reverse engineering का उपयोग हम सुरक्षा को Analysis करने के लिए भी करते है जैसे malware को examine करना, vulnerabilities, और cybersecurity में exploits करना इस तरह की सुरक्षा को भी इस engineering की सहायता से ही Analysis किया जाता है। साथ ही यह security experts को खतरों के mechanisms को समझने और उन खिलाफ कैसे practical सुरक्षा को develop करने में भी सहायता करता है।
Integration and Customization
रिवर्स इंजीनियरिंग का उपयोग करके यह Developers किसी भी मौजूदा सिस्टम में जो कंपोनेंट्स होते है वे hardware या software के होते है। उन को बदल सके, modify भी कर सके या फिर उन में शामिल हो सके। ताकि उनके transaction में सुधर हो या फिर उन्हें इस लिए तैयार किया जाए जिस की सहायता से Special needs को पूरा कर सके।
Recovering Lost Source Code
किसी प्रकार के software application के Source Code को फिर से दुबारा प्राप्त करने के लिए भी Reverse engineering का उपयोग किया जा सकता है। जैसे – डिलीट हुआ Source Code, खोया हुआ, या फिर इसके High-level representation का production करने के लिए।
Fixing bugs and maintenance
Source Code में बग ढूंढने, उस में कमिया ढूढने या फिर उस की मरम्मत करने में भी Reverse engineering बहुत उपयोगी होती है। और जिन सिस्टम्स के लिए Original source code उपस्थित नहीं होता है या Insufficiently Documented होता है उन के लिए यह engineering, update भी प्रदान कराती है।
Steps of Software Reverse Engineering
Collection Information
इस स्टेप में उन सभी प्रकार की possible जानकारी को संग्रह किया जाता है जो सॉफ्टवेयर को बनाने के लिए जरूरी होती है। जैसे – source design documents, आदि।
Examining the Information
इस में उन सभी जानकारी को study किया जाता है जिसे हम ने step – 1 में एकत्रित किया गया था ताकि हम सिस्टम के बारे में जान सके।
Extracting the Structure
इस स्टेप में program के स्ट्रक्चर को पहचानने का काम किया जाता है जंहा हर एक नोड structure chart के रूप में किसी specific routine को प्रदर्शित करता है।
Recording the Functionality
इस स्टेज में, जब किसी स्ट्रक्चर के हर एक module का Processing details लिखा जाता है। तो इस के कारण decision table जैसे structured language का उपयोग करके charts को enter किया जाता है।
Data Flow Recording
हमने जो Step-3 और step-4 में जानकरी extract की है उस का उपयोग करके data flow diagrams को बनाए जाते है। जो processes के बीच डाटा का फ्लो दिखता है।
Control Flow Recording
इस Reverse Engineering में सॉफ्टवेयर के high-level control structure को रिकॉर्ड किया जाता है।
Review Extracted Design
इस स्टेप में correctness और consistency को सुनिश्चित करने के लिए। उन डिज़ाइन डॉक्यूमेंट को extract किया जाता है जो extract हो सकते है फिर उसे बार – बार review किया जाता है। और साथ ही इससे यह भी confirm किया जाता है की डिज़ाइन सही तरह से program को represent करता है।
Generate Documentation
यह स्टेप सबसे लास्ट स्टेप होती है जिस में हम उन documentation को record किया जाता है जो फ्यूचर में उपयोग किए जाएंगे। जैसे – SRS, history, design document, और observations आदि।
Tools of Reverse Engineering
Reverse Engineering Tools जो होते है वह हमेशा इनपुट को source code के रूप में ही accept करते है। और हमेशा अलग – अलग प्रकार के behavioral designs, structural, और procedural का आउटपुट देते है। अगर हम manually reverse engineering करते है तो यह Tools बहुत ही ज्यादा टाइम और human effort को consume करता है। इस लिए इस प्रोसेस को सपोर्ट हमेशा automated tools के जरिए ही करना चाहिए। कुछ टूल्स के बारे में हम ने नीचे बताया है।
- GEN++: यह एक एप्लीकेशन जनरेटर है जो C++ भाषा के लिए एक analysis tools का develop करने में मदत करता है।
- Rigi: इस reverse engineering में उन सभी रचनात्मक तत्व को समझा जाता है जो पूरी तरह से automate नहीं हो सकते है। Rigi एक प्रकार का visual software को समझने का टूल है।
- PBS: सॉफ्टवेयर Bookshelf tools प्रोग्राम की architecture को निकालने और visualize करने के लिए PBS का उपयोग होता है।
- CIAO and CIA: यह Software और web repositories के लिए एक ग्राफिकल नेविगेटर और रिवर्स Engineering tools का टूल है।
- Bunch: यह टूल developers को complex codebases को कुशलता से प्रबंधित करने, optimize करने, और maintain करने के लिए उपयोगी insights प्रदान करता है। जैसे – maintenance process और software development सरल हो जाते है।
Reverse Engineering to Understand Processing
अगर Processing को समझना है तो उस के लिए पहले source code में उपस्थित procedural abstractions होती है, उन्हें समझने और extract करने की कोशिस की जाती है। Procedural abstractions को समझने के लिए source code को कई अलग – अलग abstraction levels पर विश्लेषन किया जाता है। जैसे – pattern, program, system, component, और statement level.
- वह हर एक प्रोग्राम जो application सिस्टम को बनाता है, एक फंक्शनल abstraction को उच्च स्तरीय विवरण में प्रदर्शित करता है। इस में एक block diagram बनाया जाता है जिस की सहायता से इन functional abstractions के बीच बातचीत को देखा जा सकता है।
- हर कॉम्पोनेन्ट एक subfunction को परफॉर्म करता है और एक परिभाषित प्रक्रियात्मक abstraction को represent करता है। हर कॉम्पोनेन्ट के लिए एक प्रोसेसिंग narrative को develop किया जाता है।
Automated tools का उपयोग बर्तमान code के शब्दों को समझने में मदत के लिए किया जा सकता है। फिर उसके बाद इस प्रोसेस का output, forward और restructuring engineering टूल्स को दिया जाता है ताकि re-engineering प्रोसेस पूरी तरह से complete हो सके।
हमें उम्मीद है की आपको हमारी यह पोस्ट पसंद आयी होगी और आपको इस पोस्ट से Reverse Engineering के बारे मैं जानने को मिला होगा। जैसे की Reverse Engineering क्या होता है? इत्यादि।
अगर आपको इस ब्लॉग पोस्ट से सम्बंधित कोई भी समस्या हो या फिर आपको कोई भी सुझाव देना हो तो हमें कमेंट के माध्यम से बता सकते है। जिससे हमें काफी मदत मिलेगी।