किसी उत्पाद का विश्लेषण करने के लिए इंजीनियरों को कभी-कभी उल्टा सोचने की जरूरत होती है। उदाहरण के लिए, एक मैकेनिकल इंजीनियर किसी उत्पाद के डिजाइन और भौतिक गुणों के आधार पर उसके उत्पादन के बारे में निष्कर्ष निकाल सकता है। वे उसी उत्पाद का उत्पादन करने में भी सक्षम हो सकते हैं यदि उन्हें इसकी पूरी समझ हो।
आप रिवर्स इंजीनियरिंग की तुलना गणितीय समीकरणों के प्रमाण से भी कर सकते हैं। तो, रिवर्स इंजीनियरिंग का उपयोग कैसे किया जाता है?
रिवर्स इंजीनियरिंग क्या है?
रिवर्स इंजीनियरिंग एक प्रणाली का पुनरुत्पादन या सुधार करने के उद्देश्य से उसका विश्लेषण करने की प्रक्रिया है। यदि आप रिवर्स इंजीनियरिंग के कार्य क्षेत्रों को देखते हैं, तो आप देख सकते हैं कि आप इसका उपयोग कई अलग-अलग उद्देश्यों के लिए कर सकते हैं। यदि आप इसे साइबर सुरक्षा के नजरिए से देखते हैं, तो रिवर्स इंजीनियरिंग विधियों के साथ निम्नलिखित कार्य करना संभव है:
- गैर-ओपन सोर्स सॉफ़्टवेयर का स्रोत विश्लेषण
- भेद्यता विश्लेषण
- मैलवेयर विश्लेषण
- क्रैकिंग और पैचिंग
आप आजकल कंप्यूटर गेम में भी रिवर्स इंजीनियरिंग का इस्तेमाल देख सकते हैं। उदाहरण के लिए, डेवलपर्स अक्सर रिवर्स इंजीनियरिंग विधियों का उपयोग करके सॉफ़्टवेयर मोड बनाते हैं।
रिवर्स इंजीनियरिंग के क्षेत्र में दो अलग-अलग विश्लेषण विधियां हैं: स्थैतिक और गतिशील। जब आप वास्तव में इसे चलाए बिना किसी प्रोग्राम का विश्लेषण करते हैं तो आप स्थैतिक विश्लेषण करते हैं। दूसरी ओर, एक गतिशील विश्लेषण पद्धति के लिए आवश्यक है कि आप प्रोग्राम को उसके व्यवहार और उसके द्वारा उपयोग किए जाने वाले डेटा का निरीक्षण करने के लिए चलाएं।
लेकिन इससे पहले कि आप रिवर्स इंजीनियरिंग के लिए विश्लेषण करें, कुछ महत्वपूर्ण शर्तें हैं जिनके बारे में आपको जानना आवश्यक है कंप्यूटर आर्किटेक्चर कैसे काम करता है.
कंप्यूटर आर्किटेक्चर के प्रमुख भाग
जब तक आप कंप्यूटर आर्किटेक्चर को नहीं समझेंगे, रिवर्स इंजीनियरिंग व्यावहारिक रूप से असंभव है। आपको चार मुख्य भागों का अध्ययन करने की आवश्यकता है:
- इनपुट: डेटा दर्ज करने के तरीकों का एक सेट।
- CPU: सीपीयू आने वाले डेटा को प्रोसेस करता है और इसे उसके मालिकों तक पहुंचाता है। यह सेंट्रल प्रोसेसिंग यूनिट है।
- याद: वह स्थान जो प्रसंस्करण के दौरान अस्थायी रूप से डेटा रखता है।
- उत्पादन: परिणाम जो अंतिम उपयोगकर्ता देखता है।
आप इन सभी मुख्य मुद्दों को एक उदाहरण से ध्यान में रख सकते हैं, जैसे कि जब आप अपने कीबोर्ड पर A अक्षर दबाते हैं। जब आप इसे दबाते हैं, तो एक इनपुट इवेंट होता है। इस चरण के बाद, CPU डेटा को प्रोसेस करता है और इसे स्टोर करने के लिए मेमोरी में एक छोटी सी जगह का उपयोग करता है। अंत में, आप आउटपुट के साथ प्रक्रिया को समाप्त करते हुए, अपनी स्क्रीन पर अक्षर A देखेंगे।
सीपीयू की गहराई में गोता लगाएँ
यदि आप वास्तव में रिवर्स इंजीनियरिंग के विशेषज्ञ बनना चाहते हैं और इस विषय में गहराई से गोता लगाना चाहते हैं, तो आपको हार्डवेयर, निम्न-स्तरीय भाषाओं और विशेष रूप से सीपीयू का विस्तृत ज्ञान होना चाहिए। सीपीयू के बारे में जानने के लिए आपको जिन प्रमुख विषयों की आवश्यकता होगी वे हैं:
- नियंत्रण यूनिट: यह सीपीयू में डेटा के प्रसंस्करण और संबंधित क्षेत्रों में इसके हस्तांतरण के लिए जिम्मेदार है। आप इस इकाई को रूटिंग कंट्रोल मैकेनिज्म के रूप में सोच सकते हैं।
- आलू: यह अंकगणितीय तर्क इकाई के लिए है। यहीं पर कुछ अंकगणितीय और तार्किक संक्रियाएँ होती हैं। यदि आप गणित में गहराई से खुदाई करते हैं, तो आप देखेंगे कि मूल चार संक्रियाएँ अनिवार्य रूप से योग पर भिन्नताएँ हैं। तो ALU एकत्रीकरण पर आधारित है। उदाहरण के लिए, दो को तीन में से घटाना माइनस दो को तीन से जोड़ने के समान है।
- रजिस्टर: ये CPU के अंदर के क्षेत्र हैं जो प्रोसेस्ड डेटा को होल्ड करते हैं। विभिन्न प्रकार के रजिस्टर होते हैं, ठीक वैसे ही जैसे किसी प्रोग्रामिंग भाषा में विभिन्न प्रकार के वेरिएबल होते हैं। एक रजिस्टर इसे सौंपे गए डेटा के प्रकार और विशेषताओं को बनाए रखने के लिए जिम्मेदार होता है।
- सिग्नल: यदि आप चाहते हैं कि सीपीयू एक ही समय में कई अलग-अलग ऑपरेशन करे, तो उन्हें व्यवस्थित करने की कुछ विधि आवश्यक है। ऐसा करने वाले तत्वों को सिग्नल कहा जाता है। प्रत्येक लेन-देन संकेतों के अनुसार कार्य करता है जो सुनिश्चित करता है कि यह किसी अन्य प्रक्रिया में हस्तक्षेप नहीं करता है।
- बस: डेटा द्वारा एक इकाई से दूसरी इकाई में जाने के लिए उपयोग किया जाने वाला पथ। ध्यान दें कि कैसे नाम परिवहन का सुझाव देता है।
रिवर्स इंजीनियरिंग में आप अक्सर अवधारणाएं सुनेंगे
यह समझना कि सीपीयू डेटा को कैसे संसाधित करता है और इसे मेमोरी में संग्रहीत करता है, रजिस्टरों की अवधारणा के साथ, रिवर्स इंजीनियरिंग के दौरान बहुत उपयोगी हो सकता है। विशेष रूप से, आप मेमोरी की अवधारणा को बेहतर ढंग से समझने के लिए नीचे दिए गए आरेख का उपयोग कर सकते हैं:
अंत में, रिवर्स इंजीनियरिंग विश्लेषण के लिए, आपको रजिस्टरों के बारे में कुछ बुनियादी अवधारणाओं को जानना होगा। वे उन विषयों में से एक हैं जिन पर आप सबसे अधिक ध्यान केंद्रित करेंगे। यहां डेटा, पॉइंटर्स और इंडेक्स रजिस्टरों के बारे में कुछ स्पष्टीकरण दिए गए हैं जो आपके लिए सबसे संक्षिप्त तरीके से उपयोगी होंगे:
- 1. ईएक्स: संचायक रजिस्टर के लिए खड़ा है। यह आमतौर पर डेटा बचाता है जो यहां अंकगणितीय परिचालनों की श्रेणी में आता है।
- 2. ईबीएक्स: आधार रजिस्टर के लिए खड़ा है। यह अप्रत्यक्ष संबोधन में एक भूमिका निभाता है।
- 3. ईडीएक्स: डेटा रजिस्टर के लिए खड़ा है। ईडीएक्स अन्य रजिस्टरों में मदद करता है।
- 4. ईआईपी: निर्देश सूचक के लिए खड़ा है। चलाने के लिए डोमेन का पता रखता है।
- 5. ईएसपी: आधार पता रखता है।
- 6. ईएसआई: स्रोत अनुक्रमणिका जानकारी रखता है।
- 7. एडी: गंतव्य अनुक्रमणिका जानकारी रखता है।
आपको इन सभी की बारीकियों को समझने के लिए अलग-अलग शोध करना चाहिए। लेकिन अगर आप मूल बातों को देखें और व्यापार तर्क को समझने की कोशिश करें, तो इससे कोई फर्क नहीं पड़ता कि आप किस प्रोसेसर आर्किटेक्चर के साथ काम कर रहे हैं, रिवर्स इंजीनियरिंग के लिए कोड विश्लेषण काफी आसान होगा।
रिवर्स इंजीनियरिंग अक्सर मशीन कोड से शुरू होती है। यदि आप असेंबली से परिचित हैं या आपके पास कमांड है, तो आप उपरोक्त कई शर्तों को समझ सकते हैं 32-बिट या 64-बिट प्रोसेसर आर्किटेक्चर. यदि आप शुरुआत से असेंबली सीखना चाहते हैं, तो यह रिवर्स इंजीनियरिंग में बेहद उपयोगी होगा।
आप इस सबका क्या करेंगे?
यदि आपको रिवर्स इंजीनियरिंग का अच्छा ज्ञान है, तो आप कोड विश्लेषण कर सकते हैं चाहे आप किसी भी ऑपरेटिंग सिस्टम या प्रोसेसर आर्किटेक्चर के साथ काम कर रहे हों। उदाहरण के लिए, कई प्रोग्राम या कंप्यूटर गेम के फटे हुए संस्करणों को ढूंढना संभव है। यह पूरी तरह से अवैध तरीका है।
हालाँकि, यदि आप एक नैतिक साइबर सुरक्षा पेशेवर बनने जा रहे हैं, तो आपको यह समझने के लिए रिवर्स इंजीनियरों का उपयोग करने की आवश्यकता होगी कि ये क्रैक किए गए प्रोग्राम क्यों क्रैक किए जा रहे हैं। यदि आप रिवर्स इंजीनियरिंग में आगे बढ़ना चाहते हैं या अभी शुरुआत कर रहे हैं, तो यह एक अच्छा विकल्प होगा यदि आप हार्डवेयर और मशीन कोड के बीच संबंध के बारे में जानने का प्रयास करें।