본문으로 건너뛰기
로그인 둘러보기
개발·코딩·데이터베이스 · 윈도우즈 유틸

Jd Gui Duo

0

Jd Gui Duo는 JD-Core v0 및 v1을 기반으로 한 Java 디컴파일러로, CFR, Procyon, Fernflower, Vineflower 및 Jadx와 같은 서드파티 디컴파일러도 지원합니다.

Windows디컴파일러오픈소스

소개

Jd Gui Duo는 JD-Core v0 및 v1을 기반으로 한 Java 디컴파일러로, CFR, Procyon, Fernflower, Vineflower 및 Jadx와 같은 서드파티 디컴파일러도 지원합니다. 이 프로그램은 Java 아카이브(JAR, APK 등)와 클래스 파일을 디컴파일하여 소스 코드를 확인할 수 있는 독립형 데스크톱 GUI 애플리케이션입니다. Windows, Linux, macOS 플랫폼에서 실행되며, 소스 코드는 GitHub에서 GPL-3.0-only 라이선스로 공개되어 있습니다.

상세정보

다양한 Java 아카이브 지원

Jd Gui Duo는 APK, DEX, AAR, CLASS, EAR, JAR, JAVA, JMOD, KAR, WAR, ZIP 형식의 파일을 열어 디컴파일할 수 있습니다. 이는 안드로이드 앱, Java 라이브러리, 엔터프라이즈 애플리케이션 등 다양한 Java 기반 파일을 분석할 수 있음을 의미합니다.

Open Type 및 Open Type Hierarchy

아카이브를 연 후 ‘Open Type’ 기능을 사용하면 특정 클래스를 선택하여 디컴파일 결과를 바로 확인할 수 있습니다. ‘Open Type Hierarchy’는 현재 열린 컨테이너들의 인덱스를 기반으로 상속 트리를 구성하여, 클래스가 여러 아카이브에 분산되어 있어도 상속 관계를 한눈에 파악할 수 있게 도와줍니다.

아웃라인 트리 및 퀵 아웃라인

아웃라인 트리는 현재 디컴파일된 클래스의 메서드 목록을 트리 형태로 보여주어 원하는 메서드로 빠르게 이동할 수 있게 합니다. 퀵 아웃라인(CTRL+SHIFT+O)은 입력 필터링 기능을 제공하여 메서드 이름을 입력하면서 실시간으로 결과를 필터링할 수 있습니다.

소스 코드 저장 및 Maven Central 연동

‘File -> Save All Sources’ 메뉴를 사용하면 현재 열린 모든 클래스의 소스 코드를 JAR 파일로 저장할 수 있습니다. 또한 Help -> Preferences에서 Maven Central 검색을 활성화하면 디컴파일된 코드와 원본 소스 코드를 비교하거나 누락된 소스를 다운로드할 수 있습니다. 이 기능은 프록시 또는 개인 Nexus 저장소 뒤에서 작동하도록 설정할 수 있으며, 마스터 비밀번호로 보호됩니다.

검색 및 탐색 기능

내장된 검색 dialog는 메서드, 문자열 상수, 필드 등을 인덱스 기반으로 검색하며, 와일드카드(*) 및 물음표(?)를 지원합니다. 검색 결과는 소스 뷰에서 하이라이트되어 관련 위치를 쉽게 찾을 수 있습니다. 또한 CTRL+F로 텍스트 찾기, CTRL+L로 특정 줄로 이동하는 단축키를 제공합니다.

바이트코드 및 제어 흐름 그래프 보기

아웃라인 트리에서 메서드를 오른쪽 클릭하여 ‘Show Byte Code’를 선택하면 해당 메서드의 Java 바이트코드를 확인할 수 있습니다. 또한 ‘Show Control Flow Graph’ 기능을 통해 PlantUML로 생성된 제어 흐름 그래프를 시각적으로 볼 수 있어, 디컴파일 로직을 이해하는 데 도움을 줍니다.

