2008-12-16 38 views
29

क्या प्रोग्रामिंग भाषा में कोई एप्लिकेशन लिखा गया था यह जानने का सबसे आसान तरीका क्या है? मैं जानना चाहता हूं कि प्रोग्राम exe फ़ाइल से इसकी vb या C++ या delphi या .net आदि है या नहीं।प्रोग्रामिंग भाषा का उपयोग करें

+3

http://www.peid.info/ –

+0

मुझे याद है 5 साल पहले, मैं एक API कॉल है कि एक खिड़की संभाल की आवश्यकता है और खिड़की के वर्ग के नाम वापस आ जाएगी पाया। मैंने देखा कि यदि कार्यक्रम वीबी में लिखा गया है, तो किसी भी वस्तु का वर्ग नाम 'थंडर' से पहले होना चाहिए। यदि यह डेल्फी में लिखा गया है, तो कक्षा का नाम आमतौर पर 'टी' के साथ होता है। मुझे यकीन नहीं है कि यह अभी भी मामला है या नहीं। –

उत्तर

23

PEiD

निश्चित रूप से अगर वे एक पैकर इस्तेमाल किया, कुछ unpacking की आवश्यकता होगी

प्रयास करें पहले किया जाना :)

+0

क्या यह अभी भी मौजूद है? यदि ऐसा है तो आप इसे कहां प्राप्त करते हैं (सोफस्टोनिक के मैलवेयर के बिना)? – Serge

+0

पीईआईडी अब काम नहीं करता है। –

+0

लिंक अब और काम नहीं करता है –

3

आप क्या क्रम यह है dependancies को देखने के लिए, कुछ सुराग दे सकता है जो Depends का उपयोग कर की कोशिश कर सकते ।

10

इसे शुरू करें और जांच करें कि यह प्रोसेसर एक्सप्लोरर के साथ किस रन-टाइम डीएलएल का उपयोग करता है।

यदि यह तुरंत स्पष्ट नहीं होता है, तो उन डीएलएल के संदर्भों के लिए वेब पर खोजें।

अधिकांश डिस्सेबलर्स (ओली मुझे लगता है) आसानी से आपको EXE या DLL में निहित पाठ दिखा सकता है, और यह कभी-कभी एक सुराग भी दे सकता है। डेल्फी प्रकार अक्सर टी के साथ टीएम क्लास में prefixed हैं।

यदि यह कोई डीएलएल संदर्भों के साथ एक छोटा निष्पादन योग्य है और कोई पाठ नहीं है तो आप एसओएल हो सकते हैं। उस समय आपको विशेष कंपाइलर्स के मुहावरे की तलाश करनी होगी, और यह ज्यादातर अनुमान लगाएगा।

1
  • Determine Delphi Application
  • उपयोग eda_preview270.exe (here से) या किसी अन्य जासूस उपकरण और विंडो वर्ग के नाम की जाँच करें। अगर वे टीबटन या टीएफआरएमब्लब की तरह पढ़ते हैं, तो यह एक वीसीएल ऐप है। यदि उनमें "एफएक्स" है, तो शायद यह एमएफसी है।
2

कार्यक्रम के डेवलपर से पूछने का सबसे आसान तरीका है। इसे किसी भी ज्ञान और उपयोगिता कार्यक्रम की आवश्यकता नहीं है।

+0

मैं अनुमान लगा अगर वह इस खोज के लिए एक उपकरण की तलाश में है, वह हरिणी डेवलपर के लिए आसान पहुँच नहीं है। –

+0

एक बेवकूफ उत्तर की तरह लगता है, लेकिन वास्तव में यह है कि कैसे "हैकर्स" अपना काम करते हैं। "सोशल इंजीनियरिंग" इसे कहा जाता है ... +1 –

1

