문제

단일 클래스 대신 전체 Jar 파일을 디컴파일할 수 있는 무료 디컴파일러를 아는 사람이 있나요?name$1.class name$2.class name.class와 같은 하위 클래스에 문제가 있습니다.

도움이 되었습니까?

해결책

2009: JavadeCompiler 항아리로 잘 할 수 있습니다. 0.2.5 이후로 모든 파일 (JAR 파일)이 표시됩니다.

http://java.decompiler.free.fr/sites/default/screenshots/screenshot1.png

또한보십시오 "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를 찾을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top