मेरे पास एक exe फ़ाइल है और मैंने इसे इडा के साथ संकुचित कर दिया। मुझे डेल्फी में कोडित कार्यक्रम बताया गया था, इसलिए मैंने डीडी के साथ डिकंपाइल करने की कोशिश की लेकिन यह असफल रहा, कोई आउटपुट नहीं और कोई त्रुटि नहीं। और मुझे आश्चर्य है कि प्रोग्रामिंग भाषा के लिए विशेष रूप से लिखे गए विभिन्न डीकंपलरों को आजमाकर एक्सई बनाने में उपयोग की जाने वाली भाषा को खोजना संभव है? या वे किसी अन्य कारण से असफल हो सकते हैं?क्या यह जानना संभव है कि एक exe फ़ाइल किस भाषा में लिखी गई है?
उत्तर
कई मामलों में यह कोड संकलित करने के लिए उपयोग किए गए कंपाइलर की पहचान करने के लिए संभव है, और उस से मूल भाषा।
अधिकांश भाषा कार्यान्वयन में भाषा के विभिन्न उच्च स्तरीय संचालन को लागू करने के लिए किसी प्रकार की रनटाइम लाइब्रेरी शामिल होती है। उदाहरण के लिए, सी सीआरटी जो फ़ाइल मैं/हे परिचालन (fopen
, fread
आदि), डेल्फी इसकी string
प्रकार के लिए संकलक सहायकों (संयोजन, असाइनमेंट और अन्य) है लागू करता है, एडीए भाषा सुरक्षा सुनिश्चित करने के विभिन्न निम्न स्तर के कार्य करता है और शीघ्र। कार्यक्रम के कोड और उम्मीदवार संकलक के रनटाइम पुस्तकालयों की तुलना करके आप एक मैच ढूंढ पाएंगे।
आईडीए FLIRT technology में इस दृष्टिकोण को लागू करता है। हस्ताक्षर का उपयोग करके, आईडीए डॉस और विंडोज के लिए अधिकांश प्रमुख कंपाइलर निर्धारित करने में सक्षम है। यह लिनक्स पर कुछ और मुश्किल है क्योंकि इसके लिए कंपाइलर बाइनरी का कोई भी प्रदाता नहीं है, इसलिए प्रत्येक डिस्ट्रो के लिए हस्ताक्षर किए जाने होंगे।
हालांकि, रनटाइम लाइब्रेरी कोड का उपयोग किए बिना भी, इस्तेमाल किए गए कंपाइलर की पहचान करना संभव हो सकता है।कई कंपाइलर विभिन्न परिचालनों का प्रतिनिधित्व करने के लिए बहुत अलग मुहावरे का उपयोग करते हैं। उदाहरण के लिए, मैं was able to guess कि डुक्वा वायरस के लिए उपयोग किया गया कंपाइलर विजुअल सी ++ था, जो बाद में confirmed था।
संकलन (या इस तरह के एक .so
या .dll
के रूप में अन्य संकलित कार्यक्रम मॉड्यूल,) एक हानिपूर्ण प्रक्रिया है, इसलिए यह एक निष्पादन डिकंपाइल करने के लिए संभव नहीं है, सामान्य रूप में और मूल भाषा में स्रोत कोड को ठीक या यहाँ तक कि स्पष्ट रूप से निर्धारित मूल भाषा थी। यह भी जरूरी नहीं है कि केवल एक मूल स्रोत-कोड भाषा है, क्योंकि यह संभव है कि, लिंक करने से पहले, अलग-अलग भाषाओं में विभिन्न मॉड्यूल लिखे गए थे। आमतौर पर, आप को बाइनरी और असेंबली भाषा पुनर्प्राप्त कर सकते हैं, हालांकि यह बहुत सीमित मूल्य हो सकता है।
कई मामलों में, आप मूल भाषा के बारे में कुछ बता सकते हैं बशर्ते बाइनरी को छीन नहीं दिया गया है (प्रतीकों का)। उदाहरण के लिए, आप आमतौर पर सी ++ में द्विआधारी में प्रतीकों को देखकर (objdump
का उपयोग करके, यह नहीं पता कि विंडोज पर समतुल्य क्या हो सकता है): सी ++ प्रतीकों में उलझन में हैं एक विशेष तरीका यह 100% गारंटी नहीं है, लेकिन एक उच्च संभावना है।
यह कहा गया कि, कुछ डीकंपलर एक बहुत ही कठिन कार्य का एक बहुत ही उचित काम करते हैं। बाइनरी से उच्च स्तर की संरचनाओं का अनुमान लगाना आसान नहीं है। मेरे (बहुत सीमित) अनुभव में, वे काफी छोटे कार्यक्रमों के लिए काम करते हैं या मूल कंपाइलर के संस्करणों की एक संकीर्ण श्रृंखला के साथ संकलित सॉफ़्टवेयर के लिए काम करते हैं, लेकिन कुछ भी महत्वपूर्ण पर चकित करते हैं: एक डिकंपेलर के लेखक के साथ रहना बहुत मुश्किल है कंपाइलर्स में परिवर्तन, और ऐसा करने के लिए उसके लिए बहुत कम प्रोत्साहन हो सकता है।
यहां तक कि ऐसे मामलों में जहां विघटन बहुत सफल होता है, परिणाम अनिवार्य रूप से पूरी तरह से असम्बद्ध कोड है जो अर्थहीन चर नामों के साथ है जो समझना बेहद मुश्किल है। विघटन एक बात है, परिणाम से इच्छित अर्थपूर्ण अर्थ निकालने का एक और है। याद रखें कि कई चर, शाखाएं, लूप और फ़ंक्शंस पूरी तरह अनुकूलित हो जाएंगे, कई फ़ंक्शंस को रेखांकित किया जाएगा, इसलिए "स्रोत कोड", भले ही आप इसे इस तरह से प्राप्त कर सकें, हो सकता है कि यह पूरी तरह से न हो आप का उपयोग
- 1. असाना किस भाषा में लिखी गई है?
- 2. क्या यह निर्धारित करना संभव है कि एनईटी असेंबली वास्तव में कौन सी भाषा लिखी गई थी?
- 3. .NET Framework में कौन सी भाषा लिखी गई है?
- 4. मैं कैसे बता सकता हूं कि एक सादा-पाठ फ़ाइल कौन सी भाषा लिखी गई है?
- 5. इनबिल्ट PHP फ़ंक्शंस में कौन सी भाषा लिखी गई है?
- 6. स्कैला किस भाषा में लिखी गई है, और स्रोत कहां मिल सकता है?
- 7. जावास्क्रिप्ट में कौन सी भाषा लिखी गई है?
- 8. यह कैसे ढूंढें कि फ़ाइल एक exe है या नहीं?
- 9. एक .exe फ़ाइल में क्या है?
- 10. कौन सी भाषा एफ # के कंपाइलर लिखी गई है?
- 11. क्या यह जानना संभव है कि एक स्क्रिप्ट पाइथन प्रक्रिया चल रही है?
- 12. क्या यह जानना संभव है कि कितने ग्राहकों ने रेडिस में "चैनल" की सदस्यता ली है?
- 13. मुझे यह कैसे पता चलेगा कि मुझे क्या जानना है?
- 14. जानना कि किस बिंदु पर एप्लिकेशन
- 15. मैंने हाइव में एक टेबल बनाई है, मैं जानना चाहता हूं कि मेरी तालिका किस निर्देशिका में बनाई गई है?
- 16. क्या यह जानना संभव है कि उपयोगकर्ता ने किसी पृष्ठ पर कितना समय व्यतीत किया है?
- 17. क्या यह जानना संभव है कि कोई विशेष पैनोरामा आइटम कब प्रदर्शित होता है
- 18. क्या यह सत्यापित करना महत्वपूर्ण है कि अपलोड की गई फ़ाइल एक वास्तविक छवि फ़ाइल है?
- 19. एक असेंबली .exe फ़ाइल क्यों है?
- 20. जांच कर रहा है कि फ़ाइल पूरी तरह से लिखी गई है
- 21. नोड.जेएस में, क्या यह बताना संभव है कि एक देखी गई फ़ाइल को स्थानांतरित किया गया था?
- 22. यह जांचने के लिए कि क्या EXE को LARGEADDRESSAWARE
- 23. क्या यह निर्दिष्ट करना संभव है कि
- 24. विजुअल स्टूडियो 2010/2012 में कौन सी भाषा लिखी गई है?
- 25. जावा में, क्या यह जानना संभव है कि कक्षा पहले ही लोड हो चुकी है या नहीं?
- 26. क्या यह जानना संभव है कि एक आईपीओपी पर एक आईओसीपी पर कितने अनप्रचारित पूर्ण संचालन कतारबद्ध हैं?
- 27. क्या यह संभव है कि जावा स्ट्रिंग.split एक शून्य स्ट्रिंग []
- 28. q.js: क्या यह जानना संभव है कि कोई वादा हल हो गया है/अस्वीकार कर दिया गया है या नहीं
- 29. क्या यह जानना संभव है कि उपयोगकर्ता टेक्स्टफील्ड में अक्षर टाइप या हटा रहा है या नहीं?
- 30. जांचें कि डिस्क सामग्री वास्तव में डिस्क पर लिखी गई है - डिस्क नियंत्रक के बफर
बेशक मुझे नंगे स्रोत कोड की उम्मीद नहीं है :) लेकिन कार्यक्रम बहुत विकसित हुए हैं और वे असेंबली कोड को अधिक उपयोगकर्ता अनुकूल तरीके से दिखा सकते हैं ताकि सरल कार्यक्रमों को उलटना आसान हो। धन्यवाद वैसे भी – Kuzgun
आप विंडोज पर भी 'ओब्जेडम्प' का उपयोग मिंगडब्ल्यू या सिगविन के माध्यम से कर सकते हैं। वे 'binutils' पैकेज में स्थापित हैं। – adam