메서드 패칭 및 엔진 비교

JD-Core v1이 특정 메서드를 디컴파일하지 못하는 경우, 자동으로 JD-Core v0의 결과를 사용하여 패칭하고 ‘Patched from JD-Core v0’ 주석을 추가합니다. 또한 File 메뉴에서 JD-Core v0과 v1의 디컴파일 결과를 사이드바이 비교하여 알고리즘 차이 또는 회귀 문제를 분석할 수 있습니다.

빌드 스켈레톤 생성 및 하이퍼링크

세 개 이상의 라이브러리를 드래그 앤 드롭하면 Maven 또는 Gradle 빌드 스켈레톤을 자동 생성하여 pom.xml, build.gradle 및 배포 스크립트를 포함하는 아카이브를 만들 수 있습니다. 디컴파일된 소스 내의 텍스트 링크는 클릭 시 정의로 이동하여 탐색성을 높입니다.

컨텍스트 기능 및 로그 붙여넣기

오른쪽 클릭 메뉴를 통해 현재 선택된 타입, 필드 또는 메서드의 정규화된 Java 이름 또는 JVM 내부 이름을 복사할 수 있습니다. 또한 ‘Edit -> Paste Log’ 기능을 사용하면 클립보드의 Java 스택 트레이스를 파싱하여 각 프레임을 하이퍼링크로 변환, 클릭 시 해당 소스 코드 위치로 바로 이동할 수 있습니다.

고급 클래스 해결 및 JRE 시스템 라이브러리

‘Advanced class lookup’ 옵션을 활성화하면 현재 디렉터리의 JAR 및 JAVA_HOME의 JMods 또는 rt.jar를 사용하여 타입 해결 정확도를 높일 수 있습니다. 또한 JRE 시스템 라이브러리 설정을 통해 Eclipse AST 파서용 별도 JRE를 지정하여 하이퍼링크, 인덱싱, 컴파일 오류 표시 기능을 맞춤 설정할 수 있습니다.

기타 유용한 기능

실행 시 이전 세션의 파일을 자동으로 복원하는 세션 복원 기능과, 비-macOS 플랫폼에서 단일 인스턴스 실행을 통해 중복 창 생성을 방지하는 기능이 있습니다. 또한 불필요한 캐스트 제거, 실라인(line number 재정렬), 다크 모드 지원 등 사용자 편의를 위한 다양한 옵션이 제공됩니다.

다운로드·설치 방법

Windows 사용자는 WinGet을 통해 다음 명령어로 Jd Gui Duo를 설치할 수 있습니다:

winget install --id Nbauma109.JDGUIDuo

이 명령어는 기본 WinGet 소스에서 최신 안정 버전을 다운로드하여 설치합니다. 또는 GitHub �리스 페이지 또는 Jitpack에서 Windows용 아카이브(jd-gui-duo-2.0.114-windows.tar.xz)를 직접 다운로드하여 압축을 풀고 실행할 수도 있습니다.

기본 사용법

프로그램을 실행한 후, 메뉴 바의 'File -> Open'을 클릭하여 분석하고자 하는 Java 아카이브(JAR, APK 등) 또는 클래스 파일을 선택합니다. 파일이 열리면 왼쪽 패널에 패키지 구조가 표시되고, 더블 클릭하거나 'Open Type' 기능을 통해 특정 클래스를 디컴파일할 수 있습니다. 디컴파일된 소스 코드는 중앙 편집기에서 확인할 수 있으며, 아웃라인 트리를 통해 메서드나 필드로 빠르게 이동할 수 있습니다. 소스 코드를 저장하려면 'File -> Save All Sources'를 사용하고, 환경 설정은 'Help -> Preferences' 메뉴에서 조정할 수 있습니다.

시스템 요구사항

별도의 시스템 요구사항이 등록되지 않았습니다.