क्या विंडोज .exe को "डिकंपाइल" करना संभव है? या कम से कम विधानसभा को देखते हैं?


237

मेरे एक मित्र ने फेसबुक से कुछ मैलवेयर डाउनलोड किए, और मैं यह देखने के लिए उत्सुक हूं कि यह खुद को संक्रमित किए बिना क्या करता है। मुझे पता है कि आप वास्तव में एक .exe को विघटित नहीं कर सकते, लेकिन क्या मैं कम से कम इसे असेंबली में देख सकता हूं या डीबगर संलग्न कर सकता हूं?

यह कहने के लिए संपादित करें कि यह .NET निष्पादन योग्य नहीं है, कोई सीएलआई हेडर नहीं है।


3
फेसबुक से मैलवेयर ?? क्या आप बता सकते हैं कि
आदित्य मुखर्जी

सुपर लेट रिप्लाई के लिए क्षमा करें ... लेकिन मुझे लगता है कि ऐसा हुआ था: वह मैलवेयर का एक टुकड़ा चला गया, जिसने कुछ समय में अपने सभी संपर्कों को एफबी (मुझे) पर "वीडियो" के लिंक के साथ स्पैम कर दिया जिसने आपसे अनुरोध किया था एक "नया कोडेक" डाउनलोड करें। मैं इसे इस अर्थ में एक कीड़ा की तरह व्यवहार कर रहा हूँ।
स्विस क्लब

जवाबों:


446

डिबगर के साथ आप प्रोग्राम असेंबली के माध्यम से अंतःक्रियात्मक रूप से कदम रख सकते हैं।
एक डिस्सेम्बलर के साथ , आप प्रोग्राम असेंबली को अधिक विस्तार से देख सकते हैं।
एक डिकंपाइलर के साथ , आप एक प्रोग्राम को आंशिक स्रोत कोड में बदल सकते हैं, यह मानते हुए कि यह क्या लिखा है (जिसमें आप पीईआईडी जैसे मुफ्त टूल के साथ पता लगा सकते हैं - यदि प्रोग्राम पैक किया गया है, तो आपको पहले इसे अनपैक करना होगा। या पता लगाएँ कि यह आसान है अगर आप कहीं भी PEiD नहीं पा सकते हैं। DIE के पास github पर एक मजबूत डेवलपर समुदाय है वर्तमान में)।

डिबगर:

  • OllyDbg , मुफ्त, एक अच्छा 32-बिट डिबगर, जिसके लिए आप इसे सभी अधिक उपयोगी बनाने के लिए कई उपयोगकर्ता-निर्मित प्लगइन्स और स्क्रिप्ट पा सकते हैं।
  • WinDbg , free, Microsoft द्वारा काफी सक्षम डिबगर। WinDbg विंडोज इंटर्नल को देखने के लिए विशेष रूप से उपयोगी है, क्योंकि यह अन्य डीबगर्स की तुलना में डेटा संरचनाओं के बारे में अधिक जानता है।
  • शीतल , दोस्तों को SICE । 2006 में वाणिज्यिक और विकास बंद हो गया। सॉफ्टीस एक हार्डकोर टूल है जो ऑपरेटिंग सिस्टम के नीचे चलता है (और जब इनवॉइस किया जाता है तो पूरे सिस्टम को रोक देता है)। सॉफ्टीस का उपयोग अभी भी कई पेशेवरों द्वारा किया जाता है, हालांकि इसे प्राप्त करना कठिन हो सकता है और कुछ हार्डवेयर (या सॉफ़्टवेयर - अर्थात्, यह विस्टा या एनवीआईडीआईए gfx कार्ड पर काम नहीं करेगा) पर काम नहीं कर सकता है।

disassemblers:

  • आईडीए प्रो (वाणिज्यिक) - लाइन डिसैम्बलर / डिबगर के ऊपर। अधिकांश पेशेवरों द्वारा उपयोग किया जाता है, जैसे कि मैलवेयर विश्लेषक आदि, हालांकि कुछ रुपये का खर्च होता है (हालांकि मुफ्त संस्करण मौजूद है , लेकिन यह काफी सीमित है)
  • W32Dasm (मुक्त) - थोड़ा दिनांकित लेकिन काम हो जाता है। मेरा मानना ​​है कि W32Dasm इन दिनों छोड़ दिया गया है, और कुछ बहुत उपयोगी कार्यक्षमता जोड़ने के लिए कई उपयोगकर्ता-निर्मित हैक हैं। आपको सबसे अच्छा संस्करण खोजने के लिए चारों ओर देखना होगा।

