Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
pyjadx — Python bindings per JADX. | Kitploit
Strumenti/GitHubGitHub/amruth-sn/pyjadx
Sicurezza AndroidAnalisi StaticaAnalisi del CodiceReverse EngineeringSicurezza MobileAnalisi di Binari
GitHubamruth-sn/pyjadx

pyjadx

Python bindings per JADX.

Vedi Repository
625 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

pyjadx

Binding Python per JADX tramite JPype. Decompila file APK e DEX Android in codice Java da Python.

root@kitploit:~
from pyjadx import Jadx

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

Perché pyjadx?

JADX è il decompilatore open-source leader per Android — produce codice Java/Kotlin pulito dal bytecode Dalvik, preservando gerarchie di classi, generici, gestione delle eccezioni e annotazioni. pyjadx porta tutto questo in Python senza l'overhead dei sottoprocessi: JADX gira in-process tramite JPype.

Installazione

root@kitploit:~
pip install pyjadx

Requisiti: JDK 11+ (i JAR di JADX vengono scaricati automaticamente al primo utilizzo).

Avvio rapido

root@kitploit:~
from pyjadx import Jadx

with Jadx("app.apk") as jadx:
    # Tutte le classi di primo livello (classi interne tramite cls.inner_classes)
    for cls in jadx.classes:
        print(cls.full_name, len(cls.methods), "metodi")

    # Ricerca per nome completamente qualificato
    main = jadx.search_class("com.example.MainActivity")
    if main:
        print(main.code)

    # Decompilazione a livello di metodo
    for method in main.methods:
        print(f"{method.name}: {method.code}")

    # Riferimenti incrociati
    for method in main.methods:
        print(f"{method.name} chiamato da: {[c.name for c in method.callers]}")

    # Navigazione dei pacchetti
    for pkg in jadx.packages:
        print(pkg.name, len(pkg.classes), "classi")

Input supportati

FormatoEsempio
APKJadx("app.apk")
DEXJadx("classes.dex")
APK multi-DEXGestito in modo trasparente — tutte le classi unite

Riferimento API

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

Punto di ingresso principale. Usare come context manager o chiamare load()/close() manualmente.

Proprietà:

Metodi:

JavaClass

JavaMethod

JavaField

JavaPackage

Vano tecnico

Ogni wrapper espone l'oggetto Java JADX sottostante tramite .java. Questo permette di chiamare qualsiasi API JADX non ancora coperta dal wrapper:

root@kitploit:~
with Jadx("app.apk") as jadx:
    cls = jadx.search_class("com.example.Foo")
    # Chiama direttamente l'API Java di JADX
    code_info = cls.java.getCodeInfo()

Coesistenza JVM

pyjadx coesiste con altri consumatori JPype (es. PyGhidra) nello stesso processo. Se una JVM è già in esecuzione, pyjadx.start() aggiunge i JAR di JADX al classpath esistente. In caso contrario, ne avvia una.

root@kitploit:~
import pyghidra
pyghidra.start()  # avvia la JVM per Ghidra

import pyjadx
pyjadx.start()    # aggiunge i JAR di JADX alla JVM esistente — nessun conflitto

Configurazione

Installazione personalizzata di JADX:

root@kitploit:~
# Tramite variabile d'ambiente
# export JADX_HOME=/opt/jadx

# Oppure a runtime
import pyjadx
pyjadx.start(jadx_home="/opt/jadx")

Cache JAR: I JAR di JADX vengono scaricati automaticamente da Maven Central al primo utilizzo e memorizzati nella cache in ~/.pyjadx/jars/<version>/.

Licenza

MIT

Scarica lo strumento
ParametroDescrizione
pathPercorso del file APK o DEX
threadsDimensione del pool di thread di JADX (None = numero di CPU)
mode"auto", "restructure", "simple" o "fallback"
code_cacheFalse = cache in memoria (valore predefinito), True = cache su disco
ProprietàTipoDescrizione
classeslist[JavaClass]Classi di primo livello in tutti i file DEX
packageslist[JavaPackage]Navigazione a livello di pacchetto
class_countintNumero di classi di primo livello
javaJObjectVano tecnico per l'oggetto jadx.api.JadxDecompiler sottostante
MetodoDescrizione
load()Carica e risolve le classi (chiamato da __enter__)
close()Rilascia le risorse (chiamato da __exit__)
decompile_all()Decompila eagermente tutte le classi
search_class(name)Trova una classe per nome completamente qualificato
ProprietàTipoDescrizione
namestrNome breve ("MainActivity")
full_namestrNome completamente qualificato ("com.example.MainActivity")
packagestrNome del pacchetto
codestrSorgente Java decompilato (lazy, in cache)
smalistrDisassemblato Smali (lazy, in cache)
methodslist[JavaMethod]Metodi in questa classe
fieldslist[JavaField]Campi in questa classe
inner_classeslist[JavaClass]Classi interne/anonymous
declaring_classJavaClass | NoneClasse padre (se interna)
top_classJavaClassClasse contenitore più esterna
dependencieslist[JavaClass]Classi da cui questa dipende
is_innerboolSe è una classe interna
javaJObjectVano tecnico per jadx.api.JavaClass
ProprietàTipoDescrizione
namestrNome del metodo
full_namestrNome completamente qualificato con classe
codestrSorgente decompilato (lazy, in cache)
callerslist[JavaMethod]Metodi che chiamano questo (lazy, in cache)
calleeslist[JavaMethod]Metodi chiamati da questo (lazy, in cache)
override_relatedlist[JavaMethod]Catena bidirezionale di override
declaring_classJavaClassClasse a cui appartiene il metodo
javaJObjectVano tecnico per jadx.api.JavaMethod
ProprietàTipoDescrizione
namestrNome del campo
full_namestrNome completamente qualificato con classe
typestrTipo del campo come stringa
callerslist[JavaMethod]Metodi che referenziano questo campo (lazy, in cache)
declaring_classJavaClassClasse a cui appartiene il campo
javaJObjectVano tecnico per jadx.api.JavaField
ProprietàTipoDescrizione
namestrNome completo del pacchetto
classeslist[JavaClass]Classi in questo pacchetto
sub_packageslist[JavaPackage]Sotto-pacchetti
javaJObjectVano tecnico per jadx.api.JavaPackage