विंडोज पर कोड इंजेक्शन क्या है?
कोड इंजेक्शन विंडोज पर आम है। अनुप्रयोग अपने व्यवहार को संशोधित करने के लिए एक अन्य चल रही प्रक्रिया में अपने स्वयं के कोड के "इंजेक्ट" टुकड़े। इस तकनीक का उपयोग अच्छे या बुरे के लिए किया जा सकता है, लेकिन किसी भी तरह से यह समस्या पैदा कर सकता है.
कोड इंजेक्शन को आमतौर पर DLL इंजेक्शन भी कहा जाता है क्योंकि इंजेक्शन कोड अक्सर DLL (डायनेमिक लिंक लाइब्रेरी) फ़ाइल के रूप में होता है। हालाँकि, अनुप्रयोग अन्य प्रकार के कोड को भी इंजेक्ट कर सकते हैं जो DLLs प्रक्रिया में नहीं हैं.
क्या कोड इंजेक्शन के लिए प्रयोग किया जाता है
विंडोज पर सभी प्रकार की चाल और कार्यक्षमता को पूरा करने के लिए कोड इंजेक्शन का उपयोग किया जाता है। हालांकि वैध कार्यक्रम इसका उपयोग करते हैं, यह मैलवेयर द्वारा भी उपयोग किया जाता है। उदाहरण के लिए:
- एंटीवायरस प्रोग्राम अक्सर वेब ब्राउज़र में कोड इंजेक्ट करते हैं। वे उदाहरण के लिए, नेटवर्क ट्रैफ़िक पर नज़र रखने और खतरनाक वेब सामग्री को ब्लॉक करने के लिए इसका उपयोग कर सकते हैं.
- दुर्भावनापूर्ण प्रोग्राम आपके ब्राउज़िंग को बेहतर ढंग से ट्रैक करने, पासवर्ड और क्रेडिट कार्ड नंबर जैसी संरक्षित जानकारी चुराने और अपने ब्राउज़र की सेटिंग बदलने के लिए आपके वेब ब्राउज़र में कोड जोड़ सकते हैं.
- Stardock's WindowBlinds, जो आपके डेस्कटॉप को थीम देती है, कोड्स को यह संशोधित करने के लिए कोड बनाती है कि विंडोज़ कैसे खींची जाती हैं.
- विंडोज डेस्कटॉप के काम करने के तरीके को बदलने के लिए स्टारडॉक के बाड़ कोड को इंजेक्ट करते हैं.
- AutoHotkey, जो आपको स्क्रिप्ट बनाने और सिस्टम-वाइड हॉटकीज़ को असाइन करने देता है, इसे पूरा करने के लिए कोड इंजेक्ट करता है.
- ग्राफिक्स ड्राइवर की तरह NVIDIA के DLLs ग्राफिक्स से संबंधित कार्यों की एक किस्म को पूरा करने के लिए.
- कुछ प्रोग्राम किसी एप्लिकेशन में अतिरिक्त मेनू विकल्प जोड़ने के लिए DLL को इंजेक्ट करते हैं.
- पीसी गेम धोखा देने वाले उपकरण अक्सर अपने व्यवहार को संशोधित करने और अन्य खिलाड़ियों पर अनुचित लाभ प्राप्त करने के लिए कोड को गेम में इंजेक्ट करते हैं.
क्या कोड इंजेक्शन खराब है?
इस तकनीक का उपयोग विंडोज पर विभिन्न प्रकार के अनुप्रयोगों द्वारा लगातार किया जाता है। यह विभिन्न प्रकार के कार्यों को पूरा करने का एकमात्र वास्तविक तरीका है। Apple के iOS या Google के Android जैसे आधुनिक मोबाइल प्लेटफ़ॉर्म की तुलना में, विंडोज़ डेस्कटॉप इतना शक्तिशाली है क्योंकि अगर डेवलपर्स के लिए इस तरह का लचीलापन है.
बेशक, उस सारी शक्ति के साथ कुछ खतरा आता है। कोड इंजेक्शन अनुप्रयोगों में समस्या और बग पैदा कर सकता है। Google का कहना है कि जिन विंडोज उपयोगकर्ताओं को अपने क्रोम ब्राउज़र में कोड इंजेक्ट किया गया है, उन्हें क्रोम क्रैश का अनुभव होने की संभावना 15% अधिक है, यही कारण है कि Google इसे अवरुद्ध करने के लिए काम कर रहा है। Microsoft नोट करता है कि कोड इंजेक्शन का उपयोग दुर्भावनापूर्ण अनुप्रयोगों द्वारा ब्राउज़र सेटिंग्स के साथ छेड़छाड़ करने के लिए किया जा सकता है, जो एक कारण है कि यह पहले से ही एज में अवरुद्ध है.
Microsoft Microsoft Outlook में तृतीय-पक्ष DLL लोड किए गए हैं या नहीं, यह जाँचने के निर्देश भी दिए गए हैं क्योंकि वे बहुत से Outlook क्रैश का कारण बनते हैं.
Microsoft कर्मचारी ने 2004 से इसे डेवलपर ब्लॉग में डाला:
DLL इंजेक्शन कभी सुरक्षित नहीं होता है। आप एक ऐसी प्रक्रिया में कोड स्क्वेर करने के बारे में बात कर रहे हैं, जो उस प्रक्रिया के लेखक द्वारा डिज़ाइन, निर्मित या परीक्षण नहीं किया गया था, और उस कोड को चलाने के लिए एक सह-चयन या एक धागा बना रहा था। आप समय, सिंक्रनाइज़ेशन, या संसाधन समस्याएँ पैदा करने का जोखिम चलाते हैं जो पहले नहीं थे या जो समस्याएँ थीं, उन्हें समाप्त नहीं किया था.
दूसरे शब्दों में, कोड इंजेक्शन एक गंदे हैक की तरह है। एक आदर्श दुनिया में, इसे पूरा करने का एक सुरक्षित तरीका होगा जो संभावित अस्थिरता का कारण नहीं था। हालाँकि, कोड इंजेक्शन आज विंडोज एप्लिकेशन प्लेटफॉर्म का एक सामान्य हिस्सा है। यह लगातार आपके विंडोज पीसी पर पृष्ठभूमि में हो रहा है। आप इसे एक आवश्यक बुराई कह सकते हैं.
इंजेक्ट किए गए DLL की जांच कैसे करें
आप Microsoft के शक्तिशाली प्रोसेस एक्सप्लोरर एप्लिकेशन के साथ अपने सिस्टम पर कोड इंजेक्शन की जांच कर सकते हैं। यह मूल रूप से अतिरिक्त सुविधाओं के साथ पैक टास्क मैनेजर का एक उन्नत संस्करण है.
यदि आप ऐसा करना चाहते हैं तो प्रोसेस एक्सप्लोरर को डाउनलोड और चलाएं। व्यू> लोअर पेन व्यू> डीएलएल पर क्लिक करें या Ctrl + D दबाएं.
शीर्ष फलक में एक प्रक्रिया का चयन करें और लोड किए गए DLL को देखने के लिए निचले फलक में देखें। "कंपनी का नाम" कॉलम इस सूची को फ़िल्टर करने का एक उपयोगी तरीका प्रदान करता है.
उदाहरण के लिए, यहां "Microsoft Corporation" द्वारा बनाई गई DLL की एक किस्म को देखना सामान्य है, क्योंकि वे विंडोज का हिस्सा हैं। एक ही कंपनी द्वारा बनाई गई DLL को प्रश्न में प्रक्रिया के रूप में देखना सामान्य है- स्क्रीनशॉट में क्रोम के मामले में "Google Inc.".
हम यहां "AVAST सॉफ़्टवेयर" द्वारा बनाए गए कुछ DLL भी देख सकते हैं। यह इंगित करता है कि हमारे सिस्टम पर अवास्ट एंटीमलवेयर सॉफ्टवेयर क्रोम में "अवास्ट स्क्रिप्ट ब्लॉकिंग फिल्टर लाइब्रेरी" की तरह कोड इंजेक्ट कर रहा है।.
यदि आप अपने सिस्टम पर कोड इंजेक्शन ढूंढते हैं तो बहुत कुछ नहीं कर सकते हैं-समस्या को रोकने के लिए प्रोग्राम इंजेक्शन कोड की स्थापना रद्द करने से अलग। उदाहरण के लिए, यदि क्रोम नियमित रूप से क्रैश होता है, तो आप यह देखना चाहते हैं कि क्या क्रोम में कोड को इंजेक्ट करने वाले कोई प्रोग्राम हैं और उन्हें क्रोम की प्रक्रियाओं से छेड़छाड़ करने से रोकने के लिए उन्हें अनइंस्टॉल कर सकते हैं।.
कोड इंजेक्शन कैसे काम करता है?
कोड इंजेक्शन आपके डिस्क पर अंतर्निहित एप्लिकेशन को संशोधित नहीं करता है। इसके बजाय, यह उस एप्लिकेशन को चलाने के लिए इंतजार करता है और यह कैसे काम करता है इसे बदलने के लिए उस प्रक्रिया में अतिरिक्त कोड इंजेक्ट करता है.
विंडोज में विभिन्न प्रकार के एप्लिकेशन प्रोग्रामिंग इंटरफेस (एपीआई) शामिल हैं जिनका उपयोग कोड इंजेक्शन के लिए किया जा सकता है। एक प्रक्रिया खुद को एक लक्ष्य प्रक्रिया में संलग्न कर सकती है, मेमोरी आवंटित कर सकती है, उस मेमोरी में एक डीएलएल या अन्य कोड लिख सकती है, और फिर कोड को निष्पादित करने के लिए लक्ष्य प्रक्रिया को निर्देश दे सकती है। विंडोज आपके कंप्यूटर पर प्रक्रियाओं को इस तरह एक-दूसरे के साथ हस्तक्षेप करने से नहीं रोकता है.
अधिक तकनीकी जानकारी के लिए, इस ब्लॉग पोस्ट को समझाएं कि डेवलपर्स DLL को कैसे इंजेक्ट कर सकते हैं और यह विंडोज द्वारा अन्य प्रकार के कोड इंजेक्शन को देखता है.
कुछ मामलों में, कोई डिस्क के लिए अंतर्निहित कोड को बदल सकता है, उदाहरण के लिए, एक डीएलएल फ़ाइल को बदलकर जो पीसी गेम के साथ आता है ताकि धोखा या चोरी को सक्षम किया जा सके। यह तकनीकी रूप से "कोड इंजेक्शन" नहीं है। कोड को एक चल रही प्रक्रिया में इंजेक्ट नहीं किया जा रहा है, लेकिन कार्यक्रम को एक ही नाम के साथ एक अलग DLL लोड करने में धोखा दिया जा रहा है।.
चित्र साभार: Lukatme / Shutterstock.com.