[java] 사람이 읽을 수있는 방식으로 Java .class 파일을 열려면 어떻게해야합니까?

Java 애플릿의 클래스 파일이 내부에서 수행하는 작업을 파악하려고합니다. 메모장이나 Textpad로 열면 엉뚱한 멍청이가 나타납니다.

내가 무엇을하는지 알아낼 수 있도록 다소 읽기 쉬운 형식으로 다시 엉키는 방법이 있습니까?

  • 환경 == VS 2008이 설치된 Windows.


답변

jd-gui 는 현재 최고의 디 컴파일러입니다. 점점 더 많은 JAD에 비해 Java의 새로운 기능을 처리 할 수 ​​있습니다.


답변

바이트 코드를 읽는 데 신경 쓰지 않는다면 javap가 잘 작동합니다. 표준 JDK 설치의 일부입니다.

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


답변

@MichaelMyers가 지적했듯이

javap -c <name of java class file> 

JVM 어셈블리 코드를 얻으려면. 더 나은 가시성을 위해 출력을 텍스트 파일로 리디렉션 할 수도 있습니다.

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


답변

자바 디 컴파일러를 원하면 명령 줄 도구 javap를 사용하여이를 수행 할 수 있습니다 . 또한 Java Decompiler HOW-TO 는 클래스 파일을 디 컴파일하는 방법을 설명합니다.


답변

당신이 찾고있는 것은 자바 디 컴파일러입니다. 나는 JAD http://www.kpdus.com/jad.html을 추천한다 . 그것은 비 상업적 사용을 위해 무료이며 작업을 완료한다.

참고 : 이것은 작성된 코드와 똑같은 코드를 만들지는 않습니다. 즉, 주석과 변수 이름을 잃어 버릴 것이므로 일반 소스 코드를 읽는 것보다 조금 더 어려울 것입니다. 개발자가 정말로 비밀 스럽다면 코드도 난독 화하여 읽기가 더 어려워 질 것입니다.


답변

cpuguru, 애플릿이 javac 1.3 이하로 컴파일 된 경우 가장 좋은 옵션은 Jad를 사용하는 것입니다.

안타깝게도 JAD 1.5.8 (2001 년 4 월 14 일)에서 지원하는 마지막 JDK는 JDK 1.3입니다.

애플릿이 최신 컴파일러로 컴파일 된 경우 JD-GUI를 사용해 볼 수 있습니다. .이 디 컴파일러는 개발 중이지만 JDK 1.4, 1.5 또는 1.6으로 컴파일 된 클래스에 대해 대부분의 경우 올바른 Java 소스를 생성합니다.

DarenW, 귀하의 게시물에 감사드립니다. JD-GUI는 아직 최고의 디 컴파일러는 아니지만 … 작업 중입니다. 🙂


답변

jd-gui ” http://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zip&can=2&q= “는 .class를 디 컴파일하는 데 가장 적합하고 사용자 친화적 인 옵션입니다. 파일….