it-swarm-korea.com

사람이 읽을 수있는 방식으로 Java .class 파일을 어떻게 열 수 있습니까?

Java 애플릿의 클래스 파일이 무엇을하고 있는지 알아 내려고 노력 중입니다. 메모장이나 텍스트 패드로 열면 많은 구식 구식이 나타납니다.

그것을 읽을 수있는 형식으로 다시 묶을 수있는 방법이 있습니까? 그래서 내가하는 일을 알아낼 수 있습니까?

  • 환경 == Windows와 VS 2008이 설치되었습니다.
105
cpuguru

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

200
DarenW

바이트 코드를 읽는 것이 마음에 들지 않으면 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
72
Michael Myers

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

7
Drew Frezell

@MichaelMyers가 지적한 것처럼

javap -c <name of Java class file> 

jVM 어셈블리 코드를 가져옵니다. 가시성을 높이기 위해 출력을 텍스트 파일로 리디렉션 할 수도 있습니다.

javap -c <name of Java class file> > decompiled.txt
3
Nilashish C

Jad 를 사용하여 디 컴파일하면 아마도 최선의 선택 일 것입니다. 코드가 난독 처리되지 않는 한 괜찮은 결과가 나옵니다.

2
Rasmus Faber

당신이 찾고있는 것은 Java 디 컴파일러입니다. JAD를 추천합니다 http://www.kpdus.com/jad.html 상업적으로 사용하지 않을 경우 무료이며 작업을 완료합니다.

참고 :이 코드가 작성된 것과 정확히 동일하지는 않습니다. 즉, 주석과 변수 이름을 잃을 수 있으므로 일반적인 소스 코드를 읽는 것보다 조금 어려울 것입니다. 개발자가 실제로 비밀 인 경우 코드도 난독 화되어 읽기가 더 어려워집니다.

2
David Beleznay

cpuguru, 애플릿이 javac 1.3 (또는 그 이하)으로 컴파일 된 경우 Jad를 사용하는 것이 가장 좋습니다.

불행하게도 JAD 1.5.8 (2001 년 4 월 14 일)이 지원하는 마지막 JDK는 JDK 1.3입니다.

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

대런, 게시물 주셔서 감사합니다. JD-GUI는 아직 최고의 디 컴파일러는 아니지만 ...)

2
Emmanuel Dupuy

살펴볼 클래스 파일이 오픈 소스 인 경우 디 컴파일하지 말고 대신 소스 파일을 IDE에 직접 첨부하십시오. 그렇게하면 라이브러리 클래스의 코드를 마치 자신의 것처럼 볼 수 있습니다

1
arturh

컴파일 된 코드이므로 JAD와 같은 디 컴파일러를 사용해야합니다. http://www.kpdus.com/jad.html

1
cynicalman

디 컴파일러를 사용해야합니다. 다른 사람들은 JAD를 제안했으며 다른 옵션이 있으며 JAD가 최고입니다.

원래 소스 코드와 비교할 때 약간 손실 될 수 있다는 의견을 제시합니다. 코드가 삭제로 인해 제네릭을 사용하면 특히 재미있을 것입니다.

1
Zac Gochenour

jd-gui " http://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.Zip&can=2&q= "이 최고이며 .class 파일을 디 컴파일하기위한 사용자 친화적 인 옵션 ....

JAD 및/또는 JADclipse Eclipse 플러그인.

1
John Gardner

사용 가능한 온라인 Java 디 컴파일러를 사용할 수도 있습니다. 예를 들어 http://www.javadecompilers.com

0
Prachi Sharma

Applet.class를 디 컴파일 할 필요가 없습니다. 공개 Java API 클래스 소스 코드는 JDK와 함께 제공되며 (설치하도록 선택한 경우) 디 컴파일 된 바이트 코드보다 읽기 쉽습니다. src.Zip (JDK 설치 폴더에 있음)에 압축되어 있습니다.

0
Arno

제안 된대로 JAD를 사용하여이를 디 컴파일하고 파일을 볼 수 있습니다. 쉽게 읽을 수 있도록 Eclipse 용 JADclipse 플러그인을 사용하여 JAD를 Eclipse에 직접 통합하거나 명령 행 JAD보다 사용하기가 훨씬 쉬운 DJ Java 디 컴파일러를 사용할 수 있습니다.

0
amitwadhwa

결과적으로 읽을 수있는 Java 코드를 원하는 경우 JAD는 훌륭한 옵션입니다. 그래도 .class 파일 형식의 내부를 파고 싶다면 javap을 원할 것입니다. JDK와 함께 제공되며 16 진수 바이트 코드를 읽을 수있는 ASCII로 "디 컴파일"할 수 있습니다. 그것이 생성하는 언어는 여전히 바이트 코드 (Java와 같은 것은 아님)이지만 상당히 읽기 쉽고 매우 유익합니다.

또한 실제 원하는 경우 16 진수 편집기에서 .class 파일을 열고 바이트 코드를 직접 읽을 수 있습니다. 결과는 javap을 사용하는 것과 같습니다.

0
Daniel Spiewak

CFR-다른 Java 디 컴파일러 는 현대 Java로 작성된 i Java 6에 대한 훌륭한 디 컴파일러입니다.

0
tidbeck