전체 Jar 파일을 디컴파일하는 방법은 무엇입니까?[닫은]
-
22-07-2019 - |
문제
단일 클래스 대신 전체 Jar 파일을 디컴파일할 수 있는 무료 디컴파일러를 아는 사람이 있나요?name$1.class name$2.class name.class와 같은 하위 클래스에 문제가 있습니다.
해결책
2009: JavadeCompiler 항아리로 잘 할 수 있습니다. 0.2.5 이후로 모든 파일 (JAR 파일)이 표시됩니다.
또한보십시오 "Java 클래스 파일"어떻게 "어떻게"디 컴파일 "해야합니까?"라는 질문이 있습니다..
JD-Eclipse는 2009 년 말 이후로 바뀌지 않은 것 같습니다. 변화).
따라서 최신 Eclipse (3.8, 4.2+)와의 통합이 문제가 될 수 있습니다.
JD 코어는 적극적으로 유지됩니다.
둘 다 환상적인 작품의 결과입니다 (따라서 사용자) 엠마누엘 듀푸.
2018 :보다 현대적인 옵션 의견에서 ~에 의해 데이비드 케네디 아라 우호:
JetBrains/Intellij-Community/플러그인/Java-Decompiler/Engine
Fernflower는 Java 및 일반적으로 높은 수준의 프로그래밍 언어를위한 최초의 실제로 작동하는 분석 디 컴파일러입니다.
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\
또한보십시오 java 파일 지능 아이디어로 디 컴파일하는 방법 최근 Intellij 아이디어로 작업하는 명령.
다른 팁
Bash Shell과 Jad를 모두 가지고 있다면 :
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
코 컴파일 된 파일을 포함합니다.
우선, 모든 Java 아카이브 파일 (.jar
/.war
/etc ...)입니다 모두 기본적으로 화려합니다.zip
파일, 몇 가지 추가 된 매니페스트 및 메타 데이터가 포함되어 있습니다.
둘째,이 문제를 해결하기 위해 나는 개인적 으로이 문제를 모든 수준에서 처리하는 몇 가지 도구를 사용합니다.
- Jad + Jadclipse Decompiling을 위해 IDE에서 일하는 동안
.class
파일 - Winrar, 내가 가장 좋아하는 압축 도구는 기본적으로 Java 아카이브를 지원합니다 (다시, 첫 번째 단락 참조).
- 비할 바 없는, 내가 가장 좋아하는 Diff 도구는 올바르게 구성 될 때 다음을
jar
에스. 시도해 볼 가치가 있습니다.
앞서 언급 한 모든 것의 장점은 작업 환경을 막는 다른 외부 도구를 보유 할 필요가 없다는 것입니다. 해당 파일 중 하나에서 필요한 모든 것은 내 IDE 내부에서 처리하거나 기본적으로 다른 파일과 차별화 될 수 있습니다.
나는 (실망스럽게도) "라는 도구를 사용하여 상당한 성공을 거두었습니다.JD:자바 디컴파일러".
나는 그것이 대부분의 디컴파일러보다 낫다는 것을 알았습니다. Java 5 이상용으로 컴파일된 클래스를 처리할 때.불행하게도 JAD가 일반적으로 성공할 수 있는 문제가 여전히 있을 수 있습니다.
같은 것 :
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
- chmod +x deNomprie.jar.sh // 실행 파일
- ln -s ./decomprie.jar.s/usr/bin/dj
사용할 준비가되어 있습니다 dj your.jar
그리고 당신은 얻을 것입니다 your.jar.src
소스가있는 폴더. 사용 -d
디버그 모드 옵션.
JAR 파일은 JAR 확장자가있는 ZIP 파일입니다. zip 파일과 같은 항아리를 압축 할 수 있어야합니다 (Winzip).
당신은 그것을 추출한 다음 dir에 대해 Jad를 사용합니다.
참고 :이 솔루션은 MAC 및 *NIX 사용자에게만 작동합니다.
나는 또한 운이없는 Jad를 찾으려고 노력했다. 내 빠른 해결책은 다운로드하는 것이 었습니다 Macjad Jad가 포함되어 있습니다. 다운로드 한 후에는 [where-you-downloaded-macjad]/macjad/contents/resources/jad에서 Jad를 찾을 수 있습니다.