क्या कोई C ++ डिकम्पॉइलर है? [बन्द है]


116

मेरा एक कार्यक्रम है जिसमें मैंने C ++ स्रोत कोड खो दिया है। क्या कोई अच्छा C ++ डिकंपाइलर है?

मैं पहले से ही बुमेरांग में भागा हूं ।


objdumpLinux के लिए
Stypox

1
cutter.re महान जीयूआई और महान builtin decompiler के लिए
Misiur

जवाबों:


80

आप हेक्सा किरणों द्वारा आईडीए प्रो का उपयोग कर सकते हैं । जब तक आप डिबगिंग जानकारी में संकलित नहीं हो जाते, तब तक आम तौर पर आपको बाइनरी से अच्छा C ++ नहीं मिलेगा। कोड को उलटने के लिए बहुत सारे श्रम खर्च करने की तैयारी करें ।

यदि आपने बायनेरिज़ को स्ट्रिप नहीं किया है, तो कुछ आशा है क्योंकि आईडीए प्रो आपके साथ काम करने के लिए सी-समान कोड का उत्पादन कर सकता है। आमतौर पर यह बहुत कठिन है, हालांकि कम से कम जब मैंने इसे कुछ साल पहले इस्तेमाल किया था।


27
स्पष्ट करने के लिए, आईडीए केवल disassembly देगा। इसमें एक ऐड-ऑन है जिसे हेक्स-रे कहा जाता है जो सी / सी ++ स्रोत में शेष तरीके को विघटित कर देगा, यह उस हद तक संभव है।
davenpcj

2
डॉक्स के मेरे पढ़ने के लिए, हेक्स-किरणें केवल छद्म कोड की तरह सी आउटपुट करती हैं। ऐसा नहीं है कि यह C ++ के विघटन के लिए बेकार है, आपको बस थोड़ा सा पता होना चाहिए कि कंपाइलर C ++ संरचनाओं को कैसे परिवर्तित करते हैं।
माइकल एंडरसन

कुछ और स्पष्ट करने के लिए, Disassembly सबसे अधिक है जिसे आप Hex-Rays के साथ विघटित कर सकते हैं ASM को C ++ में अनुवाद करेंगे ASM को किसी भी प्रोग्रामिंग भाषा में अनुवाद किया जा सकता है क्योंकि सभी प्रोग्राम ASM के रूप में चल सकते हैं
बार्कर्मन 01

4
SNOWMAN एक अच्छा मुक्त c ++ decompiler है
इंगा

2
स्नोमैन के लिए +1, लेकिन जैसा कि दूसरों ने उल्लेख किया है, यहां तक ​​कि एक साधारण हैलो, एक बार विघटित होने पर विश्व व्यावहारिक रूप से अपठनीय हो जाता है।
bdetweiler

25

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


25
कार्यक्रम की "आत्मा" दूर हो गई है, बस इसका एक खाली खोल है पूर्व स्व ... "
दर्शन चौधरी

21

हां, लेकिन उनमें से कोई भी प्रयास के लायक पठनीय कोड का उत्पादन करने का प्रबंधन नहीं करेगा। आप अपने पुराने ऐप को स्क्रैच से फिर से लिखने की तुलना में अधिक समय बिताने के लिए कोडांतरक ब्लॉक के साथ विघटित स्रोत को पढ़ने की कोशिश करेंगे।


6

मैंने सी + + कोड उत्पन्न करने वाले किसी भी डिकंपाइलर को नहीं देखा है। मैंने कुछ प्रयोगात्मक लोगों को देखा है जो सी कोड उत्पन्न करने के लिए एक उचित प्रयास करते हैं, लेकिन वे एक विशेष संकलक के कोड-पीढ़ी के पैटर्न के मिलान पर निर्भर होने के लिए प्रवृत्त होते हैं (जो कि बदल गया हो सकता है, जब से मैंने आखिरी बार इस पर गौर किया है, कुछ समय हो गया है )। बेशक कोई भी प्रतीकात्मक जानकारी चली जाएगी। Google "डिकम्पॉइलर" के लिए।


4

मूल कोड कितना बड़ा और कितना अच्छा लिखा गया था, इस पर निर्भर करते हुए, यह आपकी पसंदीदा भाषा (जो अभी भी C ++ हो सकता है) में फिर से शुरू करने और अंतिम संस्करण में की गई किसी भी गलती से सीखने के लायक हो सकता है। क्या किसी ने एक बार फेंकने के लिए लिखने के बारे में नहीं कहा था?

nb स्पष्ट रूप से अगर यह एक बहुत बड़ा उत्पाद है, तो यह समय के लायक नहीं हो सकता है।



24
योएल एक महान स्तंभकार है, लेकिन कई बार गलत है। और फिर ऐसे समय होते हैं जब वह गलत उद्धृत किया जाता है। यहाँ की तरह, चूंकि प्रश्न कोड स्रोत कोड के नुकसान के आसपास है। जोल्स लेख बताता है कि स्रोत कोड मूल्यवान क्यों है।
एमएसलटर्स

5
क्या किसी ने एक बार फेंकने के लिए लिखने के बारे में नहीं कहा था? उनके मन में हाँ, और वह बदल davewsmith.com/blog/2010/brook-revisits-plan-to-throw-one-away [मैं] n 1975, मैं करने के लिए प्रोग्रामर सलाह दी "पहले संस्करण फेंक," तो एक दूसरे का निर्माण एक। 20 वीं वर्षगांठ के संस्करण तक, मैंने महसूस किया कि निरंतर वृद्धिशील पुनरावृत्ति दूर का दृष्टिकोण है
ta.speot.is
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.