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를 디 컴파일하는 데 가장 적합하고 사용자 친화적 인 옵션입니다. 파일….