Java 클래스 파일을 어떻게 "디 컴파일"합니까? [닫은]
클래스 파일을 디 컴파일하기 위해 어떤 프로그램을 사용할 수 있습니까? 실제로 Java 코드를 받습니까 아니면 JVM 어셈블리 코드입니까?
이 사이트의 Java 성능 관련 질문에서, 종종 Java 클래스 파일을 "디 컴파일"한 사람들의 응답을보고 컴파일러가 특정 사항을 최적화하는 방법을 확인합니다.
2016 년 2 월 업데이트 :
www.javadecompilers.com 은 JAD를 다음과 같이 나열합니다.
가장 인기있는 Java 디 컴파일러이지만 주로이 시대에만 사용됩니다. C ++로 작성되었으므로 매우 빠릅니다.
오래되고 지원되지 않으며 올바르게 Java 5 이상을 디 컴파일하지 않습니다.
따라서 마일리지는 최근 jdk (7, 8)에 따라 다를 수 있습니다.
동일한 사이트에 다른 도구가 나열됩니다.
Salvador Valencia 가 주석 (2017 년 9 월) 에 언급 한 바와 같이 javadecompiler 는 .class
파일을 클라우드에 업로드 하고 디 컴파일 된 코드를 반환 하는 SaaS를 제공합니다 .
원래 답변 : 2008 년 10 월
- J2SE 5.0 (Java SE 5)의 주요 기능을 정의하는 JSR 176의 최종 릴리스는 2004 년 9 월 30 일에 공개되었습니다.
- Pavel Kouznetsov가 작성한 유명한 Java 디 컴파일러 인 JAD가 지원하는 최신 Java 버전은 JDK 1.3 입니다.
- "DJ Java Decompiler"또는 "Cavaj Java Decompiler"와 같이 오늘날 인터넷에서 다운로드 할 수있는 대부분의 Java 디 컴파일러는 JAD에 의해 구동되며 Java 5 소스를 표시 할 수 없습니다.
Java Decompiler (아직 다른 Fast Java 디 컴파일러)에는 다음이 있습니다.
- Java 5+ “.class”파일의 디 컴파일 및 분석을위한 명시 적 지원 .
- 좋은 GUI :
JDK 1.1.8에서 JDK 1.7.0까지의 컴파일러 및 기타 ( Jikes , JRockit 등) 와 함께 작동합니다 .
실제로 완벽하게 작동 하는 온라인 라이브 데모 버전 이 있습니다! 페이지에 jar 파일을 드롭하고 아무것도 설치하지 않고 디 컴파일 된 소스 코드를 볼 수 있습니다.
디 컴파일러가 몇 개 있습니다 ... 빠른 검색 결과 :
- 프로키온 : 오픈 소스 (Apache 2) 및 적극적으로 개발
- 크라 카타 우 : 오픈 소스 (GPLv3) 및 적극적으로 개발
- CFR : 오픈 소스 (MIT) 및 적극적으로 개발
- JAD
- DJ 자바 디 컴파일러
- 모카
그리고 더 많은.
이것들은 Java 코드를 생성합니다. Java에는 JVM 바이트 코드 ( javap ) 를 볼 수있는 기능이 있습니다 .
Java 소스 코드를 보려면 디 컴파일러를 확인하십시오. jad 검색으로 이동하십시오 .
바이트 코드를 보려면 JDK와 함께 제공되는 javap 를 사용하십시오 .
나는 여러 가지를 시도했지만 Procyon 은 나에게 가장 잘 작동하는 것처럼 보였다. 현재 개발 중이며 최신 Java 버전의 많은 기능을 지원합니다.
이것들은 내가 시도한 다른 것입니다.
- CFR
- 유망하지만 종종 메소드 디 컴파일에 실패했습니다. 나는 이것에 계속 내 눈을 유지합니다. 또한 최신 Java 기능을 지원하여 적극적으로 개발되었습니다.
- 크라 카타 우
- 원본 소스를 재구성하는 대신 동등한 Java 코드를 출력하려고 시도하는 다른 접근 방식을 취합니다. 이는 난독 처리 된 코드에 더 적합 할 가능성이 있습니다. 내 테스트에서 Procyon과 거의 비슷한 수준이지만 여전히 다른 것이 좋습니다.
-skip
오류가 발생하지 않도록 명령 줄 플래그 를 사용해야했습니다 . 적극적으로 개발되었고 흥미롭게도 파이썬으로 작성되었습니다.
- 원본 소스를 재구성하는 대신 동등한 Java 코드를 출력하려고 시도하는 다른 접근 방식을 취합니다. 이는 난독 처리 된 코드에 더 적합 할 가능성이 있습니다. 내 테스트에서 Procyon과 거의 비슷한 수준이지만 여전히 다른 것이 좋습니다.
- JD-GUI
- 효과가 있었지만 Procyon의 출력은 훨씬 좋았습니다. 다음은 Procyon 출력과 원본 및 JD-GUI를 비교 하는 페이지 입니다. JD-GUI는 Eclipse 플러그인 으로도 제공되며 전혀 작동하지 않습니다. 오픈 소스가 아닌 것 같고 개발은 산발적으로 보입니다.
- JAD
- 작동했지만 Java 1.4 이하 만 지원합니다. Eclipse 플러그인 으로도 사용 가능 합니다. 더 이상 개발 중이 아닙니다.
JAD Decompiler를 사용 합니다.
가 이클립스 그것을위한 플러그인, jadeclipse는 . 꽤 좋습니다.
프로키온 에는 디 컴파일러가 포함되어 있습니다. FOSS입니다.
그을음 은 최신 Java 코드를위한 옵션입니다. 적어도 그것은 여전히 최근에 유지되고 있다는 장점이 있습니다 ...
또한 Java Decompiler 는 독립형 GUI와 Eclipse 통합을 모두 갖춘 디 컴파일러입니다.
마지막으로 Jdec 은 언급되지 않았지만 다른 옵션만큼 세련되지는 않았습니다.
JD-GUI 는 정말 좋습니다. JAR 파일을 열고 IDE에서 작업하는 것처럼 코드를 탐색 할 수 있습니다. 좋은 물건.
2015 년 2 월 현재 디 컴파일러 목록은 다음과 같습니다.
프로키온 , 오픈 소스, https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler
CFR , 무료, 소스 코드 없음, http://www.benf.org/other/cfr/
JD , 비상업적 용도로만 무료, http://jd.benow.ca/
Fernflower , 공개 소스, https://github.com/fesh0r/fernflower ,
JAD – 역사적인 이유로 만 제공됩니다. 무료, 소스 코드 없음, http://varaneckas.com/jad/ 오래되고 지원되지 않으며 Java 5 이상을 올바르게 디 컴파일하지 않습니다.
위에서 언급 한 디 컴파일러를 온라인으로 테스트 할 수 있으며 설치가 필요 없으며 원하는 교육 방법을 선택할 수 있습니다.
클라우드의 Java 디 컴파일러 : http://www.javadecompilers.com/
사용할 수있는 몇 가지 프로그램이 있습니다. 실제 Java 코드를 얻을 수 있지만 때로는 코드가 난독 화되어 메소드가 하나의 문자 또는 숫자 또는 임의의 문자와 숫자의 조합으로 이름이 지정됩니다.
Java를위한 대부분의 디 컴파일러는 JAD를 기반으로 합니다. 훌륭한 도구이지만 불행히도 한동안 업데이트되지 않았으며 Java 1.5 + 클래스를 잘 처리하지 못합니다. 1.5 + 클래스를 올바르게 처리하는 도구를 보지 못했습니다.
cavaj를 살펴보십시오 .
지금까지 나열된 모든 JAD 링크가 끊어진 것 같습니다.이 사이트를 찾았습니다. 훌륭하게 작동합니다 (적어도 Linux의 경우)! 우분투 11.10에서는 어떤 이유로 든 정적 파일을 다운로드해야했습니다.
JAD는 작동하고 단순합니다.
또한 메소드를 보려면 javap를 사용하십시오.
Java 컴파일러가 특정 작업을 수행하는 방법을 보려면 디 컴파일을 원하지 않고 분해를 원합니다. 디 컴파일에는 바이트 코드를 Java 소스로 변환하는 것이 포함됩니다. 즉, 많은 저수준 정보가 손실되며 컴파일러 최적화에 대해 궁금한 경우 관심이있는 정보 일 것입니다.
어쨌든 오픈 소스 Java 디스어셈블러를 작성했습니다 . Javap와 달리 이것은 병리학 적 클래스에서도 작동하므로 클래스에서 난독 화 도구가 수행하는 작업을 볼 수 있습니다. 권장하지는 않지만 디 컴파일을 수행 할 수도 있습니다.
JAD는 나를 위해 작동하지 않으므로 (Ubuntu 11.10 문제) 앞으로 나아가서 JODO에 뛰어 들었습니다 . 적어도 Open Java 소스 코드가 있고 내 .class를 올바르게 디 컴파일 할 수있었습니다 .
먼저 '분기 / 일반' 분기 를 확인하는 것이 좋습니다 . 트렁크가 안정적이지 않습니다.
IntelliJ IDEA 플랫폼에서는 Java Decompiler IntelliJ Plugin을 사용할 수 있습니다 . 디버깅 프로세스 중에 모든 Java 소스가없는 경우에도 모든 Java 소스를 표시 할 수 있습니다. 유명한 도구 JD-GUI를 기반으로합니다 .
AndroChef Java Decompiler 를 사용하면 apk, dex, jar 및 java 클래스 파일을 디 컴파일 할 수 있습니다. 간단하고 쉽습니다. AndroChef JD는 FernFlower를 기반으로 합니다 . 10 번의 무료 사용으로 평가할 수 있습니다.
AndroChef는 제네릭, 열거 형 및 주석과 같은 Java 언어 기능을 지원합니다. 일부 연구에 따르면 AndroChef Java Decompiler는 전통적인 Java 컴파일러로 생성 된 Java 응용 프로그램의 98.04 %를 매우 높은 복구 속도로 디 컴파일 할 수 있습니다. Java 및 Dalvik 바이트 코드 (DEX, APK)를 읽을 수있는 Java 소스로 디 컴파일 할 수있는 간단하지만 강력한 도구입니다.
OSX의 경우 jarzilla 또는 JD-GUI를 권장합니다.
둘 다 jar, war 등을 볼 수 있습니다. 파일 내용을 저장하고 그 안의 모든 클래스 파일을 디 컴파일합니다.
Jarzilla : https://code.google.com/p/jarzilla/
JD-GUI : http://jd.benow.ca/
참고 URL : https://stackoverflow.com/questions/272535/how-do-i-decompile-java-class-files
'IT story' 카테고리의 다른 글
트위터 부트 스트랩 양식 파일 요소 업로드 버튼 (0) | 2020.02.09 |
---|---|
JavaScript에서 코드 구성과 관련하여 일반적으로 인정되는 모범 사례 (0) | 2020.02.09 |
추상 클래스를 인스턴스화 할 수 있습니까? (0) | 2020.02.09 |
BehaviorSubject와 Observable? (0) | 2020.02.09 |
PHP에서 유용한 오류 메시지를 얻는 방법은 무엇입니까? (0) | 2020.02.09 |