2010-11-01 10 views
10

समानता के लिए एक दूसरे के खिलाफ दो हेक्साडेसिमल फ़ाइल हस्ताक्षरों की तुलना करने का सबसे अच्छा तरीका क्या होगा।जावा में प्रोग्रामेटिकल दृष्टिकोण

अधिक विशेष रूप से, मैं एक .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 दूरी की एक समामेलन का उपयोग कर समाप्त हो गया। सुझावों के लिए आप सबको धन्यवाद।

GitHub

+0

पॉलिमॉर्फिक मैलवेयर परिभाषित करें। –

+1

निश्चित रूप से "सबसे लंबे समय तक सामान्य सबस्ट्रिंग" और "सबसे लंबा आम अनुवर्ती" – Pace

+0

@ पेस पर पढ़ें; चीयर्स दोस्त, बीमार करो – Carlos

उत्तर

4

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

पॉलिमॉर्फिक मैलवेयर पर विचार करने के लिए, इस क्षेत्र को आपको बहुत कुछ देना चाहिए, क्योंकि जीवविज्ञान में यह सटीक मिलान प्राप्त करना मुश्किल लगता है। (दुर्भाग्यवश, मुझे आपको इंगित करने के लिए उचित अनुमानित खोज/मिलान करने वाले एल्गोरिदम से अवगत नहीं है।)

इस दिशा से एक उदाहरण Aho Corasick एल्गोरिदम जैसे कुछ को अनुकूलित करना होगा ताकि एक ही समय में कई मैलवेयर हस्ताक्षर खोज सकें ।

इसी प्रकार, Boyer Moore एल्गोरिदम जैसे एल्गोरिदम आपको विशेष रूप से लंबे अनुक्रमों (आकार (एन/एम) के औसत मामले आकार के पाठ के लिए शानदार खोज रनटाइम देते हैं जिसमें आप आकार एम, यानी सबलाइनर खोज के पैटर्न की तलाश करते हैं बार)।

+0

के लिए धन्यवाद धन्यवाद जानकारी के लिए धन्यवाद, मैं उनके बारे में पढ़ना शुरू कर दूंगा – Carlos

2

पर समाप्त कागज की एक प्रति कागजात के एक नंबर वेबखोज के संदर्भ में दस्तावेजों का विशाल संग्रह में पास डुप्लीकेट दस्तावेज खोजने पर प्रकाशित किया गया है नहीं है। मुझे लगता है कि आप उन्हें उपयोगी पाएंगे। उदाहरण के लिए, यह presentation देखें।

+0

संसाधन अमित – Carlos

1

हाल ही में बग भंडारों में डुप्लिकेट बग रिपोर्टों का पता लगाने में स्वचालित रूप से शोध की गंभीर मात्रा रही है। यह अनिवार्य रूप से वही समस्या है जिसका आप सामना कर रहे हैं। अंतर यह है कि आप बाइनरी डेटा का उपयोग कर रहे हैं। वे समान समस्याएं हैं क्योंकि आप उन तारों की तलाश करेंगे जिनके समान मूल पैटर्न हैं, भले ही पैटर्न में कुछ मामूली अंतर हो। एक सीधा-अप दूरी एल्गोरिदम शायद आपको यहां अच्छी तरह से सेवा नहीं करेगा।

यह पेपर समस्या का एक अच्छा सारांश देता है साथ ही साथ इसके उद्धरणों में कुछ दृष्टिकोण भी आते हैं।

ftp://ftp.computer.org/press/outgoing/proceedings/Patrick/apsec10/data/4266a366.pdf

1

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

संबंधित मुद्दे