2008-09-16 15 views
87

मैं यह पता लगाने की कोशिश कर रहा हूं कि जावा एप्लेट की क्लास फ़ाइल हुड के नीचे क्या कर रही है। नोटपैड या टेक्स्टपैड के साथ इसे खोलना सिर्फ गोबब्ले-गूक का एक गुच्छा दिखाता है।मैं जावा-क्लास फ़ाइलों को मानव-पठनीय तरीके से कैसे खोल सकता हूं?

क्या इसे वापस कुछ हद तक पठनीय प्रारूप में घुमाने के लिए कोई तरीका है, इसलिए मैं यह पता लगाने की कोशिश कर सकता हूं कि यह क्या कर रहा है?

  • पर्यावरण == विंडोज़ डब्ल्यू/वीएस 2008 स्थापित।
+5

बस एक अर्थशास्त्र चीज, क्या यह एक = दो नहीं होनी चाहिए? == एक प्रश्न है जबकि = एक कथन है और आप अपने पर्यावरण के बारे में बयान दे रहे हैं। – icco

+0

क्या आप इस प्रश्न को स्पष्ट कर सकते हैं? मेरा तत्काल विचार यह था कि आप वास्तविक बाइटकोड पढ़ना चाहते थे, लेकिन ऐसा लगता है कि आप वास्तव में किसी और के कोड को कम करना चाहते हैं। –

+11

@icco, = मतलब असाइनमेंट, == का अर्थ समानता है। वह कह रहा है कि (पर्यावरण == विंडोज़ डब्लू/वीएस -2008 स्थापित) सच है, विंडोज़ डब्ल्यू/वीएस 2008 स्थापित करने के लिए पर्यावरण को स्थापित करने का आदेश नहीं दे रहा है। वह आदमी जो ऑफटॉप और बेवकूफ था। – Blorgbeard

उत्तर

176

jd-gui इस समय सबसे अच्छा डीकंपलर है। यह जासूसी जेएडी की तुलना में, जावा में नई सुविधाओं को संभाल सकता है।

+1

वाह! मैंने अभी यह कोशिश की है (मेरा लैपटॉप खो गया है और जल्दबाजी में कुछ स्रोत वापस पाने के लिए आवश्यक है) और यह अविश्वसनीय था। –

+3

वाह, बढ़िया! मैं आश्चर्यचकित हूं कि यह जवाब दूसरों के लिए कितना उपयोगी रहा है। वोट धीरे-धीरे ऊपर की ओर बढ़ता है ... और मैं भी एक जावा विशेषज्ञ नहीं हूँ! लेकिन मुझे अच्छे उपकरण पसंद हैं। – DarenW

+0

मैंने कोशिश की ... महान एक। किसी को भी संभालना आसान है। डैरेनडब्ल्यू –

2

Jad का उपयोग करने के लिए यह संभवतः आपका सबसे अच्छा विकल्प है। जब तक कोड obfuscated किया गया है, यह एक ठीक परिणाम पैदा करेगा।

7

आप एक जावा Decompiler चाहते हैं, आप ऐसा करने के लिए कमांड लाइन टूल javap उपयोग कर सकते हैं। इसके अलावा, Java Decompiler HOW-TO वर्णन करता है कि आप कक्षा फ़ाइल को कैसे संकलित कर सकते हैं।

2

जो आप खोज रहे हैं वह एक जावा डी-कंपाइलर है। मैं जेएडी http://www.kpdus.com/jad.html की सिफारिश करता हूं यह गैर वाणिज्यिक उपयोग के लिए स्वतंत्र है और काम पूरा हो जाता है।

नोट: यह कोड को बिल्कुल लिखा गया था जैसा लिखा गया था। यानी आप टिप्पणियां और संभावित रूप से परिवर्तनीय नाम खोने जा रहे हैं, इसलिए यह सामान्य स्रोत कोड पढ़ने से थोड़ा कठिन होगा। यदि डेवलपर वास्तव में गुप्त है तो वे अपने कोड को भी खराब कर देंगे, जिससे इसे पढ़ने में भी मुश्किल हो जाएगी।

0

जैसा कि सुझाव दिया गया है कि आप इसे डीकंपाइल करने और फ़ाइलों को देखने के लिए जेएडी का उपयोग कर सकते हैं। यह आसान आप JAD एकीकृत करने के लिए ग्रहण के लिए JADclipse प्लगइन का उपयोग कर सकते हैं सीधे ग्रहण या डीजे जावा Decompiler का उपयोग जो बहुत आसान है कमांड लाइन से उपयोग करने के लिए JAD

को पढ़ने के लिए बनाने के
63

आप बाईटकोड पढ़ने कोई आपत्ति नहीं है, javap चाहिए बढ़िया कार्य करना। यह मानक जेडीके स्थापना का हिस्सा है।

Usage: javap <options> <classes>... 

