मैं कॉलेज में एक कोर्स कर रहा हूं, जहां प्रयोगशालाओं में से एक कोड पर बफर अतिप्रवाह कारनामे करना है जो वे हमें देते हैं। यह साधारण कारनामों से लेकर जैसे किसी फ़ंक्शन के लिए रिटर्न एड्रेस को स्टैक पर बदलने के लिए एक अलग फ़ंक्शन पर लौटने के लिए, सभी तरह से कोड के लिए जो प्रोग्राम रजिस्टर / मेमोरी स्टेट को बदलता है लेकिन फिर उस फ़ंक्शन पर वापस जाता है जिसे आपने कॉल किया था, जिसका अर्थ है फंक्शन जिसे आप कहते हैं, शोषण के लिए पूरी तरह से बेखबर है।
मैंने इस पर कुछ शोध किया, और इस तरह के कारनामों का उपयोग आज भी हर जगह किया जाता है, यहाँ तक कि Wii पर होमब्रे चलाने जैसे कामों में , और iOS 4.3.1 के लिए अनैतिक जेलब्रेक
मेरा सवाल यह है कि इस समस्या को ठीक करना इतना मुश्किल क्यों है? यह स्पष्ट है कि यह सैकड़ों चीजों को हैक करने के लिए इस्तेमाल किया जाने वाला एक प्रमुख कारनाम है, लेकिन ऐसा लगता है कि अनुमत लंबाई से पहले किसी भी इनपुट को काटकर, और केवल आपके द्वारा किए गए सभी इनपुट को सैनिटाइज़ करके इसे ठीक करना बहुत आसान होगा।
संपादित करें: एक और परिप्रेक्ष्य जो मैं विचार करने के लिए उत्तर चाहता हूं - सी के निर्माता पुस्तकालयों को फिर से लागू करके इन मुद्दों को ठीक क्यों नहीं करते हैं?