मैं पठनीय C # स्रोत कोड में .NET EXE कैसे हटाता हूं?


259

मैंने कुछ साल पहले एक क्लाइंट के लिए C # एप्लिकेशन लिखा था, लेकिन मेरे पास अब स्रोत कोड नहीं है। मेरे पास सभी EXE हैं जो मैंने क्लाइंट के पीसी पर तैनात किए हैं। वहाँ एक तरीका है मैं EXE से सी # स्रोत कोड उत्पन्न कर सकता है?


2
ठीक। यहां देखें ... Teleriks JustDecompile ने वास्तव में DLL की रेड गेट्स परावर्तक को पूरी तरह से खराब कर दिया ... रिफ्लेक्टर के साथ कई मुद्दे थे ... JustDecompile ... निर्दोष अब तक ...
मार्क जॉनसन

1
मैं काफी लंबे समय से जस्टडेकोम्पाइल का उपयोग कर रहा हूं और यह डिकम्पोजिंग में वास्तव में अच्छा है और csproject को संकलित करने के लिए तैयार के रूप में स्रोत फ़ाइलों को पैकेज करता है। यह वास्तव में विकास में सक्रिय है और उनके रेपो github.com/telerik/JustDecompileEngine
डेविड चेलिया

जवाबों:


194

परावर्तक और इसके ऐड-इन FileDisassembler

रिफ्लेक्टर स्रोत कोड को देखने की अनुमति देगा। FileDisassembler आपको इसे VS समाधान में बदलने की अनुमति देगा।


4
रिफ्लेक्टर की मेरी कॉपी में "निर्यात ..." विकल्प है और मेरे पास कोई प्लग-इन स्थापित नहीं है। यह सभी स्रोत कोड और संसाधनों के साथ VS प्रोजेक्ट बनाता है। तो क्यों हर कोई FileDisassembler का सुझाव दे रहा है? यह बेहतर है?
लुकास

लुकास: बॉक्स से बाहर, मैंने रिफ्लेक्टर को ऐसा करने में सक्षम नहीं देखा है। FileDisassembler हमेशा ही एकमात्र तरीका रहा है। यह हाल के इतिहास में बदल गया है, हालांकि मुझे लगता है। मैं इसकी जांच करुँगा।
GEOCHET

जीवन बचाओ! गूंगा गधा टीएफएस ने मेरी परियोजना को हटा दिया। हालांकि मैंने टीएफएस को खुद को हटाने के लिए कहा था, लेकिन उम्मीद नहीं थी कि यह स्थानीय फाइल सिस्टम से परियोजना को हटा देगा। धन्यवाद औश्र सबकुछ वही है। x
क्रिस्टो २

FileDisassembler कहाँ है? : /
टॉम स्टिकेल

यह .Net ढांचे के लिए ही काम करता है। कोई भी उपकरण जो .Net कोर 3.0 exe ​​के लिए काम करता है?
सोमनाथ कदम

144

जब रेड गेट ने कहा कि अब .net रिफ्लेक्टर का कोई मुफ्त संस्करण नहीं होगा, तो मैंने ILSpy और Telerik के JustDecompile का उपयोग करना शुरू कर दिया । मैंने ILDpy को JustDecompile (जो अभी बीटा में है) की तुलना में अधिक सटीक रूप से विघटित करने के लिए पाया है। रेड गेट ने अपना निर्णय बदल दिया है और अभी भी .net रिफ्लेक्टर का एक नि: शुल्क संस्करण है, लेकिन अब मुझे ILSpy पसंद है।

