अपघटन - स्रोत कोड को एक डिकंपाइलर के साथ पुनर्निर्माण की प्रक्रिया
मैंने हाल ही में सोचा था: कौन सा डिकंपाइलर बेहतर है?
Google को प्रताड़ित करना शुरू किया, प्रयोग किया। अंत में, मुझे एक महान समाधान मिला। किसी भी कार्यक्रम को कैसे विघटित करना और "स्रोत" काम करना है? इसके बारे में एक विषय में।
लोकप्रिय डिकंपाइलर्स का एक संक्षिप्त अवलोकन
कहवा
मोचा (हनपीटर वैन व्लिट द्वारा लिखित) संभवत: जारी किए गए पहले जावा डिकंपाइलर्स में से एक है। कंसोल यूजर इंटरफेस प्रदान करता है। इसकी रिलीज़ 1996 में हुई, इससे पहले जावा डेवलपमेंट किट संस्करण 1.1 सामने आया था।
JAva Decompiler
JAva Decompiler, JAD (लेखक - पावेल कॉज़नेत्सोव) - जाहिरा तौर पर, सबसे
लोकप्रिय जावा डिकंपाइलर। मोचा की तरह, यह डिकम्पॉइलर एक कंसोल इंटरफ़ेस प्रदान करता है जिसे लंबे समय से अद्यतन और समर्थित नहीं किया गया है, लेकिन इसके साथ काम करने के लिए ग्राफिकल टूल की बड़ी संख्या, जिसमें JadClipse प्लग-इन शामिल है, ग्रहण के विकास के वातावरण के लिए, इसे इस दिन को अपघटन के लिए एक उपयोगी उपकरण के रूप में उपयोग करें। छोटी कक्षाएं।
विघटन के अलावा, JAva Decompiler .class फ़ाइलों को अलग करने की क्षमता रखता है।
डीजे जावा Decompiler
डीजे जावा डेकोम्पेलर (लेखक - अतनास नेशकोव) - एक लंबे समय के लिए, नाम के विपरीत, यह केवल पिछले डिकम्पॉइलर के लिए एक ग्राफिकल शेल था, जिसने जेडएडी को कॉल करने के लिए कमांड लाइन तर्कों का चयन करना आसान और सुविधाजनक बना दिया। वर्तमान संस्करण एनोटेशन के लिए समर्थन जोड़ता है, लेकिन डिकंपाइलर शेयरवेयर बन गया है (आपको 10 परीक्षण उपयोगों के बाद खरीदने की आवश्यकता है)।
जद-कोर
जेडी-कोर (लेखक - इमैनुएल डुप्यु) जावा बाइटकोड के विघटन और विश्लेषण के लिए एक बहुत ही शक्तिशाली और कार्यात्मक पुस्तकालय है, जिसे जावा डेकोम्पेलर परियोजना के हिस्से के रूप में विकसित किया गया है।
इसकी निम्नलिखित विशेषताएं हैं:
- पूरी तरह से सी ++ में लिखा गया है, जो विघटन को बहुत तेज करता है
- यह जावा रनटाइम पर्यावरण को काम करने की आवश्यकता नहीं है और इसलिए विशेष स्थापना की आवश्यकता नहीं है
- अधिकांश कंपाइलरों द्वारा उत्पन्न .class फ़ाइलों को सही ढंग से Decompiles
शायद जेडी-कोर के नुकसान को केवल इस तथ्य के लिए जिम्मेदार ठहराया जा सकता है कि इसे वितरित किया गया है
स्वसंपूर्ण JD-GUI ग्राफ़िकल एप्लिकेशन का हिस्सा, C ++ में भी विकसित किया गया है और इसे सांख्यिकीय विकास पर्यावरण के लिए, या JD-Eclipse प्लग-इन से जोड़ा गया है, जो विशेष रूप से जावा भाषा में विकसित तीसरे पक्ष के गैर-व्यावसायिक प्रोजेक्ट में इसका उपयोग करना व्यावहारिक रूप से असंभव है। व्यावसायिक सॉफ्टवेयर उत्पादों में पुस्तकालय का उपयोग लेखक द्वारा निषिद्ध है।
Fernflower
फर्नफ्लावर आज तक के सबसे अच्छे जावा डीकंपिलेशन लैंग्वेज कंपाइलरों में से एक है।
इसकी निम्नलिखित विशेषताएं हैं:
1. विभिन्न भाषा निर्माणों का समर्थन करता है:
- पैरामीट्रिक प्रकार
- एनोटेशन
- प्रगणित प्रकार
- अनुमोदन
2. कुछ ज्ञात संकलक कीड़ों के कारण उत्पन्न बायटेकोड को सही ढंग से विघटित कर देता है
मेरी पसंद
JD-GUI
- देखने के लिए, और नहींFernflower
- पूर्ण पुनर्प्राप्ति
मैं दूसरे पर बसूंगा। सामान्य तौर पर, इस डिकंपाइलर के लेखक को ऑफ़लाइन संस्करण को सार्वजनिक रूप से अपलोड करने के लिए नहीं लगता था (या मैंने इस तथ्य को अपने ब्लॉग को पढ़ते समय याद किया), हाल ही में जब तक यह केवल ऑनलाइन था। लेकिन एक मंच पर उसे खोजना मेरे लिए सुखद आश्चर्य था!
डाउनलोड करें:
fernflower.jarलेखक के ब्लॉग का उद्धरण:
फर्नफ्लावर डोबफुसेटर की ओर विकसित होगा
...
फ़र्नफ़्लॉवर में अब कोई विशेष डोबफ़ुशन फ़ंक्शन नहीं है, वे भविष्य में अलग-अलग मॉड्यूल द्वारा जुड़े होंगे
क्योंकि अज्ञात कारणों से ऑनलाइन संस्करण काम नहीं करता है, और ऑफ़लाइन के बारे में कुछ भी कहना मुश्किल है (सिवाय इसके कि विघटन की गुणवत्ता उत्कृष्ट है), फिलहाल कोई मॉड्यूल नहीं हैं।
अभी तक पर्याप्त मॉड्यूल का नाम नहीं बदला गया है
वह हाँ है। आइए इंटरनेट पर कुछ इस तरह से देखें।
रक्षक बचाव में आएंगे, लेकिन असामान्य
ProGuardDeobfuscator ProGuard प्रोग्राम का एक छोटा संशोधन है, इसे क्वैसी-डोबफ्यूसेटर में बदल देता है। प्रसंस्करण के दौरान, संकुल, वर्गों, क्षेत्रों, और विधियों के छोटे मोटे नामों को जार फ़ाइल के भीतर अधिक सार्थक और अद्वितीय लोगों के साथ बदल दिया जाता है।
स्रोत डाउनलोड करें और स्वयं को हटाएं:
projectd8.org/Programs/Java/PGDसभी उपकरण हैं, लेकिन व्यक्तिगत रूप से, मैं अपने पसंदीदा नेटबीन्स आईडीई का उपयोग करके पुन: निर्माण को सुविधाजनक बनाता हूं - यह मेरी युक्तियों के साथ बहुत मदद करता है, खासकर जब बहुत सारी कक्षाएं होती हैं।
आपका ध्यान के लिए धन्यवाद!
संदर्भ
se.math.spbu.ru/SE/YearlyProjects/2011/YearlyProjects/2011/345/345_Mikhailov_report.pdfru-java.livejournal.comयुपीडी:क्षमा करें, फ़र्नफ़्लॉवर के ऑफ़लाइन संस्करण में नाम बदलने के लिए एक मॉड्यूल है और बहुत सारे अन्य टुकड़े हैं - रीडमे