Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
pyjadx — JADX용 Python 바인딩. | Kitploit
도구/GitHubGitHub/amruth-sn/pyjadx
Android SecurityStatic AnalysisCode AnalysisReverse EngineeringMobile SecurityBinary Analysis
GitHubamruth-sn/pyjadx

pyjadx

JADX용 Python 바인딩.

저장소 보기
625개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

pyjadx

JADX를 위한 Python 바인딩 (JPype 기반). Android APK 및 DEX 파일을 Python에서 Java 소스로 디컴파일합니다.

root@kitploit:~
from pyjadx import Jadx

with Jadx("app.apk") as jadx:
    for cls in jadx.classes:
        print(cls.full_name)
        print(cls.code)

왜 pyjadx인가?

JADX는 최고의 오픈소스 Android 디컴파일러입니다. Dalvik 바이트코드에서 깔끔한 Java/Kotlin 소스를 생성하며, 클래스 계층 구조, 제네릭, 예외 처리, 애너테이션을 보존합니다. pyjadx는 서브프로세스 오버헤드 없이 이 기능을 Python에 제공합니다. JADX가 JPype를 통해 프로세스 내에서 실행됩니다.

설치

root@kitploit:~
pip install pyjadx

요구사항: JDK 11+ (JADX JAR은 최초 사용 시 자동으로 다운로드됩니다).

빠른 시작

root@kitploit:~
from pyjadx import Jadx

with Jadx("app.apk") as jadx:
    # 모든 최상위 클래스 (내부 클래스는 cls.inner_classes로 접근)
    for cls in jadx.classes:
        print(cls.full_name, len(cls.methods), "메서드")

    # 정규화된 이름으로 검색
    main = jadx.search_class("com.example.MainActivity")
    if main:
        print(main.code)

    # 메서드 수준 디컴파일
    for method in main.methods:
        print(f"{method.name}: {method.code}")

    # 상호 참조
    for method in main.methods:
        print(f"{method.name} 호출자: {[c.name for c in method.callers]}")

    # 패키지 탐색
    for pkg in jadx.packages:
        print(pkg.name, len(pkg.classes), "클래스")

지원 입력 형식

형식예시
APKJadx("app.apk")
DEXJadx("classes.dex")
멀티 DEX APK투명하게 처리 – 모든 클래스 병합

API 참조

Jadx(path, *, threads=None, mode="auto", code_cache=False)

주 진입점입니다. 컨텍스트 관리자로 사용하거나 load()/close()를 직접 호출하세요.

속성:

메서드:

JavaClass

JavaMethod

JavaField

JavaPackage

탈출구

모든 래퍼는 .java를 통해 내부 JADX Java 객체를 노출합니다. 이를 통해 아직 래핑되지 않은 모든 JADX API를 호출할 수 있습니다:

root@kitploit:~
with Jadx("app.apk") as jadx:
    cls = jadx.search_class("com.example.Foo")
    # JADX Java API 직접 호출
    code_info = cls.java.getCodeInfo()

JVM 공존

pyjadx는 동일한 프로세스 내에서 다른 JPype 소비자 (예: PyGhidra)와 공존할 수 있습니다. JVM이 이미 실행 중이면 pyjadx.start()는 기존 클래스패스에 JADX JAR을 추가합니다. 그렇지 않으면 새로 시작합니다.

root@kitploit:~
import pyghidra
pyghidra.start()  # Ghidra용 JVM 시작

import pyjadx
pyjadx.start()    # 기존 JVM에 JADX JAR 추가 – 충돌 없음

설정

사용자 정의 JADX 설치:

root@kitploit:~
# 환경 변수 사용
# export JADX_HOME=/opt/jadx

# 또는 런타임 시
import pyjadx
pyjadx.start(jadx_home="/opt/jadx")

JAR 캐싱: JADX JAR은 최초 사용 시 Maven Central에서 자동 다운로드되며 ~/.pyjadx/jars/<version>/에 캐시됩니다.

라이선스

MIT

도구 다운로드
매개변수설명
pathAPK 또는 DEX 파일 경로
threadsJADX 스레드 풀 크기 (None = CPU 코어 수)
mode"auto", "restructure", "simple", "fallback" 중 하나
code_cacheFalse = 메모리 내 캐시 (기본값), True = 디스크 기반
속성타입설명
classeslist[JavaClass]모든 DEX 파일의 최상위 클래스
packageslist[JavaPackage]패키지 수준 탐색
class_countint최상위 클래스 개수
javaJObject내부 jadx.api.JadxDecompiler로의 탈출구
메서드설명
load()클래스 로드 및 해석 (__enter__에서 호출)
close()리소스 해제 (__exit__에서 호출)
decompile_all()모든 클래스 조기 디컴파일
search_class(name)정규화된 이름으로 클래스 검색
속성타입설명
namestr짧은 이름 ("MainActivity")
full_namestr정규화된 이름 ("com.example.MainActivity")
packagestr패키지 이름
codestr디컴파일된 Java 소스 (지연, 캐시)
smalistrSmali 디스어셈블리 (지연, 캐시)
methodslist[JavaMethod]이 클래스의 메서드
fieldslist[JavaField]이 클래스의 필드
inner_classeslist[JavaClass]내부/익명 클래스
declaring_classJavaClass | None부모 클래스 (내부 클래스인 경우)
top_classJavaClass최외곽 포함 클래스
dependencieslist[JavaClass]이 클래스가 의존하는 클래스
is_innerbool내부 클래스 여부
javaJObject내부 jadx.api.JavaClass로의 탈출구
속성타입설명
namestr메서드 이름
full_namestr클래스 포함 정규화된 이름
codestr디컴파일된 소스 (지연, 캐시)
callerslist[JavaMethod]이 메서드를 호출하는 메서드 (지연, 캐시)
calleeslist[JavaMethod]이 메서드가 호출하는 메서드 (지연, 캐시)
override_relatedlist[JavaMethod]양방향 오버라이드 체인
declaring_classJavaClass이 메서드가 속한 클래스
javaJObject내부 jadx.api.JavaMethod로의 탈출구
속성타입설명
namestr필드 이름
full_namestr클래스 포함 정규화된 이름
typestr필드 타입 (문자열)
callerslist[JavaMethod]이 필드를 참조하는 메서드 (지연, 캐시)
declaring_classJavaClass이 필드가 속한 클래스
javaJObject내부 jadx.api.JavaField로의 탈출구
속성타입설명
namestr전체 패키지 이름
classeslist[JavaClass]이 패키지의 클래스
sub_packageslist[JavaPackage]하위 패키지
javaJObject내부 jadx.api.JavaPackage로의 탈출구