रिवर्स इंजीनियरिंग और बाइनरी विश्लेषण की मूल बातें · पाठ

फ़ंक्शन और डेटा की पहचान

डिसअसेंबल की गई बाइनरी के भीतर महत्वपूर्ण फ़ंक्शन, स्ट्रिंग और अन्य डेटा खोजने की तकनीकें सीखें।

पाठ 2, कुल 4 में से11 चरण

फ़ंक्शन और डेटा की पहचान, CoddyKit पर रिवर्स इंजीनियरिंग और बाइनरी विश्लेषण की मूल बातें का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह रिवर्स इंजीनियरिंग और बाइनरी विश्लेषण की मूल बातें सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। रिवर्स इंजीनियरिंग और बाइनरी विश्लेषण की मूल बातें पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

बाइनरी के महत्वपूर्ण हिस्सों की पहचान

आपका स्वागत है! रिवर्स इंजीनियरिंग में हमारा लक्ष्य स्रोत कोड के बिना यह समझना है कि कोई प्रोग्राम कैसे काम करता है। पहला महत्वपूर्ण कदम इसके मुख्य घटकों की पहचान करना है: फ़ंक्शन और डेटा।

ये तत्व किसी भी सॉफ़्टवेयर के निर्माण खंड और कच्चे माल जैसे होते हैं। इन्हें जल्दी पहचानना सीखने से आपके विश्लेषण की गति काफ़ी बढ़ जाएगी।

स्ट्रिंग: आपके पहले संकेत

बाइनरी में स्ट्रिंग अक्सर सबसे आसान और सबसे उपयोगी संकेत होती हैं। वे प्रोग्राम का उद्देश्य, त्रुटि संदेश, उपयोगकर्ता संकेत, फ़ाइल पथ, नेटवर्क पते या API कॉल प्रकट कर सकती हैं।

  • त्रुटि संदेश: "Error: File not found"
  • URL/पथ: "https://malicious.com/update", "C:\Windows\System32\config.dat"
  • उपयोगकर्ता संकेत: "Enter password:"

किसी भी विश्लेषक के लिए इन्हें खोजना आम तौर पर पहला कदम होता है।

डिसअसेंबलर में स्ट्रिंग का स्थान पता करना

Ghidra या IDA Pro जैसे अधिकांश डिसअसेंबलर में बाइनरी के भीतर पहचानी गई सभी स्ट्रिंग की सूची दिखाने वाली एक समर्पित सुविधा होती है। इससे आपको कच्चे बाइट को स्वयं स्कैन करने की आवश्यकता नहीं पड़ती।

जब आपको कोई दिलचस्प स्ट्रिंग मिलती है, तो आम तौर पर आप उसका क्रॉस-रेफ़रेंस देख सकते हैं और पता लगा सकते हैं कि कोड में उसका उपयोग कहाँ हो रहा है। इससे आप तुरंत संबंधित फ़ंक्शन तक पहुँच जाते हैं।

फ़ंक्शन: प्रोग्राम के निर्माण खंड

फ़ंक्शन (या सबरूटीन) किसी विशिष्ट कार्य को करने के लिए बनाया गया कोड का एक स्वतंत्र खंड होता है। प्रोग्राम कई ऐसे फ़ंक्शन से बने होते हैं जो एक-दूसरे को कॉल करते हैं।

फ़ंक्शन की पहचान करने से आप जटिल प्रोग्राम को छोटे, व्यवस्थित हिस्सों में बाँट सकते हैं, जिससे उसके समग्र तर्क और प्रवाह को समझना आसान हो जाता है।

फ़ंक्शन के प्रवेश बिंदुओं की पहचान

फ़ंक्शन अक्सर निर्देशों की एक विशेष शृंखला से शुरू होते हैं, जिसे प्रोलॉग कहा जाता है। यह तैयारी आम तौर पर लोकल चरों के लिए स्टैक तैयार करती है और पिछले स्टैक फ़्रेम को सहेजती है।

एक सामान्य x86 प्रोलॉग इस प्रकार दिखता है:

push ebp
mov ebp, esp

यह शृंखला पुराने बेस पॉइंटर को स्टैक पर पुश करती है और वर्तमान स्टैक पॉइंटर को नए बेस पॉइंटर के रूप में सेट करती है।

फ़ंक्शन से बाहर निकलना: एपिलॉग

जिस तरह फ़ंक्शन के प्रवेश बिंदु होते हैं, उसी तरह उनके निकास बिंदु भी होते हैं, जिन्हें एपिलॉग चिह्नित करता है। एपिलॉग स्टैक को फ़ंक्शन कॉल से पहले की स्थिति में पुनर्स्थापित करता है और नियंत्रण कॉल करने वाले फ़ंक्शन को वापस देता है।

एक सामान्य x86 एपिलॉग इस प्रकार हो सकता है:

mov esp, ebp
pop ebp
ret

यह स्टैक पॉइंटर को पुनर्स्थापित करता है, पुराने बेस पॉइंटर को पॉप करता है और फ़ंक्शन से लौटता है।

