पॉलीमॉर्फिक कोड

कंप्यूटिंग में, बहुरूपी कोड वह कोड होता है जो मूल कलन विधि को अक्षुण्ण रखते हुए उत्परिवर्तित करने के लिए एक बहुरूपी इंजन का उपयोग करता है - अर्थात, कोड हर बार चलने पर खुद को बदल लेता है, लेकिन कोड का फ़ंक्शन (इसका शब्दार्थ) ) बिल्कुल नहीं बदलेगा। उदाहरण के लिए, सरल गणित अभिव्यक्ति 3+1 और 6-2 दोनों एक ही परिणाम प्राप्त करते हैं, फिर भी सेंट्रल प्रोसेसिंग यूनिट में अलग-अलग मशीन कोड के साथ चलते हैं। इस तकनीक का उपयोग कभी-कभी कंप्यूटर वायरस, app और कंप्यूटर कीड़ा द्वारा अपनी उपस्थिति को छिपाने के लिए किया जाता है। कोड छिपाने के लिए कूटलेखन सबसे आम तरीका है। एन्क्रिप्शन के साथ, कोड का मुख्य भाग (जिसे इसका पेलोड (कंप्यूटिंग) भी कहा जाता है) एन्क्रिप्ट किया गया है और अर्थहीन दिखाई देगा। कोड के पहले की तरह कार्य करने के लिए, कोड में एक डिक्रिप्शन फ़ंक्शन जोड़ा जाता है। जब कोड निष्पादित किया जाता है, तो यह फ़ंक्शन पेलोड को पढ़ता है और बदले में इसे निष्पादित करने से पहले इसे डिक्रिप्ट करता है।

अकेले एन्क्रिप्शन बहुरूपता नहीं है। बहुरूपी व्यवहार प्राप्त करने के लिए, एन्क्रिप्टर/डिक्रिप्टर जोड़ी को कोड की प्रत्येक प्रति के साथ उत्परिवर्तित किया जाता है। यह कुछ कोड के विभिन्न संस्करणों की अनुमति देता है जो सभी समान कार्य करते हैं।

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

दुर्भावनापूर्ण प्रोग्रामर्स ने हर बार वायरस या वर्म के फैलने पर अनएन्क्रिप्टेड डिक्रिप्शन इंजन (और परिणामी एन्क्रिप्टेड पेलोड) को फिर से लिखकर इस वायरस-स्कैनिंग रणनीति से अपने एन्क्रिप्टेड कोड को बचाने की मांग की है। एंटी-वायरस सॉफ़्टवेयर डिक्रिप्शन इंजन के विभिन्न म्यूटेशनों के भीतर अंतर्निहित पैटर्न खोजने के लिए परिष्कृत पैटर्न विश्लेषण का उपयोग करता है, इस तरह के मैलवेयर का मज़बूती से पता लगाने की उम्मीद में।

पारंपरिक सिग्नेचर स्कैनिंग जैसे अन्य तरीकों का उपयोग करने से पहले मैलवेयर को वर्चुअल वातावरण में खुद को अलग करने की अनुमति देकर बहुरूपी अस्पष्टता को हराने के लिए इम्यूलेशन का उपयोग किया जा सकता है। ऐसे आभासी वातावरण को कभी-कभी सैंडबॉक्स (कंप्यूटर सुरक्षा) कहा जाता है। बहुरूपता इस तरह के अनुकरण के खिलाफ वायरस की रक्षा नहीं करता है यदि डिक्रिप्टेड पेलोड डिक्रिप्शन एल्गोरिदम में भिन्नता के बावजूद समान रहता है। मेटामॉर्फिक कोड तकनीकों का उपयोग पहचान को और जटिल बनाने के लिए किया जा सकता है, क्योंकि वायरस स्मृति में पहचान योग्य कोड ब्लॉक के बिना निष्पादित हो सकता है जो संक्रमण से संक्रमण तक स्थिर रहता है।

पहला ज्ञात बहुरूपी विषाणु मार्क वाशबर्न द्वारा लिखा गया था। वायरस, जिसे 1260 (कंप्यूटर वायरस) कहा जाता है, 1990 में लिखा गया था। एक बेहतर ज्ञात पॉलीमॉर्फिक वायरस 1992 में हैकर डार्क अवेंजर द्वारा एंटीवायरस सॉफ़्टवेयर से पैटर्न की पहचान से बचने के साधन के रूप में बनाया गया था। एक सामान्य और बहुत विषैला बहुरूपी विषाणु फ़ाइल संक्रमक विषाणु है।

उदाहरण
यह उदाहरण वास्तव में एक बहुरूपी कोड नहीं है, लेकिन xor ऑपरेटर के माध्यम से एन्क्रिप्शन की दुनिया के लिए एक परिचय के रूप में काम करेगा। उदाहरण के लिए, एक एल्गोरिथ्म में वेरिएबल्स A और B का उपयोग करते हुए, लेकिन वेरिएबल C का नहीं, बड़ी मात्रा में कोड हो सकता है जो C को बदलता है, और इसका एल्गोरिथम पर कोई प्रभाव नहीं पड़ेगा, जिससे इसे अंतहीन रूप से और बिना ध्यान दिए बदला जा सके। अंतिम उत्पाद क्या होगा।

शुरू: गोटो डिक्रिप्शन_कोड कूट रूप दिया गया: ...बहुत सारे एन्क्रिप्टेड कोड... डिक्रिप्शन_कोड: सी = सी + 1 ए = एन्क्रिप्टेड फंदा: बी = * ए सी = 3214 * ए बी = बी एक्सओआर क्रिप्टोकी * ए = बी सी = 1 सी = ए + बी ए = ए + 1 गोटो लूप अगर ए = डिक्रिप्शन_कोड नहीं है सी = सी^2 गोटो एन्क्रिप्टेड क्रिप्टोकी: कुछ_यादृच्छिक_संख्या

एन्क्रिप्टेड कोड पेलोड है। कोड के विभिन्न संस्करणों को बनाने के लिए, प्रत्येक प्रतिलिपि में सी में हेरफेर करने वाली कचरा लाइनें बदल जाएंगी। एन्क्रिप्टेड के अंदर कोड (बहुत सारे एन्क्रिप्टेड कोड) डिक्रिप्शन_कोड और क्रिप्टोकी और प्रत्येक एल्गोरिदम के बीच कोड को नए कोड के लिए खोज सकते हैं जो वही काम करता है। आमतौर पर, कोडर वायरस की पहली पीढ़ी के लिए एक शून्य कुंजी (उदाहरण के लिए; A xor 0 = A) का उपयोग करता है, जिससे कोडर के लिए यह आसान हो जाता है क्योंकि इस कुंजी के साथ कोड एन्क्रिप्ट नहीं किया जाता है। सांकेतिक शब्दों में बदलनेवाला तो एक वृद्धिशील कुंजी एल्गोरिथ्म या एक यादृच्छिक एक लागू करता है।

यह भी देखें

 * उल्लेखनीय कंप्यूटर वायरस और वर्म्स की समयरेखा
 * मेटामॉर्फिक कोड
 * स्व-संशोधित कोड
 * अल्फ़ान्यूमेरिक शेलकोड
 * शेलकोड
 * सॉफ्टवेयर क्रैकिंग
 * सुरक्षा दरार
 * भ्रमित कोड
 * ओलिगोमॉर्फिक कोड

इस पेज में लापता आंतरिक लिंक की सूची

 * अर्थ विज्ञान
 * वाइरस
 * अतिक्रमण संसूचन प्रणाली
 * उलझा हुआ कोड