कोड इंजेक्शन विंडोज पर आम है। अपने व्यवहार को संशोधित करने के लिए एप्लिकेशन अपने कोड के टुकड़ों को दूसरी चल रही प्रक्रिया में इंजेक्ट करते हैं। इस तकनीक का उपयोग अच्छे या बुरे के लिए किया जा सकता है, लेकिन किसी भी तरह से यह समस्या पैदा कर सकता है।
कोड इंजेक्शन को आमतौर पर DLL इंजेक्शन भी कहा जाता है क्योंकि इंजेक्शन कोड अक्सर एक के रूप में होता है DLL (डायनेमिक लिंक लाइब्रेरी) फ़ाइल । हालाँकि, अनुप्रयोग अन्य प्रकार के कोड को भी इंजेक्ट कर सकते हैं जो एक प्रक्रिया में DLL नहीं हैं।
क्या कोड इंजेक्शन के लिए प्रयोग किया जाता है
कोड इंजेक्शन का उपयोग विंडोज पर सभी प्रकार की चाल और कार्यक्षमता को पूरा करने के लिए किया जाता है। हालांकि वैध कार्यक्रम इसका उपयोग करते हैं, यह मैलवेयर द्वारा भी उपयोग किया जाता है। उदाहरण के लिए:
- एंटीवायरस प्रोग्राम अक्सर वेब ब्राउज़र में कोड इंजेक्ट करते हैं। वे उदाहरण के लिए, नेटवर्क ट्रैफ़िक की निगरानी और खतरनाक वेब सामग्री को ब्लॉक करने के लिए इसका उपयोग कर सकते हैं।
- दुर्भावनापूर्ण प्रोग्राम आपके ब्राउज़िंग को बेहतर तरीके से ट्रैक करने, पासवर्ड और क्रेडिट कार्ड नंबर जैसी संरक्षित जानकारी को चोरी करने और अपने ब्राउज़र की सेटिंग्स को बदलने के लिए आपके वेब ब्राउज़र में कोड जोड़ सकते हैं।
- 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 के शक्तिशाली कोड कोड की जांच कर सकते हैं प्रक्रिया एक्सप्लोरर आवेदन। यह मूल रूप से टास्क मैनेजर का एक उन्नत संस्करण है जो अतिरिक्त सुविधाओं से भरा है।
यदि आप ऐसा करना चाहते हैं तो प्रोसेस एक्सप्लोरर को डाउनलोड और चलाएं। दृश्य> निचला फलक दृश्य> DLL पर क्लिक करें या Ctrl + D दबाएं।
शीर्ष फलक में एक प्रक्रिया का चयन करें और लोड किए गए DLL को देखने के लिए निचले फलक में देखें। "कंपनी का नाम" कॉलम इस सूची को फ़िल्टर करने का एक उपयोगी तरीका प्रदान करता है।
उदाहरण के लिए, यहां "Microsoft Corporation" द्वारा बनाई गई DLL की एक किस्म को देखना सामान्य है, क्योंकि वे विंडोज का हिस्सा हैं। यह उसी कंपनी द्वारा बनाई गई DLL को देखना सामान्य है जो प्रक्रिया में है - "Google Inc." नीचे स्क्रीनशॉट में क्रोम के मामले में।
हम यहां "AVAST सॉफ़्टवेयर" द्वारा बनाए गए कुछ DLL भी देख सकते हैं। यह इंगित करता है कि हमारे सिस्टम पर अवास्ट एंटीमलवेयर सॉफ्टवेयर क्रोम में "अवास्ट स्क्रिप्ट ब्लॉकिंग फिल्टर लाइब्रेरी" जैसे कोड को इंजेक्ट कर रहा है।
यदि आप अपने सिस्टम पर कोड इंजेक्शन ढूंढते हैं तो बहुत कुछ नहीं कर सकते हैं - समस्या को रोकने के लिए प्रोग्राम इंजेक्शन कोड की स्थापना रद्द करने से अलग। उदाहरण के लिए, यदि Chrome नियमित रूप से क्रैश होता है, तो आप यह देखना चाहते हैं कि क्या क्रोम में कोड को इंजेक्ट करने वाले कोई प्रोग्राम हैं और उन्हें क्रोम की प्रक्रियाओं के साथ छेड़छाड़ करने से रोकने के लिए उन्हें अनइंस्टॉल कर सकते हैं।
कोड इंजेक्शन कैसे काम करता है?
कोड इंजेक्शन आपके डिस्क पर अंतर्निहित एप्लिकेशन को संशोधित नहीं करता है। इसके बजाय, यह उस एप्लिकेशन को चलाने के लिए इंतजार करता है और यह कैसे काम करता है इसे बदलने के लिए उस प्रक्रिया में अतिरिक्त कोड इंजेक्ट करता है।
विंडोज में विभिन्न प्रकार शामिल हैं एप्लिकेशन प्रोग्रामिंग इंटरफेस (एपीआई) कि कोड इंजेक्शन के लिए इस्तेमाल किया जा सकता है। एक प्रक्रिया खुद को एक लक्ष्य प्रक्रिया में संलग्न कर सकती है, मेमोरी आवंटित कर सकती है, उस मेमोरी में एक डीएलएल या अन्य कोड लिख सकती है, और फिर लक्ष्य प्रक्रिया को कोड निष्पादित करने का निर्देश दे सकती है। विंडोज आपके कंप्यूटर पर प्रक्रियाओं को इस तरह एक दूसरे के साथ हस्तक्षेप करने से नहीं रोकता है।
अधिक तकनीकी जानकारी के लिए, इस ब्लॉग पोस्ट को समझाते हुए देखें डेवलपर्स DLL को कैसे इंजेक्ट कर सकते हैं और यह देखो विंडोज पर अन्य प्रकार के कोड इंजेक्शन .
कुछ मामलों में, कोई डिस्क पर अंतर्निहित कोड को बदल सकता है - उदाहरण के लिए, एक DLL फ़ाइल को बदलकर जो कि पीसी गेम के साथ एक संशोधित एक के साथ आता है ताकि धोखा या चोरी को सक्षम किया जा सके। यह तकनीकी रूप से "कोड इंजेक्शन" नहीं है। कोड को एक चल रही प्रक्रिया में इंजेक्ट नहीं किया जा रहा है, लेकिन प्रोग्राम को एक ही नाम के साथ एक अलग DLL लोड करने में धोखा दिया जा रहा है।
छवि क्रेडिट: Lukatme /शटरस्टॉक.कॉम.