decompilers:

  • विजुअल बेसिक: VB Decompiler , वाणिज्यिक, कुछ पहचाने जाने योग्य बायोटेक का उत्पादन करता है।
  • डेल्फी: डीडे , मुफ्त, अच्छी गुणवत्ता के स्रोत कोड का उत्पादन करता है।
  • सी: HexRays , वाणिज्यिक, एक ही कंपनी द्वारा आईडीए प्रो के लिए एक प्लगइन। महान परिणाम पैदा करता है, लेकिन एक बड़ा पैसा खर्च होता है, और सिर्फ किसी को नहीं बेचा जाएगा (या तो मैं सुनता हूं)।
  • .NET (C #): dotPeek , free, decompiles .NET 1.0-4.5 विधानसभाओं को #। .Dll, .exe, .zip, .vsix, .nupkg, और .winmd फ़ाइलों के लिए समर्थन।

कुछ संबंधित उपकरण जो आपके द्वारा किए जा रहे काम में उपयोगी हो सकते हैं, वे संसाधन संपादक हैं जैसे कि रिसोर्सहैकर (फ्री) और हेक्स वर्कशॉप (वाणिज्यिक) जैसे अच्छे हेक्स संपादक ।

इसके अतिरिक्त, यदि आप मैलवेयर विश्लेषण कर रहे हैं (या SICE का उपयोग करते हैं) , तो मैं पूरे दिल से एक वर्चुअल मशीन के अंदर सब कुछ चलाने का सुझाव देता हूं, जिसका नाम है VMware वर्कस्टेशन । SICE के मामले में, यह बीएसओडी से आपकी वास्तविक प्रणाली की रक्षा करेगा, और मैलवेयर के मामले में, यह आपके वास्तविक सिस्टम को लक्ष्य कार्यक्रम से बचाएगा। आप यहाँ VMware के साथ मैलवेयर विश्लेषण के बारे में पढ़ सकते हैं

व्यक्तिगत रूप से, मैं ओली, विनडब और W32Dasm और कुछ छोटे उपयोगिता उपकरणों के साथ रोल करता हूं।

इसके अलावा, याद रखें कि असहमति या यहां तक ​​कि अन्य लोगों के सॉफ़्टवेयर को डीबग करना आमतौर पर ईयूएलए के खिलाफ बहुत कम है :)


16
मैं इसकी सामान्यता, अच्छी सलाह में अंतिम पैराग्राफ की सराहना करता हूं, लेकिन यह प्रश्न के संदर्भ में मनोरंजक है: मुझे संदेह है कि एक वायरस ईयूएलए के साथ आता है! ;-)
फिलाहल

4
दरअसल, कुछ मैलवेयर और यहां तक ​​कि देर से आने वाले ट्रोजन भी उनमें (ओह, उन रूसी ..) होते हैं, बेशक, वे शोधों द्वारा अनदेखा (और कर सकते हैं), क्योंकि यह माना जा सकता है कि कोई भी उन पर मुकदमा करने के लिए आगे नहीं आएगा। .. इसके अलावा, वे आम तौर पर किसी भी मामले में अदालत में कुछ भी मतलब है बुरी तरह से लिखा जाता है।
एनोन ६४३

2
ध्यान दें कि आईडीए प्रो का पिछला संस्करण गैर-व्यावसायिक उपयोग के लिए मुफ्त है।
साइमन बुकान

6
ध्यान दें कि इन दिनों अधिकांश मैलवेयर (कम से कम संकलित मैलवेयर) आसानी से पता लगा सकते हैं कि यह VMWare, वर्चुअल पीसी, वाइन, वर्चुअलबॉक्स, आदि में चल रहा है
मिक

यदि आप एक वीएम में चल रहे हैं, तो ब्लू पिल हमले के लिए बाहर देखें।
सिक्की लिन

44

psoul की उत्कृष्ट पोस्ट आपके प्रश्न का उत्तर देती है इसलिए मैं उनके अच्छे काम की नकल नहीं करूंगा, लेकिन मुझे लगता है कि यह समझाने में मदद मिलेगी कि यह एक बार पूरी तरह से वैध है लेकिन बहुत ही मूर्खतापूर्ण सवाल क्यों है। आखिरकार, यह सीखने की जगह है, है ना?