संकलित भाषाएं (इसका मतलब है कि कोई स्क्रिप्टिंग भाषा नहीं है, या जावा, .NET, आदि) को सीपीयू असेंबली निर्देशों में संकलित किया गया है, जो अनिवार्य रूप से एक तरफा रूपांतरण है। आमतौर पर यह निर्धारित करना संभव नहीं है कि कोई प्रोग्राम किस भाषा में लिखा गया था। हालांकि, एक निर्भरता वॉकर का उपयोग करके, आप संभावित रूप से निर्धारित कर सकते हैं कि प्रोग्राम किस लोडटाइम लाइब्रेरी को लोड कर रहा था (यदि कोई हो) और इसलिए निर्धारित करें कि यह किस भाषा का उपयोग किया गया था (उदाहरण के लिए एमएस विजुअल सी ++ 9 msvcr90.dll का उपयोग करता है)।

+2

हालांकि आप हमेशा सीआरटी के पुराने संस्करण के खिलाफ लिंक कर सकते हैं। –

+0

मुझे ऐसा लगता है। आपको पता चलेगा कि यह वीसी ++ था, हालांकि। – jgottula

1

आप देख सकते हैं कि एक .net विधानसभा या नहीं ildasm.exe उपकरण

+0

लेकिन नेट में विभिन्न भाषाओं के बारे में क्या बात है। – rahul

+2

फीनिक्स - यह निर्धारित करने का कोई तरीका नहीं है। संकलित एक बार सी # और वीबीएनईटी एक दूसरे के बीच परिवर्तनीय हैं। –

+0

हां, यह निर्धारित करने के कोई रास्ता नहीं है क्योंकि सभी .net भाषाओं में एक ही आईएल भाषा –

0

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

यदि आप इसे Reflector में लोड कर सकते हैं, तो आप जानते हैं कि यह एक प्रबंधित असेंबली है।

0

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

Dependancy Walker है, जो किसी और का उल्लेख MSVCRT के संस्करणों की तरह एक अच्छा तरीका भांजीमार निर्भरता के लिए देखने के लिए किया जाएगा, आदि

0

अगर मैं सही ढंग से याद PE Explorer Disassembler कि नहीं .net और जावा द्विआधारी दिया बनाता संकलक के बारे में कुछ जानकारी देता है , के लिये ।शुद्ध उपयोग Reflector या ILDAsm उपकरण

0

मैं मिश्रित संकेत प्राप्त करने के लिए 'तार' प्रोग्राम के माध्यम से .exe चलाने का प्रयास करता हूं।

7

