Java 애플릿의 클래스 파일이 내부에서 수행하는 작업을 파악하려고합니다. 메모장이나 Textpad로 열면 엉뚱한 멍청이가 나타납니다.
내가 무엇을하는지 알아낼 수 있도록 다소 읽기 쉬운 형식으로 다시 엉키는 방법이 있습니까?
- 환경 == VS 2008이 설치된 Windows.
Java 애플릿의 클래스 파일이 내부에서 수행하는 작업을 파악하려고합니다. 메모장이나 Textpad로 열면 엉뚱한 멍청이가 나타납니다.
내가 무엇을하는지 알아낼 수 있도록 다소 읽기 쉬운 형식으로 다시 엉키는 방법이 있습니까?
답변:
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
자바 디 컴파일러를 원하면 명령 줄 도구 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를 디 컴파일하는 데 가장 적합하고 사용자 친화적 인 옵션입니다. 파일....
컴파일 된 코드입니다. JAD와 같은 디 컴파일러를 사용해야합니다. http://www.kpdus.com/jad.html
디 컴파일러를 사용해야합니다. 다른 사람들은 JAD를 제안했고 다른 옵션이 있으며 JAD가 최고입니다.
원본 소스 코드에 비해 약간 잃어 버릴 수있는 의견을 반영하겠습니다. 삭제로 인해 코드가 제네릭을 사용하면 특히 재미있어 보일 것입니다.
제안 된대로 JAD를 사용하여 디 컴파일하고 파일을 볼 수 있습니다. 쉽게 읽을 수 있도록 이클립스 용 JADclipse 플러그인을 사용하여 JAD를 이클립스에 직접 통합하거나 명령 줄 JAD보다 훨씬 사용하기 쉬운 DJ Java Decompiler를 사용할 수 있습니다.
결과적으로 읽을 수있는 Java 코드를 원하는 경우 JAD는 훌륭한 옵션입니다. 그래도 .class
파일 형식 의 내부를 파헤 치고 싶다면 javap
. JDK와 함께 번들로 제공되며 16 진수 바이트 코드를 읽을 수있는 ASCII로 "디 컴파일"할 수 있습니다. 그것이 생성하는 언어는 여전히 바이트 코드 (Java와 같은 것은 아님)이지만 상당히 읽기 쉽고 매우 유익합니다.
또한 정말로 원한다면.class
16 진 편집기에서 파일을 바이트 코드를 직접 읽을 수 있습니다. 결과는를 사용하는 것과 동일합니다 javap
.
CFR-또 다른 자바 디 컴파일러 는 i Java 6으로 작성된 최신 자바를위한 훌륭한 디 컴파일러입니다.
사용 가능한 온라인 자바 디 컴파일러를 사용할 수도 있습니다. 예 : http://www.javadecompilers.com