आधुनिक कंप्यूटर प्रोग्राम, रूपांतरणों की एक श्रृंखला के माध्यम से निर्मित होते हैं, जो पाठ निर्देशों के मानव-पठनीय शरीर के इनपुट से शुरू होते हैं (जिन्हें "स्रोत कोड" कहा जाता है) और निर्देशों के कंप्यूटर-पठनीय निकाय के साथ समाप्त होता है (वैकल्पिक रूप से "बाइनरी" या "मशीन" कहा जाता है) कोड ")।

जिस तरह से एक कंप्यूटर मशीन कोड निर्देशों का एक सेट चलाता है वह अंततः बहुत सरल है। प्रत्येक क्रिया एक प्रोसेसर ले सकता है (उदाहरण के लिए, मेमोरी से पढ़ा, दो मान जोड़ें) एक संख्यात्मक कोड द्वारा दर्शाया गया है। अगर मैंने आपको बताया कि नंबर 1 का मतलब चीखना था और नंबर 2 का मतलब गिग था, और फिर उन पर 1 या 2 के साथ कार्ड रखे, तो आप उम्मीद कर सकते हैं कि आप चिल्लाएंगे या तदनुसार गिग्लिंग करेंगे, मैं उपयोग कर रहा हूँ जो अनिवार्य रूप से उसी सिस्टम का उपयोग करता है जिसे कंप्यूटर उपयोग करता है संचालित करने के लिए।

एक बाइनरी फ़ाइल सिर्फ उन कोड (आमतौर पर "ऑप कोड") और सूचना ("तर्क") का एक सेट है, जो ऑप्स पर काम करता है।

अब, असेंबली लैंग्वेज एक कंप्यूटर लैंग्वेज है, जहां भाषा का प्रत्येक कमांड शब्द प्रोसेसर पर ठीक एक ऑप-कोड का प्रतिनिधित्व करता है। असेंबली लैंग्वेज कमांड और प्रोसेसर ऑप-कोड के बीच सीधा 1: 1 अनुवाद होता है। यही कारण है कि एक x386 प्रोसेसर के लिए कोडिंग असेंबली एआरएम प्रोसेसर के लिए कोडिंग असेंबली से अलग है।

Disassembly बस यह है: एक प्रोग्राम बाइनरी (मशीन कोड) के माध्यम से पढ़ता है, अपने समकक्ष असेंबली लैंग्वेज कमांड के साथ ऑप-कोड की जगह लेता है, और परिणाम को एक पाठ फ़ाइल के रूप में आउटपुट करता है। यह समझना महत्वपूर्ण है; यदि आपका कंप्यूटर बाइनरी को पढ़ सकता है, तो आप बाइनरी को भी पढ़ सकते हैं, या तो मैन्युअल रूप से आपके हाथ में एक ऑप-कोड टेबल के साथ (ick) या डिस्सेम्बलर के माध्यम से।

Disassembler में कुछ नई तरकीबें और सभी हैं, लेकिन यह समझना महत्वपूर्ण है कि एक disassembler अंततः एक खोज और प्रतिस्थापन तंत्र है। यही कारण है कि कोई भी ईयूएलए जो इसे मना करता है वह अंततः गर्म हवा बह रहा है। आप एक बार कंप्यूटर को प्रोग्राम डेटा पढ़ने की अनुमति नहीं दे सकते हैं और प्रोग्राम डेटा पढ़ने वाले कंप्यूटर को भी मना कर सकते हैं।

(मुझे गलत मत समझिए, ऐसा करने की कोशिश की गई है। वे गाने की फाइलों पर भी DRM का काम करते हैं।)

हालाँकि, डिस्सैड दृष्टिकोण के लिए चेतावनी हैं। चर नाम गैर-मौजूद हैं; ऐसी कोई भी चीज आपके सीपीयू में मौजूद नहीं है। लाइब्रेरी कॉल नरक के रूप में भ्रमित कर रहे हैं और अक्सर आगे के बायनेरिज़ को अलग करने की आवश्यकता होती है। और असेंबली कठिन परिस्थितियों में पढ़ने के लिए नरक के रूप में कठिन है।

