
रिफ्लेक्टिव DLL इंजेक्शन एक लाइब्रेरी इंजेक्शन तकनीक है जिसमें रिफ्लेक्टिव प्रोग्रामिंग की अवधारणा का उपयोग करके मेमोरी से एक लाइब्रेरी को होस्ट प्रोसेस में लोड किया जाता है।
रिफ्लेक्टिव DLL इंजेक्शन एक लाइब्रेरी इंजेक्शन तकनीक है जिसमें रिफ्लेक्टिव प्रोग्रामिंग की अवधारणा का उपयोग करके मेमोरी से किसी लाइब्रेरी को होस्ट प्रोसेस में लोड किया जाता है। इस प्रकार, लाइब्रेरी स्वयं को लोड करने के लिए जिम्मेदार होती है, जो एक न्यूनतम पोर्टेबल एक्जीक्यूटेबल (PE) फ़ाइल लोडर लागू करती है। यह तब होस्ट सिस्टम और प्रोसेस के साथ न्यूनतम इंटरैक्शन के साथ नियंत्रित कर सकती है कि वह होस्ट के साथ कैसे लोड और इंटरैक्ट करेगी।
इंजेक्शन Windows NT4 से लेकर Windows 8 तक काम करता है, जो x86, x64 और ARM पर लागू होता है।
किसी प्रोसेस में दूरस्थ रूप से लाइब्रेरी इंजेक्ट करने की प्रक्रिया दो चरणों में होती है। पहला, जिस लाइब्रेरी को आप इंजेक्ट करना चाहते हैं उसे लक्षित प्रोसेस के एड्रेस स्पेस में लिखा जाना चाहिए (यहाँ इसे होस्ट प्रोसेस कहा जाता है)। दूसरा, लाइब्रेरी को होस्ट प्रोसेस में इस तरह लोड किया जाना चाहिए कि लाइब्रेरी की रन-टाइम अपेक्षाएँ पूरी हों, जैसे कि उसके इम्पोर्ट्स को रिज़ॉल्व करना या उसे मेमोरी में उपयुक्त स्थान पर रीलोकेट करना।
मान लें कि हमारे पास होस्ट प्रोसेस में कोड निष्पादन है और जिस लाइब्रेरी को हम इंजेक्ट करना चाहते हैं उसे होस्ट प्रोसेस की मेमोरी में किसी मनमाने स्थान पर लिखा गया है, तो रिफ्लेक्टिव DLL इंजेक्शन निम्नानुसार काम करता है।
Visual Studio C++ में 'rdi.sln' फ़ाइल खोलें और inject.exe और reflective_dll.dll बनाने के लिए समाधान को Release मोड में बनाएँ।
परीक्षण के लिए inject.exe का उपयोग करके reflective_dll.dll को एक प्रोसेस आईडी के माध्यम से होस्ट प्रोसेस में इंजेक्ट करें, जैसे:
inject.exe 1234
3-क्लॉज़ BSD लाइसेंस के तहत लाइसेंस प्राप्त, कृपया विवरण के लिए LICENSE.txt देखें।