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

बाइनरी पैचिंग तकनीकें

प्रोग्राम के व्यवहार को बदलने या जाँचों को पार करने के लिए बाइनरी को स्थिर रूप से संशोधित और पैच करना समझें।

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

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

बाइनरी पैचिंग क्या है?

बाइनरी पैचिंग किसी कंपाइल किए गए प्रोग्राम के मशीन कोड को उसके मूल स्रोत कोड तक पहुँच के बिना सीधे संशोधित करने की कला है। इसे किसी निष्पादन योग्य फाइल में सर्जरी जैसी बारीकी से बदलाव करने के रूप में समझिए।

यह तकनीक रिवर्स इंजीनियरिंग में अत्यंत महत्वपूर्ण है, क्योंकि इससे हम प्रोग्राम का व्यवहार बदल सकते हैं, त्रुटियाँ ठीक कर सकते हैं या सुरक्षा जाँचों को भी पार कर सकते हैं।

पैचिंग के सामान्य उपयोग

आप किसी बाइनरी में पैच क्यों लगाएंगे?

  • त्रुटि सुधार: दोबारा कंपाइल किए बिना तुरंत सुधार लागू करना।
  • सुविधा संशोधन: प्रोग्राम के काम करने का तरीका बदलना या छिपी सुविधाएँ खोलना।
  • जाँचों को पार करना: लाइसेंस सत्यापन या परीक्षण अवधि की सीमाएँ निष्क्रिय करना।
  • स्थानीयकरण: अलग-अलग भाषाओं के लिए टेक्स्ट स्ट्रिंग बदलना।

आवश्यक पैचिंग उपकरण

बाइनरी में पैच लगाने के लिए आप मुख्य रूप से दो प्रकार के उपकरणों का उपयोग करेंगे:

  • हेक्स संपादक: सीधे बाइट-स्तर पर संशोधन करने के लिए। ये कच्चा हेक्साडेसिमल और ASCII डेटा दिखाते हैं।
  • डिसअसेंबलर: Ghidra या IDA Pro जैसे उपकरण, जो असेंबली कोड समझने और यह पहचानने के लिए उपयोग किए जाते हैं कि पैच कहाँ लगाना है।

पहले हम हेक्स संपादन के पीछे की अवधारणाओं पर ध्यान देंगे।

हेक्स संपादक का उपयोग

हेक्स संपादक किसी फाइल की सामग्री को हेक्साडेसिमल (आधार-16) संख्याओं के रूप में दिखाता है। हेक्स अंकों की प्रत्येक जोड़ी डेटा की एक बाइट दर्शाती है। यह अक्सर ASCII निरूपण भी दिखाता है।

आप पते के अनुसार आगे बढ़ सकते हैं, विशेष बाइट क्रम या टेक्स्ट खोज सकते हैं और बाइट्स को सीधे संशोधित कर सकते हैं। आपके बदलाव फाइल में वापस सहेज दिए जाते हैं।

एक स्ट्रिंग संशोधित करना (अवधारणा)

प्रोग्राम अक्सर संदेशों या लेबलों को अक्षरों की सरल स्ट्रिंग के रूप में संग्रहीत करते हैं। बाइनरी फाइल में ये स्ट्रिंग बाइट्स के क्रम के रूप में दिखाई देती हैं।

हेक्स संपादक में किसी स्ट्रिंग का बाइट क्रम खोजकर, आप उसे बदल सकते हैं ताकि प्रोग्राम चलने पर कोई अलग संदेश दिखाई दे।

सरल स्ट्रिंग प्रोग्राम

इस सरल C प्रोग्राम पर विचार कीजिए। कंपाइल होने के बाद, टेक्स्ट "Hello CoddyKit!" इसके निष्पादन योग्य प्रोग्राम में कहीं ASCII बाइट्स के क्रम के रूप में संग्रहीत होगा।

आप कंपाइल की गई बाइनरी को हेक्स संपादक में खोलकर इन बाइट्स को खोज सकते हैं और उदाहरण के लिए उन्हें "Hello Patcher!" से बदल सकते हैं।

#include <stdio.h>

int main() {
  char message[] = "Hello CoddyKit!";
  printf("%s\n", message);
  return 0;
}

NOP से कोड निष्क्रिय करना

NOP (कोई ऑपरेशन नहीं) निर्देश एक स्थानधारक जैसा होता है। यह CPU को कुछ न करने और बस अगले निर्देश पर जाने के लिए कहता है।

यदि आप किसी निर्देश या कोड के छोटे खंड को त्रुटियाँ उत्पन्न किए बिना निष्क्रिय करना चाहते हैं, तो उसकी बाइट्स को NOP निर्देश के ऑपकोड से बदल सकते हैं (x86/x64 में यह अक्सर 0x90 होता है)।

नियंत्रण प्रवाह बदलना

प्रोग्राम सशर्त जंप निर्देशों का उपयोग करके निर्णय लेते हैं (जैसे "समान होने पर जंप करें" या "शून्य न होने पर जंप करें")। ये प्रोग्राम के प्रवाह को निर्धारित करते हैं।

सशर्त जंप को बिना शर्त वाले जंप (जैसे JMP) में या इसके विपरीत बदलकर, आप प्रोग्राम को हमेशा किसी निश्चित मार्ग पर जाने के लिए बाध्य कर सकते हैं और इस तरह जाँचों को पार कर सकते हैं या तर्क बदल सकते हैं।

किसी जाँच को पार करना

कल्पना कीजिए कि कोई प्रोग्राम जाँचता है कि कोई चर शून्य है या नहीं और शून्य होने पर बाहर निकल जाता है। असेंबली इस प्रकार दिखाई दे सकती है:

TEST EAX, EAX
JE Exit_Func

यदि हम बाहर निकलने से रोकना चाहते हैं, तो JE (समान होने पर जंप) को JNE (समान न होने पर जंप) में बदल सकते हैं या यदि Exit_Func छोटा हो, तो JE Exit_Func को NOP से बदल सकते हैं।

पैचिंग तकनीक की जाँच

जब किसी बाइनरी में किसी विशेष निर्देश या कोड के बहुत छोटे खंड को प्रोग्राम की समग्र संरचना बदले बिना या क्रैश उत्पन्न किए बिना निष्क्रिय करने का प्रयास किया जाता है, तो इस उद्देश्य के लिए सबसे अधिक उपयोग किया जाने वाला असेंबली निर्देश कौन-सा है?

बाइनरी पैचिंग का पुनरावलोकन

इस पाठ में हमने बाइनरी पैचिंग की तकनीकों का अध्ययन किया। आपने सीखा:

  • बाइनरी पैचिंग क्या है और इसके सामान्य उपयोग क्या हैं।
  • हेक्स संपादकों और डिसअसेंबलरों की भूमिका।
  • डेटा (जैसे स्ट्रिंग) और तर्क (NOP तथा जंप का उपयोग करके) को कैसे संशोधित किया जाता है।

पैचिंग के लिए सावधानीपूर्वक विश्लेषण आवश्यक है, लेकिन इससे कंपाइल किए गए सॉफ़्टवेयर के साथ काम करने के शक्तिशाली तरीके मिलते हैं!

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

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

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

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

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

क्या “बाइनरी पैचिंग तकनीकें” पाठ निःशुल्क है?

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

“बाइनरी पैचिंग तकनीकें” में मैं क्या सीखूँगा?

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

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

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

“बाइनरी पैचिंग तकनीकें” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

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