अधिकांश पेशेवर प्रोग्रामर बिना सिर दर्द के असेंबली लैंग्वेज को बैठ और पढ़ सकते हैं। एक शौकिया के लिए यह सिर्फ होने वाला नहीं है।

वैसे भी, यह कुछ हद तक स्पष्ट है, लेकिन मुझे आशा है कि यह मदद करता है। हर कोई मेरी तरफ से किसी भी तरह की गलतफहमी को दूर करने के लिए स्वतंत्र महसूस कर सकता है; इसे बीते एक अर्सा हो गया है। ;)


1
यह disassembly पर विस्तृत है, लेकिन मैं विघटित होने पर विस्तार से सुनना पसंद करूंगा। क्या यह सिर्फ फलहीन होने की संभावना है? इसके क्या कारण हैं?
प्रोमेथियस

@हास: मूल कोड में कमी करना एक बहुत कठिन चुनौती है, अक्सर सही-सही असंभव है। ऑप्टिमाइज़र अत्यधिक आक्रामक होते हैं, अक्सर स्रोत कोड का अनुवाद कुछ भी नहीं करते हैं। आप कुछ नहीं अपघटित कर सकते हैं।
IInspectable


11

कोई भी सभ्य डिबगर ऐसा कर सकता है। OllyDbg को आज़माएं । (संपादित करें: जिसके पास एक महान डिस्सेम्बलर है जो यहां तक ​​कि WinAPI कॉल करने के लिए मापदंडों को डिकोड करता है!)


10

x64dbg एक अच्छा और खुला स्रोत डीबगर है जिसे सक्रिय रूप से बनाए रखा जाता है।



6

यदि आप केवल यह पता लगाने की कोशिश कर रहे हैं कि मैलवेयर क्या करता है, तो इसे मुफ्त टूल टूल मॉनिटर जैसी किसी चीज़ के तहत चलाना बहुत आसान हो सकता है जो रिपोर्ट करेगा जब भी यह फाइल सिस्टम, रजिस्ट्री, पोर्ट, आदि का उपयोग करने की कोशिश करेगा ...

इसके अलावा, इस तरह के काम के लिए मुफ्त VMWare सर्वर जैसी वर्चुअल मशीन का उपयोग करना बहुत ही उपयोगी है। आप एक "साफ" छवि बना सकते हैं, और फिर हर बार जब आप मैलवेयर चलाते हैं, तो उसी पर वापस जाएं।


4

आपको विधानसभा में इसे देखने के बारे में कुछ जानकारी मिल सकती है, लेकिन मुझे लगता है कि सबसे आसान काम यह है कि एक आभासी मशीन को फायर किया जाए और देखें कि यह क्या करता है। सुनिश्चित करें कि आपके पास कोई खुला शेयर या ऐसा कुछ भी नहीं है जो इसे हालांकि कूद सकता है;)


हाँ, मैंने इसके बारे में सोचा था, लेकिन मैं इसे मारने के लिए केवल वीएम स्थापित करने की परेशानी से नहीं
गुजरूंगा

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


4

आप जो चाहते हैं वह एक प्रकार का सॉफ्टवेयर है जिसे "डिस्सेम्बलर" कहा जाता है।

त्वरित Google यह पैदावार करता है: लिंक


आपने इसे समझाया नहीं
scitronboy

3

मैं विश्वास नहीं कर सकता कि किसी ने इम्युनिटी डिबगर के बारे में कुछ नहीं कहा , फिर भी।

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

इसके अलावा, Corelan टीम के एक अच्छे पीटर ने mona.py , excelent tool btw, लिखा है ।


2

यदि आप अपने कंप्यूटर को संक्रमित किए बिना यह देखने के लिए प्रोग्राम चलाना चाहते हैं, तो VMWare या Microsoft VPC जैसी वर्चुअल मशीन का उपयोग करें , या सैंडबॉक्स जैसे प्रोग्राम को सैंडबॉक्स कर सकते हैं




2

मैं 2019 में कहूंगा, Ghidra ( https://ghidra-sre.org/ ) जांच के लायक है। यह खुला स्रोत (और मुक्त) है, और अभूतपूर्व कोड विश्लेषण क्षमता है, जिसमें सभी पठनीय कोड को वापस करने के लिए सभी तरह से विघटित करने की क्षमता शामिल है।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.