समानता के लिए एक दूसरे के खिलाफ दो हेक्साडेसिमल फ़ाइल हस्ताक्षरों की तुलना करने का सबसे अच्छा तरीका क्या होगा।जावा में प्रोग्रामेटिकल दृष्टिकोण
अधिक विशेष रूप से, मैं एक .exe फ़ाइल का हेक्साडेसिमल प्रतिनिधित्व लेने और वायरस हस्ताक्षर की एक श्रृंखला के खिलाफ इसकी तुलना करना चाहता हूं। इस दृष्टिकोण के लिए मैं एन अक्षर (यानी 10 हेक्स वर्ण) के अलग-अलग समूहों में फ़ाइल (exe) हेक्स प्रतिनिधित्व को तोड़ने की योजना बना रहा हूं और वायरस हस्ताक्षर के साथ ऐसा ही करता हूं। मैं कुछ प्रकार की ह्युरिस्टिक्स करने का लक्ष्य रख रहा हूं और इसलिए सांख्यिकीय जांच कर रहा हूं कि इस एक्सई फाइल में ज्ञात वायरस हस्ताक्षर के खिलाफ समानता का एक्स% है या नहीं।
वायरस [एन, एन -1] के खिलाफ exe [n, n-1] की तुलना करने के लिए मैंने ऐसा करने का सोचा सबसे सरल और संभावित गलत तरीका है, जहां सरणी में प्रत्येक तत्व एक उप सरणी है, और इसलिए exe1 [0,9] वायरस 1 [0,9] के खिलाफ। प्रत्येक सबसेट सांख्यिकीय रूप से वर्गीकृत किया जाएगा।
जैसा कि आप महसूस कर सकते हैं कि तुलनात्मक रूप से बड़ी संख्या में तुलना होगी और इसलिए बहुत धीमी होगी। तो मैंने यह पूछने के लिए सोचा कि क्या आप इस तरह की तुलना करने के लिए बेहतर दृष्टिकोण के बारे में सोच सकते हैं, उदाहरण के लिए अलग-अलग डेटा संरचनाओं को एक साथ कार्यान्वित करना।
यह एक परियोजना के लिए मेरी बीएससी जहां बहुरूपी मैलवेयर पता लगाने के लिए एक एल्गोरिथ्म विकसित करने के लिए कोशिश कर रहा हूँ के लिए कर रहा हूँ, यह पूरी व्यवस्था है, जहां अन्य आनुवंशिक एल्गोरिथम पर आधारित है स्थिर वायरस विकसित करने के लिए का केवल एक हिस्सा है हस्ताक्षर। संसाधनों जैसे किसी भी सलाह, टिप्पणियां, या सामान्य जानकारी का बहुत स्वागत है।
परिभाषा: जाहिरा तौर पर विभिन्न संरचनाओं (भिन्न रूप) करते हुए बहुरूपी मैलवेयर (वायरस, कृमि, ...), ही कार्यक्षमता और उनके "मूल" संस्करण के रूप में पेलोड बनाए रखता है। वे कोड obfuscation द्वारा प्राप्त करते हैं और इस प्रकार अपने हेक्स हस्ताक्षर बदलते हैं। बहुरूपता के लिए उपयोग की जाने वाली कुछ तकनीकें हैं; प्रारूप परिवर्तन (रिक्त स्थान हटाएं), परिवर्तनीय नामकरण, कथन पुनर्संरचना, जंक कोड जोड़, कथन प्रतिस्थापन (एक्स = 1 x = y/5 में परिवर्तन जहां y = 5), नियंत्रण विवरणों का स्वैपिंग। फ्लू विषाणु उत्परिवर्तित की तरह बहुत अधिक है और इसलिए टीकाकरण प्रभावी नहीं है, पॉलिमॉर्फिक मैलवेयर पहचान से बचने के लिए बदलता है।
अद्यतन: सलाह के बाद तुम लोगों का संबंध क्या पढ़ने के लिए मुझे दिया; मैंने ऐसा किया, लेकिन यह मुझे कुछ और भ्रमित कर दिया। मुझे कई दूरी एल्गोरिदम मिले जो मेरी समस्या पर लागू हो सकते हैं, जैसे;
- सबसे लंबे समय तक आम subsequence
- Levenshtein एल्गोरिथ्म
- Needleman-Wunsch एल्गोरिथ्म
- स्मिथ-वाटरमैन एल्गोरिथ्म
- बोयर मूर एल्गोरिथ्म
- Aho Corasick एल्गोरिथ्म
लेकिन अब मैं डॉन यह नहीं पता कि किस का उपयोग करना है, वे सभी एक ही काम करते हैं अलग तरीकों से। मैं अनुसंधान करना जारी रखूंगा ताकि मैं प्रत्येक को बेहतर समझ सकूं; लेकिन औसत समय में आप मुझे which might be more suitable
पर अपनी राय दे सकते हैं ताकि मैं इसे अपने शोध के दौरान प्राथमिकता दे सकूं और इसे गहन अध्ययन कर सकूं।
अद्यतन 2: मैं LCSubsequence, LCSubstring और Levenshtein दूरी की एक समामेलन का उपयोग कर समाप्त हो गया। सुझावों के लिए आप सबको धन्यवाद।
पॉलिमॉर्फिक मैलवेयर परिभाषित करें। –
निश्चित रूप से "सबसे लंबे समय तक सामान्य सबस्ट्रिंग" और "सबसे लंबा आम अनुवर्ती" – Pace
@ पेस पर पढ़ें; चीयर्स दोस्त, बीमार करो – Carlos