का पता लगाने क्या भाषा एक कार्यक्रम में लिखा गया था करने के लिए एक कला है। यह संभव है लेकिन कोई निर्धारित नियम और कानून हैं। इसमें बहुत अनुभव होता है (और यह सवाल भी लेता है कि "आप क्यों चाहते हैं ..." लेकिन यहां कुछ विचार हैं कि इसके बारे में कैसे जाना है।

जो आप खोज रहे हैं वह " हस्ताक्षर "। हस्ताक्षर एक निश्चित स्ट्रिंग हो सकता है जिसे कंपाइलर द्वारा शामिल किया गया हो, एक एपीआई का संदर्भ जो प्रोग्रामिंग टूल में काफी आम है, या यहां तक ​​कि प्रोग्रामिंग की एक शैली भी उपयोग की जा रही टूल्स के लिए आम है, इसमें दिखाई दे रहा है । तार आवेदन में निहित

अलावा, वहाँ कैसे एक आवेदन तैनात किया जाता है करने के लिए शैलियों रहे हैं:। विभिन्न विन्यास फाइल तैनाती निर्देशिका में पाया, DLLs और विधानसभाओं और यहां तक ​​कि छवियों, निर्देशिका या माउस

एक स्व-लॉन्च करने वाले निष्पादन योग्य में लिपटे जावा अनुप्रयोगों में जावा libs के संदर्भ होंगे, और संभवतः कुछ पुस्तकालयों या फ़ाइलों को उसी निर्देशिका में शामिल किया जाएगा जो इंगित करता है कि यह जावा है।

जैसा कि अन्य उत्तरों में इंगित किया गया है, एक प्रबंधित असेंबली कुछ संकेत भी दिखाएगी: आप इसे प्रतिबिंबक आदि में खोल सकते हैं। हालांकि यह सही है कि सी # और वीबी एक बार संकलित "इंटरचेंजनीय" हैं, यह सच नहीं है कि वे समान हैं । यदि आप वीबी कोड को अलग करने के लिए Reflector का उपयोग करते हैं तो आप अक्सर देखेंगे कि असेंबली Microsoft.VisualBasic.dll असेंबली का संदर्भ देती है। आप Mono अनुप्रयोगों के बीच अंतर बताने में सक्षम होंगे क्योंकि उनमें अधिकतर मोनो असेंबली के संदर्भ होंगे।

कई compilers इकट्ठा और कुछ मायनों में लिंक कोड, और पीछे पैरों के निशान छोड़ दें। उदाहरण के लिए, तार का उपयोग कर "एक खिड़की निष्पादन की जांच: टैब Process Explorer में, आप तार का एक बहुत देखेंगे इनका उपयोग करने से आप प्रोग्रामिंग शैलियों निर्धारित करने में सक्षम हो सकता है, तरीकों कहा जाता है, त्रुटि या exe withint तरीकों का पता लगाने

।। एक उदाहरण है कि compilers स्थानीयकरण के लिए विभिन्न प्रणालियों का उपयोग कर रहा है:। स्थानीय एक्सएमएल फाइल या संसाधन फ़ाइलों में तार माइक्रोसॉफ्ट स्टोर अन्य compilers एक अलग रणनीति का उपयोग करेगा

एक और उदाहरण C++ name mangling है CodeWarrior संकलक एक अलग एल्गोरिथ्म का उपयोग करता वध करने के लिए।। सदस्य चर और दृश्य स्टूडियो से एक फोन के कार्यों के नाम।

मुझे लगता है कि आप किसी भी निष्पादन योग्य की वंशावली को निर्धारित करने के विषय पर एक पुस्तक लिख सकते हैं। इस विषय को शायद "प्रोग्रामिंग पुरातत्व" कहा जाएगा।

+0

कोई टिप्पणी के साथ Downvotes? क्या किसी भी डाउनवॉटर के पास रचनात्मक प्रतिक्रिया है? –

+1

पुन: "प्रोग्रामिंग पुरातत्व," वहाँ अब एक औपचारिक नामित विज्ञान है [सॉफ्टवेयर पुरातत्व] (https://en.wikipedia.org/wiki/Software_archaeology) (मैं इस चिकनाई से उल्लेख नहीं है)। –

+0

यह अविश्वसनीय रूप से भयानक है। –

0

यहाँ एक महान video बताया गया हो कि आप .exe फ़ाइल खोल सकते हैं, अगर यह UPX के साथ पैक किया गया था। सॉफ्टवेयर आप इस के लिए की जरूरत है: PEiD, OllyDbg, ImpREC

के बाद आप बाइनरी फ़ाइल अनपैक किया है, तो आप PEiD जो प्रोग्रामिंग भाषा बाइनरी है के साथ जांच करने में सक्षम हैं।

0

सबसे आसान तरीका है कि मैंने पाया (कम से कम कंप्यूटर गेम में) खेल के मुख्य फ़ोल्डर के भीतर नेस्ट "Redist" फ़ोल्डर में देखने के लिए किया गया था। यह आप में से कुछ के लिए स्पष्ट हो सकता है जो प्रोग्रामिंग में अधिक अनुभवी हैं, लेकिन इस फ़ोल्डर में एमएसआई का विशिष्ट उद्देश्य setup.exe फ़ाइल को गेम के लिए स्वचालित रूप से पूर्वापेक्षाएँ स्थापित करने की अनुमति देना है। उदाहरण के लिए: साम्राज्य कुल युद्ध में, वहाँ एक MSI बुलाया "vcredist_x86-sp1.exe" है।यह इंगित करता है कि गेम/प्रोग्राम .NET Framework (आमतौर पर) में माइक्रोसॉफ्ट के "विजुअल सी 2005" में लिखा गया था। वास्तव में, यदि आप MSI/EXE खोलते हैं, संस्थापक तुरंत भाषा में लिखा है और कौन-सा संस्करण का संकेत देना चाहिए। क्योंकि .NET फ्रेमवर्क में सी # और VB में मैं कोड और हम अपने व्यापार अनुप्रयोग के लिए आवश्यक शर्तें स्वत: स्थापित कारण मैं परिचित हूँ है। उम्मीद है कि यह मदद करता है!

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