Java 클래스 파일을 "컴파일 해제"하려면 어떻게 해야 합니까?
클래스 파일을 디컴파일하려면 어떤 프로그램을 사용할 수 있습니까?Java 코드를 실제로 얻을 수 있을까요?아니면 JVM 어셈블리 코드만 얻을 수 있을까요?
이 사이트의 Java 퍼포먼스에 관한 질문에서는 컴파일러가 특정 사항을 어떻게 최적화하는지 확인하기 위해 Java 클래스 파일을 "컴파일 해제"한 사람들의 답변을 자주 볼 수 있습니다.
2016년 2월 갱신:
www.javadecompilers.com 에서는 JAD가 다음과 같이 표시됩니다.
가장 인기 있는 자바 디컴파일러지만, 주로 이 시대에만 해당됩니다.C++는 C++입니다.
5 및 나중에 .Java 5
따라서 주행거리는 최근 jdk(7, 8)에 따라 달라질 수 있습니다.
같은 사이트에 다른 도구가 나열됩니다.
Salvador Valencia가 코멘트(2017년 9월)에서 지적한 바와 같이 javadecompiler는 SaaS를 제공하며, 여기서 사용자는 이 SaaS를 업로드할 수 있습니다..class
파일에 저장하면 디컴파일된 코드가 반환할 수 있습니다.
원답: 2008년 10월
- J2SE 5.0(Java SE 5)의 주요 기능을 정의하는 JSR 176의 최종 릴리스는 2004년 9월 30일에 발행되었습니다.
- Mr. Pavel Kouznetsov가 작성한 유명한 Java 디컴파일러인 JAD가 지원하는 최신 Java 버전은 JDK 1.3입니다.
- 현재 인터넷에서 다운로드 가능한 "DJ Java 디컴파일러" 또는 "Cavaj Java 디컴파일러"와 같은 대부분의 Java 디컴파일러는 JAD를 기반으로 합니다. Java 5 소스를 표시할 수 없습니다.
Java 디컴파일러(또 다른 Fast Java 디컴파일러)에는 다음이 있습니다.
- Java 5+ ".class" 파일의 디컴파일 및 분석을 명시적으로 지원합니다.
- 멋진 GUI:
JDK 1.1.8부터 JDK 1.7.0까지의 컴파일러 및 기타(Jikes, JRockit 등)와 연동됩니다.
실제로 기능하고 있는 온라인 라이브 데모 버전이 특징입니다!페이지에 jar 파일을 놓으면 아무것도 설치하지 않고 디컴파일된 소스 코드를 볼 수 있습니다.
밖에 디컴파일러가 몇 명 있는데...빠른 검색 결과:
- Procyon: 오픈 소스(Apache 2)로 적극적으로 개발
- 크라카타우: 오픈소스(GPLv3)로 적극적으로 개발
- CFR: 오픈 소스(MIT)로 적극적으로 개발
- JAD
- DJ Java 디컴파일러
- 모카
그리고 더 많이.
Java 코드를 생성합니다.Java에는 JVM 바이트 코드(javap)를 볼 수 있는 기능이 포함되어 있습니다.
Java 소스 코드를 보려면 일부 디컴파일러를 확인하십시오.JAD를 찾아봐
바이트 코드를 표시하려면 JDK에 부속된 javap을 사용합니다.
여러 번 시도했는데, 프로시언이 나에게 가장 잘 맞는 것 같았다.현재 개발 중이며 최신 버전의 Java의 많은 기능을 지원합니다.
다음은 제가 시도한 다른 항목입니다.
- CFR
- 유망하지만 종종 실패한 메서드 디컴파일.이번 건은 계속 주시하고 있을게요.또한 최신 Java 기능을 지원하여 적극적으로 개발되었습니다.
- 크라카타우
- 원래 소스를 재구성하는 대신 동등한 Java 코드를 출력하려고 한다는 점에서 다른 접근 방식을 취합니다. 따라서 난독화된 코드를 더 잘 만들 수 있습니다.테스트 결과 Procyon과 대등하지만, 뭔가 다른 것을 가지고 있는 것은 좋은 일입니다.는 꼭 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
-skip
명령줄 플래그를 사용하여 오류 발생 시 중지되지 않도록 합니다.활발하게 개발되었으며, 흥미롭게도 Python으로 작성되었습니다.
- 원래 소스를 재구성하는 대신 동등한 Java 코드를 출력하려고 한다는 점에서 다른 접근 방식을 취합니다. 따라서 난독화된 코드를 더 잘 만들 수 있습니다.테스트 결과 Procyon과 대등하지만, 뭔가 다른 것을 가지고 있는 것은 좋은 일입니다.는 꼭 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
- JD-GUI
- 먹혔지만 프로시온의 성과는 훨씬 더 좋았습니다.Procyon의 출력을 원본과 JD-GUI와 비교한 페이지입니다.JD-GUI는 이클립스 플러그인으로도 사용할 수 있지만, 전혀 기능하지 않았습니다.오픈 소스는 아닌 것 같고 개발은 산발적으로 보입니다.
- JAD
- 동작하지만 Java 1.4 이하만 지원합니다.Eclipse 플러그인으로도 사용할 수 있습니다.더 이상 개발 중이 아닙니다.
JAD 디컴파일러를 사용합니다.
이클립스 플러그인이 있습니다. 옥클립스입니다.꽤 괜찮네요.
프로시온은 디컴파일러를 포함한다.FOSS입니다.
Sult는 새로운 Java 코드의 옵션입니다.적어도 최근에도 유지되고 있다는 장점이 있다.
또한 Java 디컴파일러는 독립형 GUI와 Eclipse 통합 기능을 모두 갖춘 디컴파일러입니다.
마지막으로 Jdec은 언급되지 않았지만 다른 옵션만큼 세련되지는 않았습니다.
JD-GUI 정말 잘해요.JAR 파일을 열고 IDE 작업을 하는 것처럼 코드를 찾아볼 수 있습니다. 좋습니다.
다음은 2015년 2월 현재 디컴파일러 목록입니다.
Procyon, 오픈소스, 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+클래스를 적절하게 처리할 수 있는 툴은 아직 없습니다.
카바지를 보세요.
지금까지의 JAD 링크는 모두 망가진 것 같아서 이 사이트를 찾았습니다.(최소한 Linux의 경우) 매우 효과적입니다.Ubuntu 11.10에서는 어떤 이유로든 정적 파일을 다운로드해야 했습니다.
JAD는 효과적이고 간단한 것입니다.
또한 메서드만 표시하려면 javap을 사용합니다.
Java 컴파일러가 어떻게 동작하는지 보고 싶다면 컴파일러가 아니라 디스어셈블리가 필요합니다.디컴파일에는 바이트코드를 Java 소스로 변환하는 작업이 포함됩니다.즉, 많은 낮은 수준의 정보가 손실됩니다.컴파일러 최적화가 궁금하다면 이것이 바로 당신이 관심 있는 정보일 것입니다.
어쨌든, 오픈 소스 자바 디스어셈블러를 작성했습니다.Javap과는 달리 이는 높은 병리학적 클래스에서도 작동하기 때문에 난독화 툴이 클래스에 어떤 영향을 미치는지 알 수 있습니다.디컴파일도 가능하지만 추천하진 않습니다.
JAD가 제 기능을 하지 않기 때문에(Ubuntu 11.10호) JODO에 몰두하고 있습니다.적어도 오픈 자바 소스 코드를 가지고 있어 내 .class를 적절히 디컴파일 할 수 있었다.
먼저 '브런치/일반' 지점을 확인하는 것이 좋습니다.트렁크가 불안정합니다.
IntelliJ IDEA 플랫폼에서는 Java 디컴파일러 IntelliJ 플러그인을 사용할 수 있습니다.이를 통해 모든 Java 소스를 디버깅 프로세스 중에 표시할 수 있습니다.모든 Java 소스가 없는 경우에도 마찬가지입니다.이것은 유명한 도구인 JD-GUI를 기반으로 합니다.
AndroChef Java 디컴파일러를 사용하면 apk, 덱스, jar 및 java 클래스 파일을 디컴파일할 수 있습니다.간단하고 쉽다.AndroChef JD는 FernFlower를 기반으로 합니다.10가지 무료 사용으로 평가하실 수 있습니다.
AndroChef는 범용, 에넘, 주석과 같은 Java 언어 기능을 지원합니다.일부 연구에 따르면 AndroChef Java 디컴파일러는 기존 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
'programing' 카테고리의 다른 글
구조물에 제로렝스 배열의 목적은 무엇입니까? (0) | 2022.07.02 |
---|---|
"Circular Linked List"(단일 또는 이중) 데이터 구조가 필요한 이유는 무엇입니까? (0) | 2022.07.02 |
단일 요소 배열 목록을 빠르고 편리하게 작성하는 방법 (0) | 2022.07.02 |
C와 C++의 조건부 연산자 차이 (0) | 2022.07.02 |
vue j에 대한 응답형 이미지 그리드 갤러리 (0) | 2022.07.02 |