
New releaseSep 10, 2026
jadx-magic-strings v1.0.3-dev
DEX 파일 및 디컴파일된 Android 코드에서 발견된 문자열 상수로부터 메서드 이름, 클래스 참조 및 소스 파일 경로를 추출하는 JADX 플러그인입니다.
JADX Magic Strings 플러그인
문자열 상수에서 정보를 추출하는 JADX 플러그인입니다.
기능
디컴파일된 코드의 문자열 상수를 추출하고 분석하여 다음을 찾습니다:
- 소스 파일 참조: 문자열 상수에서 Java/Kotlin 소스 파일(.java, .kt, .kts, .scala, .groovy)에 대한 참조를 탐지합니다.
- 메서드 이름 후보: 정규식 패턴을 사용하여 문자열에서 잠재적인 메서드 이름을 식별합니다.
- 문자열 분석: 모든 문자열 상수와 관련 메서드 및 클래스를 수집합니다.
설치
옵션 1: GitHub에서 설치 (권장)
이 플러그인이 GitHub에 게시된 경우 직접 설치할 수 있습니다:
jadx plugins --install "github:0rshemesh:jadx-magic-strings"
옵션 2: 소스에서 빌드 및 설치
-
저장소 클론:
git clone https://github.com/0rshemesh/jadx-magic-strings.git cd jadx-magic-strings -
플러그인 빌드:
./gradlew build -
플러그인 설치:
jadx plugins --install-jar build/libs/jadx-magic-strings-1.0.1.jar또는 JAR 파일을 JADX 플러그인 디렉토리에 수동으로 복사:
- Linux/Mac:
~/.local/share/jadx/plugins/dropins/ - Windows:
%APPDATA%\jadx\plugins\dropins\
- Linux/Mac:
플러그인 빌드
플러그인은 독립적으로 빌드할 수 있습니다:
./gradlew build
플러그인 JAR은 다음 위치에 생성됩니다:
build/libs/jadx-magic-strings-1.0.1.jar
요구 사항:
- Java 11 이상
- Gradle (또는 포함된 Gradle 래퍼 사용:
./gradlew)
사용법
JADX GUI에서
-
플러그인 설치 (위 설치 섹션 참조)
-
JADX GUI 실행:
jadx-gui -
JADX GUI에서 APK/DEX 파일 열기
-
디컴파일 완료를 기다립니다 (디컴파일 후 플러그인이 자동으로 실행됨)
-
플러그인 접근:
- 메뉴 바의 Plugins 메뉴로 이동
- "Magic Strings: Show Results" 클릭
- 여러 탭이 있는 대화 상자가 열립니다:
- 소스 파일: 탐지된 소스 파일 경로와 참조를 표시하는 트리 뷰
- 상위 후보 + 소스 파일: 소스 파일별로 그룹화된 최고 점수 메서드 후보의 결합 뷰
- 메서드 후보 (필터링됨): 필터링된 메서드 이름 후보를 표시하는 테이블
- 모든 문자열: 추출된 모든 문자열 상수를 표시하는 테이블

JADX CLI에서
플러그인은 디컴파일 중 자동으로 실행되지만, 결과를 보기 위한 CLI 인터페이스는 없습니다. GUI를 사용하여 추출된 정보를 확인하세요.
작동 방식
- 디컴파일 후, 플러그인은 모든 클래스의 모든 메서드를 스캔합니다.
- 명령어 노드(CONST_STR 명령어)에서 문자열 상수 추출
- 정규식 패턴을 사용하여 문자열 분석:
- 소스 파일:
.java,.kt등으로 끝나는 파일 경로 일치 - 메서드 이름: 메서드 이름처럼 보이는 카멜케이스 패턴 일치
- 소스 파일:
- GUI를 통해 접근 가능한 데이터 구조에 결과 저장
사용 예시
- 리버스 엔지니어링: 프로젝트 구조를 드러낼 수 있는 원본 소스 파일 이름 찾기
- 디난독화: 디버그 문자열이나 오류 메시지에서 메서드 이름 식별
- 코드 분석: 문자열과 메서드 간의 관계 이해
- 악성코드 분석: 기능을 나타낼 수 있는 흥미로운 문자열 추출
제한 사항
- 플러그인은 디컴파일이 완료된 후에만 작동합니다.
- 문자열 추출은 디컴파일되는 코드에 따라 달라집니다. (일부 난독화된 코드는 접근 가능한 문자열이 없을 수 있음)
- 메서드 이름 탐지는 휴리스틱을 사용하므로 오탐이 발생할 수 있습니다.
- 소스 파일 탐지는 파일 경로를 포함하는 문자열에 의존합니다. (항상 존재하는 것은 아님)
문제 해결
플러그인이 메뉴에 나타나지 않음:
- 플러그인이 올바르게 설치되었는지 확인
- 플러그인 JAR이 플러그인 디렉토리에 있는지 확인
- 서비스 파일이 존재하는지 확인:
META-INF/services/jadx.api.plugins.JadxPlugin - 호환되는 JADX 버전(1.5.2+)을 사용하고 있는지 확인
결과가 표시되지 않음:
- 코드에 관련 문자열이 없을 수 있습니다.
- 다른 APK/DEX 파일을 디컴파일해 보세요.
- 일부 난독화된 코드는 추출 가능한 문자열이 없을 수 있습니다.
빌드 오류:
- Java 11 이상을 사용하고 있는지 확인
./gradlew clean build를 실행하여 전체 재빌드build.gradle.kts의 JADX 버전이 Maven Central에서 사용 가능한 버전과 일치하는지 확인
작성자
0rshemesh가 만들고 유지 관리합니다.
- GitHub: @0rshemesh
- 저장소: jadx-magic-strings
- 이메일: [email protected]
라이선스
이 플러그인은 Apache License 2.0에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.