2012-04-25 27 views
9

मैं बस सोच रहा हूं - कैसे एक स्वयं को संशोधित बाइनरी को अलग करता है? मुझे लगता है कि आप ओली या आईडीए का उपयोग नहीं कर सकते क्योंकि वे स्थिर डिस्सेबलर हैं, सही? यदि आप किसी निर्देश के बीच में कूदते हैं तो डिससेबलर के साथ क्या होता है? और कैसे एक मेटामोर्फिक इंजन का विश्लेषण करता है?स्व-संशोधित कोड को अलग करना

+0

कोई आपके प्रश्न को बहुत कठोर रूप से आलोचना नहीं करना चाहता। शायद मैं इसे समझ में नहीं आता! हालांकि, यह कुछ अनुच्छेदों में उत्तर देने वाला प्रश्न नहीं हो सकता है। – thb

उत्तर

10

ओलीडीबीजी और आईडीए दोनों स्थिर विश्लेषक नहीं हैं, वे दोनों कोड भी चला सकते हैं। आईडीए आपके कोड को दूरस्थ रूप से भी चला सकता है और जहां तक ​​मुझे पता है, यह एम्बेडेड डिबगिंग भी कर सकता है। बेशक यदि आप किसी बिंदु पर प्रोग्राम निष्पादन को "तोड़ते हैं", और डिस्सेप्लोर पर एक नज़र डालें, तो यह (दोनों कार्यक्रमों में) प्रोग्राम की वर्तमान स्थिति को प्रतिबिंबित करेगा, जिसमें उसने स्वयं भी किए गए किसी भी संशोधन को शामिल किया है।

यदि आप किसी निर्देश के बीच में कूदते हैं तो डिस्सेबलर के साथ क्या होता है?

मेरे अनुभव के मुताबिक, उल्लिखित डिस्सेबलर दोनों इस स्थिति को संभाल सकते हैं। उदाहरण के लिए, यहाँ देखें, कैसे OllyDbg यह प्रबंधन करता है, यहाँ एक स्क्रीनशॉट है जब EIP 00892C0E है:

OllyDbg before

और जब मैं EIP = 00892C0F, जो एक निर्देश के बीच में है:

OllyDbg after

जैसा कि आप देखते हैं, यह केवल एक अलग (लेकिन अभी भी मान्य) ऑपोड बनाने के निर्देश को फिर से अलग करता है।

और कैसे मेटामोर्फिक इंजन का विश्लेषण करता है?

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

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

बेशक, यह कोड लिखने वाले लोगों और लोगों का विश्लेषण करने वाले लोगों के बीच एक अंतहीन दौड़ है। कौन जीतता है इस पर निर्भर करता है कि जल्द ही कौन छोड़ देता है।

+1

बस यह उद्धृत करना चाहता था, क्योंकि यह सच है :) "बेशक, यह सब कोड लिखने वाले लोगों और लोगों का विश्लेषण करने वालों के बीच एक अंतहीन दौड़ है। कौन जीतता है इस पर निर्भर करता है कि कौन जल्द ही हारता है।" –

1

ओलिडबग ऐसी स्थितियों को संभालेगा।

जो कार्यक्षमता आप खोज रहे हैं वह 'विश्लेषण' है। यह स्थान पर नए निर्देशों को फिर से अलग कर देगा और सीपीयू विंडो को अद्यतन कोड के साथ रीफ्रेश करेगा।

मान लें कि पता एक्स पर निर्देश कुछ आत्म-संशोधित परिवर्तन करेगा। उस निर्देश को निष्पादित करने के बाद, आप 'विश्लेषण' आदेश चला सकते हैं। यह उस मूलभूत ब्लॉक के आसपास कोड को फिर से डिस्सेबल कर रहा है और सीपीयू को अद्यतन निर्देशों के साथ रीफ्रेश कर रहा है।

विश्लेषण करने के लिए, सीपीयू विंडो में वांछित स्थान पर राइट क्लिक करें और विश्लेषण> कोड पर विश्लेषण करें। शॉर्टकट Ctrl-A है।