क्या किसी को एक मुफ्त डिकंपाइलर का पता है जो एक एकल वर्ग के बजाय एक संपूर्ण जार फ़ाइल को विघटित कर सकता है? मुझे $ 1.class नाम $ 2.class name.class जैसे उप वर्गों के साथ एक समस्या है
क्या किसी को एक मुफ्त डिकंपाइलर का पता है जो एक एकल वर्ग के बजाय एक संपूर्ण जार फ़ाइल को विघटित कर सकता है? मुझे $ 1.class नाम $ 2.class name.class जैसे उप वर्गों के साथ एक समस्या है
जवाबों:
2009: JavaDecompiler जार के साथ एक अच्छा काम कर सकता है : 0.2.5 के बाद से, JAR फाइलों में सभी फाइलें प्रदर्शित होती हैं।
यह भी देखें कि "मैं" अपघटित "जावा क्लास फाइल कैसे करूँ? ।
JD-Eclipse 2009 के अंत से परिवर्तित नहीं हुआ है, हालांकि ( परिवर्तन देखें )।
इसलिए नवीनतम ग्रहण (3.8, 4.2+) के साथ इसका एकीकरण समस्याग्रस्त हो सकता है।
जेडी-कोर सक्रिय रूप से बनाए रखा जाता है।
दोनों (एसओ उपयोगकर्ता) इमैनुएल डुपीयू के शानदार काम का परिणाम हैं ।
2018: डेविड कैनेडी अरुजो द्वारा टिप्पणियों में उल्लिखित एक और आधुनिक विकल्प :
जेटब्रेन्स / IntelliJ-समुदाय / plugins / जावा-decompiler / इंजन
फर्नाफ्लावर वास्तव में जावा के लिए पहला काम कर रहे विश्लेषणात्मक डिकंपाइलर है और शायद सामान्य रूप से उच्च स्तरीय प्रोग्रामिंग भाषा के लिए।
java -jar fernflower.jar [-<option>=<value>]* [<source>]+ <destination> java -jar fernflower.jar -hes=0 -hdc=0 c:\Temp\binary\ -e=c:\Java\rt.jar c:\Temp\source\
यह भी देखें कि हाल ही में IntelliJ IDEA के साथ काम करने वाली कमांड के लिए जावा फाइलों को डीटेलिज कैसे करें ।
सबसे पहले, यह याद रखने योग्य है कि सभी जावा संग्रह फाइलें ( .jar
/ .war
/ आदि ...) सभी मूल रूप से सिर्फ फैंसी .zip
फाइलें हैं , कुछ जोड़े हुए मैनिफ़ेस्ट और मेटाडेटा के साथ।
दूसरा, इस समस्या से निपटने के लिए मैं व्यक्तिगत रूप से कई उपकरणों का उपयोग करता हूं जो सभी स्तरों पर इस समस्या को संभालते हैं:
.class
jar
एससहित किसी भी संग्रह फ़ाइल के बीच में तुलना कर सकते हैं। एक कोशिश के लायक है।उपर्युक्त सभी का लाभ यह है कि मुझे किसी अन्य बाहरी उपकरण को रखने की आवश्यकता नहीं है जो मेरे काम के वातावरण को बंद कर देता है। मुझे उन फ़ाइलों में से एक की आवश्यकता होगी जो सब कुछ मेरी आईडीई के अंदर संभाला जा सकता है या अन्य फाइलों के साथ मूल रूप से अलग हो सकता है।
यदि आपके पास बैश शेल और जेड दोनों हैं:
JAR=(your jar file name)
unzip -d $JAR.tmp $JAR
pushd $JAR.tmp
for f in `find . -name '*.class'`; do
jad -d $(dirname $f) -s java -lnc $f
done
popd
मैं उस के साथ एक छोटा, थोड़ा सा हो सकता है, लेकिन यह विज्ञापित के रूप में कम या ज्यादा काम करना चाहिए। आपको $JAR.tmp
अपनी विघटित फ़ाइलों को समाप्त करना चाहिए ।
javap
इस बुनियादी लूप संरचना के भीतर उपयोग कर रहा हूं , और यह मेरे लिए काम कर रहा है।
मुझे एक उपकरण के साथ उचित सफलता मिली है, जिसका नाम है (निराशा से) " JD: Java Decompiler "।
जावा 5 और उच्चतर के लिए संकलित कक्षाओं के साथ काम करते समय मैंने इसे अधिकांश डिकंपाइलर्स से बेहतर पाया है । दुर्भाग्य से, यह अभी भी कुछ हिचकी हो सकती है जहां जेएडी सामान्य रूप से सफल होगा।
कुछ इस तरह:
jar -xf foo.jar && find . -iname "*.class" | xargs /opt/local/bin/jad -r
शायद?
निम्नलिखित को decompile.jar.sh में डालें
# Usage: decompile.jar.sh some.jar [-d]
# clean target folders
function clean_target {
rm -rf $unjar $src $jad_log
}
# clean all debug stuff
function clean_stuff {
rm -rf $unjar $jad_log
}
# the main function
function work {
jar=$1
unjar=`basename $jar.unjar`
src=`basename $jar.src`
jad_log=jad.log
clean_target
unzip -q $jar -d $unjar
jad -d $src -ff -r -lnc -o -s java $unjar/**/*.class > $jad_log 2>&1
if [ ! $debug ]; then
clean_stuff
fi
if [ -d $src ]
then
echo "$jar has been decompiled to $src"
else
echo "Got some problems check output or run in debug mode"
fi
}
function usage {
echo "This script extract and decompile JAR file"
echo "Usage: $0 some.jar [-d]"
echo " where: some.jar is the target to decompile"
echo " use -d for debug mode"
}
# check params
if [ -n "$1" ]
then
if [ "$2" == "-d" ]; then
debug=true
set -x
fi
work $1
else
usage
fi
उपयोग के लिए तैयार, बस टाइप करें dj your.jar
और आपको your.jar.src
स्रोतों के साथ फ़ोल्डर मिलेगा । -d
डिबग मोड के लिए विकल्प का उपयोग करें ।
आप इसे निकालते हैं और फिर डायर के खिलाफ जद का उपयोग करते हैं।
नोट: यह समाधान केवल मैक और * निक्स उपयोगकर्ताओं के लिए काम करता है।
मैंने भी बिना किस्मत के जद को खोजने की कोशिश की। मेरा त्वरित समाधान मैकडैड को डाउनलोड करना था जिसमें जेड शामिल है। एक बार जब आप इसे डाउनलोड कर लेते हैं तो आप [जहाँ-जहाँ-आप-डाउनलोड-मज्जाद] / मकाज / सामग्री / संसाधन / जद में जद पा सकते हैं।