where options include: 
    -c      Disassemble the code 
    -classpath <pathlist>  Specify where to find user class files 
    -extdirs <dirs>   Override location of installed extensions 
    -help      Print this usage message 
    -J<flag>     Pass <flag> directly to the runtime system 
    -l      Print line number and local variable tables 
    -public     Show only public classes and members 
    -protected    Show protected/public classes and members 
    -package     Show package/protected/public classes 
          and members (default) 
    -private     Show all classes and members 
    -s      Print internal type signatures 
    -bootclasspath <pathlist> Override location of class files loaded 
          by the bootstrap class loader 
    -verbose     Print stack size, number of locals and args for methods 
          If verifying, print reasons for failure 
+7

जो बहुत अच्छा है। मुझे विश्वास नहीं है कि मुझे इसके बारे में पता नहीं था! ओह, खेलने की जरूरत है ... –

0

यदि आप परिणामस्वरूप जावा कोड को पठनीय करना चाहते हैं तो जेएडी एक उत्कृष्ट विकल्प है। यदि आप वास्तव में .class फ़ाइल प्रारूप के आंतरिक में खोदना चाहते हैं, तो आप javap चाहते हैं। यह जेडीके के साथ बंडल किया गया है और आपको हेक्साडेसिमल बाइटकोड को पठनीय ASCII में "डिकंपाइल" करने की अनुमति देता है। जिस भाषा में यह उत्पन्न होता है वह अभी भी बाइटकोड (जावा जैसी कुछ नहीं) है, लेकिन यह काफी पठनीय और अत्यंत निर्देशक है।

इसके अलावा, यदि आप वास्तव में चाहते हैं, तो आप हेक्स संपादक में .class फ़ाइल खोल सकते हैं और सीधे बाइटकोड पढ़ सकते हैं। परिणाम javap का उपयोग करने के समान है।

1

आपको एक डिकंपेलर का उपयोग करने की आवश्यकता है। अन्य ने जेएडी का सुझाव दिया है, अन्य विकल्प हैं, जेएडी सबसे अच्छा है।

मैं टिप्पणियों को प्रतिबिंबित करूंगा कि आप मूल स्रोत कोड की तुलना में थोड़ा सा खो सकते हैं। अगर एरर के कारण जेनरिक्स का इस्तेमाल किया जाता है तो यह विशेष रूप से मजेदार दिखने वाला है।

1

जेएडी और/या जेडक्लिसे ग्रहण प्लगइन, निश्चित रूप से।

0

Applet.class को कम करने की कोई आवश्यकता नहीं है। सार्वजनिक जावा एपीआई कक्षा स्रोत कोड जेडीके के साथ आता है (यदि आप इसे स्थापित करना चुनते हैं), और डीकंपील्ड बाइटकोड से बेहतर पठनीय है। आप src.zip (आपके जेडीके स्थापना फ़ोल्डर में स्थित) में संपीड़ित पा सकते हैं।

1

यदि आप जिस क्लास फ़ाइल को देखना चाहते हैं वह ओपन सोर्स है, तो आपको इसे डीकंपाइल नहीं करना चाहिए, बल्कि इसके बजाय स्रोत फ़ाइलों को सीधे अपने आईडीई में संलग्न करें। इस तरह, आप केवल कुछ लाइब्रेरी क्लास के कोड को देख सकते हैं जैसे कि यह आपके

2

cpuguru, यदि आपका एप्लेट javac 1.3 (या कम) के साथ संकलित किया गया है, तो आपका सबसे अच्छा विकल्प जाड का उपयोग करना है।

दुर्भाग्यवश, जेएडी 1.5.8 (14 अप्रैल, 2001) द्वारा समर्थित अंतिम जेडीके जेडीके 1.3 है।

यदि आपका ऐपलेट हालिया कंपाइलर के साथ संकलित किया गया है, तो आप JD-GUI को आजमा सकते हैं: यह डिकंपेलर विकास में है, फिर भी, यह जेडीके 1.4, 1.5 या 1.6 के साथ संकलित कक्षाओं के लिए सही जावा स्रोतों का उत्पादन करता है, ।

डैरेनड, आपकी पोस्ट के लिए धन्यवाद। जद-जीयूआई सबसे अच्छा decompiler अभी तक नहीं है ... लेकिन मैं पर काम कर रहा हूँ :)

+0

जेडी-गुई के साथ महान काम .. – anacron

0

मैं लिखा जावा के लिए एक महान decompiler के रूप में @MichaelMyers से बताया है। बेहतर दृश्यता के लिए आप आउटपुट को टेक्स्ट फ़ाइल में रीडायरेक्ट भी कर सकते हैं।

javap -c <name of java class file> > decompiled.txt 
0

आप ऑनलाइन जावा डीकंपलर भी उपलब्ध करा सकते हैं। उदाहरण के लिए http://www.javadecompilers.com