सामान्य लाइब्रेरी फ़ंक्शन की पहचान

अधिकांश प्रोग्राम सिस्टम लाइब्रेरी के फ़ंक्शन का उपयोग करते हैं (जैसे स्क्रीन पर प्रिंट करने, फ़ाइल इनपुट-आउटपुट और नेटवर्क संचार के लिए)। डिसअसेंबलर अक्सर इन्हें आपके लिए पहचान सकते हैं।

वे ऐसा आयात किए गए प्रतीकों (जैसे Windows की PE फ़ाइलों में Import Address Table या Linux की ELF फ़ाइलों में Procedure Linkage Table) को देखकर या ज्ञात फ़ंक्शन हस्ताक्षरों से मिलान करके करते हैं।

डेटा कहाँ रहता है: डेटा अनुभाग

कोड के अलावा, बाइनरी में विभिन्न डेटा अनुभाग होते हैं। इन्हें समझने से आपको वैश्विक चर, नियतांक और प्रोग्राम-व्यापी अन्य जानकारी का स्थान पता लगाने में सहायता मिलती है:

  • .data: आरंभ किए गए वैश्विक और स्थिर चर।
  • .bss: आरंभ न किए गए वैश्विक और स्थिर चर (रनटाइम पर शून्य किए जाते हैं)।
  • .rdata: केवल-पठन योग्य डेटा, जैसे स्ट्रिंग और नियतांक।

डिसअसेंबलर में इन अनुभागों को आम तौर पर स्पष्ट रूप से नाम दिया जाता है।

वैश्विक और लोकल चरों में अंतर

वैश्विक और लोकल चरों में अंतर करना महत्वपूर्ण है। वैश्विक चर पूरे प्रोग्राम में सुलभ होते हैं और आम तौर पर .data या .bss अनुभागों में संग्रहीत किए जाते हैं।

दूसरी ओर, लोकल चर फ़ंक्शन कॉल किए जाने पर स्टैक पर बनाए जाते हैं और केवल उसी फ़ंक्शन के भीतर सुलभ होते हैं। आम तौर पर उनका संदर्भ स्टैक फ़्रेम पॉइंटर के सापेक्ष दिया जाता है (जैसे [ebp-0x4])।

त्वरित जाँच: डेटा संकेत

आप एक बाइनरी का विश्लेषण कर रहे हैं और आपको .rdata अनुभाग के भीतर किसी पते का संदर्भ दिखाई देता है। इस पते पर किस प्रकार का डेटा संग्रहीत होने की सबसे अधिक संभावना है?

मुख्य निष्कर्ष

आपने स्थैतिक विश्लेषण की मूलभूत तकनीकें सीख ली हैं!

  • स्ट्रिंग्स कार्यक्रम की कार्यक्षमता के बारे में तुरंत जानकारी देती हैं।
  • फ़ंक्शन के आरंभिक और अंतिम भाग कोड की सीमाएँ निर्धारित करने में मदद करते हैं।
  • पुस्तकालय फ़ंक्शनों को पहचानने से विश्लेषण तेज़ हो जाता है।
  • डेटा अनुभागों (.data, .bss, .rdata) को समझने से वैश्विक चर और स्थिरांक ढूँढ़ने में मदद मिलती है।

डिसअसेंबल की गई बाइनरी फ़ाइलों को समझने और उनमें आगे बढ़ने के लिए ये कौशल आवश्यक हैं।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Assembly सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
48

अक्सर पूछे जाने वाले प्रश्न

क्या “फ़ंक्शन और डेटा की पहचान” पाठ निःशुल्क है?

हाँ — रिवर्स इंजीनियरिंग और बाइनरी विश्लेषण की मूल बातें अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “फ़ंक्शन और डेटा की पहचान” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। रिवर्स इंजीनियरिंग और बाइनरी विश्लेषण की मूल बातें पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“फ़ंक्शन और डेटा की पहचान” में मैं क्या सीखूँगा?

डिसअसेंबल की गई बाइनरी के भीतर महत्वपूर्ण फ़ंक्शन, स्ट्रिंग और अन्य डेटा खोजने की तकनीकें सीखें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ रिवर्स इंजीनियरिंग और बाइनरी विश्लेषण की मूल बातें का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या रिवर्स इंजीनियरिंग और बाइनरी विश्लेषण की मूल बातें शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर रिवर्स इंजीनियरिंग और बाइनरी विश्लेषण की मूल बातें शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“फ़ंक्शन और डेटा की पहचान” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस रिवर्स इंजीनियरिंग और बाइनरी विश्लेषण की मूल बातें पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर रिवर्स इंजीनियरिंग और बाइनरी विश्लेषण की मूल बातें पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. डिसअसेंबलर का परिचय
  2. फ़ंक्शन और डेटा की पहचान
  3. नियंत्रण प्रवाह ग्राफ़ विश्लेषण
  4. स्ट्रिंग और क्रॉस-रेफ़रेंस विश्लेषण
← रिवर्स इंजीनियरिंग और बाइनरी विश्लेषण की मूल बातें पर वापस जाएँ