ILSpy वेबसाइट ( https://github.com/icsharpcode/ILSpy/ ) से:

ILSpy एक ओपन-सोर्स .NET असेंबली ब्राउज़र और डिकंपाइलर है।

ILSpy सुविधाएँ

  • विधानसभा ब्राउज़िंग
  • आईएल Disassembly
  • डी # के लिए अपघटन
  • लंबोदर और 'उपज वापसी' का समर्थन करता है
  • XML दस्तावेज़ दिखाता है
  • संसाधनों की बचत
  • प्रकार / विधियों / गुणों (प्रतिस्थापन) के लिए खोजें
  • हाइपरलिंक-आधारित प्रकार / विधि / संपत्ति नेविगेशन
  • बेस / व्युत्पन्न प्रकार नेविगेशन
  • नेविगेशन इतिहास
  • BAML से XAML डिकंपाइलर
  • असेंबली को C # प्रोजेक्ट के रूप में सहेजें
  • फ़ील्ड / विधि का उपयोग खोजें
  • प्लगइन्स (MEF) के माध्यम से एक्स्टेंसिबल

अपडेट करें:

15 अप्रैल, 2012, ILSpy 2.0 जारी किया गया था। संस्करण 1.0 के साथ तुलना में नई सुविधाएँ:

  • विधानसभा सूची
  • अभिव्यक्ति पेड़ों को विघटित करने के लिए समर्थन
  • अशक्त ऑपरेटर को नलिकाओं पर समर्थन
  • Decompile Visual Basic के लिए
  • अंतरिक्ष द्वारा अलग किए गए कई तारों की खोज करें (ILSpy.exe में "असेंबली मैनेजर की खोज करें" असेंबली लिस्टमैनेजर करेंगे)
  • स्थानीय चर पर क्लिक करने से उस चर की अन्य सभी घटनाएँ उजागर होंगी
  • Ctrl + F का उपयोग विघटित कोड दृश्य में खोज करने के लिए किया जा सकता है

अपडेट करें:

  • ILSpy 2.1 असंकल / प्रतीक्षारत विघटन का समर्थन करता है

1
मैं 2.2 का उपयोग कर रहा हूं और यह IL, VB.NET और C # को डिकंपाइलिंग का समर्थन करता है। मुझे यह बहुत उपयोगी लगा।
वोट कॉफ़ी

1
ऐसा लगता है कि Telerik इस पर चल रहे कंप्यूटर से संदिग्ध जानकारी एकत्र करने में रुचि रखता है और ILSpy को स्रोतों से संकलित नहीं किया जा सकता है। इसके अलावा ILSpy बाइनरी चर नामों को मिलाता है और स्रोत कोड में कुछ अजीब अक्षर डालता है।
AAA

1
ध्यान दें कि ILSpy में एक विजुअल स्टूडियो एड-इन शामिल है। ILSpy 2.4 के लिए मैंने आपके विज़ुअल स्टूडियो स्रोत कोड से सीधे विघटित आउटपुट में नेविगेट करने की क्षमता जोड़ी। दुर्भाग्य से कुछ देर से टूटने वाले फिक्स थे जो अब ILSpy मेनलाइन में विलय हो गए हैं लेकिन 2.4 रिलीज नहीं कर पाए।
योयो

प्रतिभाशाली! एक सॉफ्टवेयर कंपनी है जो लोगों को समस्याओं को ठीक करने के लिए आपके गंभीर रूप से "विशेष" टूल का उपयोग करने के लिए उनसे 100 पाउंड का शुल्क लेती है। कनेक्ट होने के दौरान उनके द्वारा उपयोग किए जाने वाले टूल की एक प्रति प्राप्त करने का प्रबंधन, और फिर टूल अनलॉकिंग पासवर्ड प्राप्त करने के लिए ILSpy का बहुत आसानी से उपयोग करने में कामयाब रहे। ग्राहकों से अधिक तेजस्वी नहीं!
user2924019

ILSpy सबसे अच्छा एक है
प्रीतम

65

परावर्तक अब सामान्य रूप से मुक्त नहीं है, लेकिन वे इसे मुक्त स्रोत डेवलपर्स के लिए मुफ्त में प्रदान करते हैं: http://reflectorblog.red-gate.com/2013/07/open-source/

लेकिन DevExtras और JetBrains जैसी कुछ कंपनियों ने मुफ्त विकल्प बनाए हैं:

DevExtras CodeReflect

JetBrains DotPeek


5
रिफ्लेक्टर 35 डॉलर की तरह है। मुझे पता है कि बैंक को तोड़कर, लेकिन इसकी कीमत 10x है।
स्टिंगजैक

7
यह नि: शुल्क .NET असेंबली डिकम्पाइलर्स की सूची में टेलरिक जस्टडेकम्पाइल को भी जोड़ने के लायक है। telerik.com/justdecompile
टॉड

3
@StingyJack: शानदार, ऐसा लगता है जैसे उन्होंने आपको सुना हो! यदि आप VS2012 डिसैम्बलर चाहते हैं तो यह वास्तव में $ 10 की कीमत $ 368 है। : /
डीपस्पेस101

1
मैं पैसा बनाने के लिए उनके खिलाफ नहीं रखता, लेकिन @ डैनियल के जवाब में ILSpy (उल्लेखित) है जो मैं अभी उपयोग कर रहा हूं।
स्टिंगजैक

1
यह अब मानक संस्करण के लिए $ 100 और दृश्य स्टूडियो के साथ एकीकृत होने वाले संस्करण के लिए $ 200 का खर्च करता है। यह एक मुद्रास्फीति की दर की एक बिल्ली है। हालांकि वे स्रोत डेवलपर्स को मुक्त करने के लिए मुफ्त में सामान प्रदान करते हैं: रिफ्लेक्टरब्लॉग.ड्रेगेट.कॉम
2013

35

परावर्तक और फ़ाइल डिस्सेम्बलर डेनिस बाउर से ऐड-इन। यह वास्तव में असेंबली से स्रोत परियोजनाओं का उत्पादन करता है, जहां रिफ्लेक्टर अपने आप में केवल असंतुष्ट स्रोत को प्रदर्शित करता है।

जोड़ा: मेरा नवीनतम पसंदीदा JetBrains ' dotPeek है


मुझे पसंद है कि dotPeek एक संपूर्ण फ़ोल्डर के साथ आसानी से काम करने की अनुमति देता है, लेकिन आज के रूप में वे केवल c # के लिए अपघटन करते हैं। अधिकांश अन्य डिकंपाइलर भी vb और IL करते हैं। यह केवल नेट ४.५ तक का समर्थन करता है जबकि
टेलरिक

इसलिए dotPeek पूरी तरह से मुफ़्त है या उनके पास भुगतान किए गए संस्करण के लिए प्रतिबंध है? मैं इसे के बारे में किसी भी जानकारी नहीं देख सकते हैं jetbrains वेबसाइट।
बटमासी

29

Telerik JustDecompile मुफ़्त है और इसमें .NET असेंबली से प्रोजेक्ट बनाने की सुविधा है।


Telerik VB.NET, IL, या C # .NET को डिकंपाइल करने की क्षमता प्रदान करता है जो मुझे उपयोगी लगा। यह फ्रेमवर्क का चयन भी करता है और इसमें एक प्लग-इन उपलब्ध है जो कि deobfuscicating के लिए उपलब्ध है। साथ ही, यह .NET 4.5.1 को सपोर्ट करता है। बहुत अच्छा लगता है।
वोट कॉफ़ी

1
मैंने इस पोस्ट में सभी समाधानों की कोशिश की और जस्टडेकोम्पाइल एकमात्र ऐसा था जो मेरे लिए पूरी तरह से काम करता है।
अल्वारो परेरा

24

मुझे आश्चर्य है कि किसी ने भी Microsoft की ildasm का उल्लेख नहीं किया है । यह ILSpy या परावर्तक के रूप में बहुत सुंदर नहीं हो सकता है, लेकिन यह विजुअल स्टूडियो के साथ आता है इसलिए कई डेवलपर्स के पास पहले से ही है।

इसे चलाने के लिए (वीएस 2013 को संभालने के लिए, अन्य संस्करणों के लिए समान होना चाहिए):

  1. प्रारंभ> सभी कार्यक्रम> दृश्य स्टूडियो 2013> दृश्य स्टूडियो उपकरण चुनें।
  2. VS2013 के लिए डेवलपर कमांड प्रॉम्प्ट पर डबल-क्लिक करें।
  3. परिणामी कमांड प्रॉम्प्ट से "ildasm" चलाएं।
  4. टूल में, फ़ाइल> खोलें और अपना निष्पादन योग्य या DLL खोलें।

अब आप DLL संरचना को नेविगेट कर सकते हैं। IL देखने के लिए कक्षा के सदस्यों पर डबल-क्लिक करें। फ़ाइल को IL में निर्यात करने के लिए फ़ाइल> डंप का उपयोग करें।


मुझे लगता है कि IL DASM थोड़ा बर्बर है। यह पेड़ को दिखाता है, लेकिन जब राइट क्लिक करने से मुझे कुछ नहीं मिलता है तो मैं उस पागल को ढूंढता हूं। प्लस फ़ाइल को निर्यात करने का डंप मूल रूप से कचरा है। इसे देखें, यह कैसे दूर से भी सहायक है?
टॉम स्टिकेल

4
मैंने कभी भी दावा नहीं किया कि वहाँ से सबसे अच्छा विकल्प ildasm था, केवल यह कि यह उपलब्ध है और यह काम करता है। _ (ツ) _ / ¯
yoyo का

नहीं, 'डर नहीं।
योयो

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

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