Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
pyjadx — Bindings Python para JADX. | Kitploit
Ferramentas/GitHubGitHub/amruth-sn/pyjadx
Segurança AndroidAnálise EstáticaAnálise de CódigoEngenharia ReversaSegurança MóvelAnálise de Binários
GitHubamruth-sn/pyjadx

pyjadx

Bindings Python para JADX.

Ver Repositório
62há 5 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

pyjadx

Bindings Python para JADX via JPype. Descompila arquivos APK e DEX do Android para código fonte Java a partir do 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)

Por que pyjadx?

O JADX é o principal descompilador Android de código aberto — ele produz código fonte Java/Kotlin limpo a partir do bytecode Dalvik, preservando hierarquias de classes, genéricos, tratamento de exceções e anotações. O pyjadx traz isso para o Python sem a sobrecarga de subprocessos: o JADX é executado no mesmo processo via JPype.

Instalação

root@kitploit:~
pip install pyjadx

Requisitos: JDK 11+ (os JARs do JADX são baixados automaticamente na primeira utilização).

Início rápido

root@kitploit:~
from pyjadx import Jadx

with Jadx("app.apk") as jadx:
    # Todas as classes de nível superior (classes internas via cls.inner_classes)
    for cls in jadx.classes:
        print(cls.full_name, len(cls.methods), "métodos")

    # Pesquisa por nome totalmente qualificado
    main = jadx.search_class("com.example.MainActivity")
    if main:
        print(main.code)

    # Descompilação a nível de método
    for method in main.methods:
        print(f"{method.name}: {method.code}")

    # Referências cruzadas
    for method in main.methods:
        print(f"{method.name} chamado por: {[c.name for c in method.callers]}")

    # Navegação por pacotes
    for pkg in jadx.packages:
        print(pkg.name, len(pkg.classes), "classes")

Entradas suportadas

FormatoExemplo
APKJadx("app.apk")
DEXJadx("classes.dex")
Multi-DEX APKManipulado de forma transparente — todas as classes mescladas

Referência da API

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

Ponto de entrada principal. Use como gerenciador de contexto ou chame load()/close() manualmente.

Propriedades:

Métodos:

JavaClass

JavaMethod

JavaField

JavaPackage

Escape hatch

Cada wrapper expõe seu objeto Java JADX subjacente através de .java. Isso permite que você chame qualquer API do JADX que ainda não encapsulamos:

root@kitploit:~
with Jadx("app.apk") as jadx:
    cls = jadx.search_class("com.example.Foo")
    # Chama a API Java do JADX diretamente
    code_info = cls.java.getCodeInfo()

Coexistência com a JVM

O pyjadx coexiste com outros consumidores do JPype (por exemplo, PyGhidra) no mesmo processo. Se uma JVM já estiver em execução, pyjadx.start() adiciona os JARs do JADX ao classpath existente. Caso contrário, inicia uma.

root@kitploit:~
import pyghidra
pyghidra.start()  # inicia JVM para Ghidra

import pyjadx
pyjadx.start()    # adiciona JARs do JADX à JVM existente — sem conflito

Configuração

Instalação personalizada do JADX:

root@kitploit:~
# Via variável de ambiente
# export JADX_HOME=/opt/jadx

# Ou em tempo de execução
import pyjadx
pyjadx.start(jadx_home="/opt/jadx")

Cache de JARs: Os JARs do JADX são baixados automaticamente do Maven Central na primeira utilização e armazenados em cache em ~/.pyjadx/jars/<version>/.

Licença

MIT

Baixar ferramenta
ParâmetroDescrição
pathCaminho para o arquivo APK ou DEX
threadsTamanho do pool de threads do JADX (None = número de CPUs)
mode"auto", "restructure", "simple" ou "fallback"
code_cacheFalse = cache em memória (padrão), True = cache em disco
PropriedadeTipoDescrição
classeslist[JavaClass]Classes de nível superior em todos os arquivos DEX
packageslist[JavaPackage]Navegação por pacotes
class_countintNúmero de classes de nível superior
javaJObjectEscape hatch para o jadx.api.JadxDecompiler subjacente
MétodoDescrição
load()Carrega e resolve classes (chamado por __enter__)
close()Libera recursos (chamado por __exit__)
decompile_all()Descompila todas as classes imediatamente
search_class(name)Encontra classe pelo nome totalmente qualificado
PropriedadeTipoDescrição
namestrNome curto ("MainActivity")
full_namestrTotalmente qualificado ("com.example.MainActivity")
packagestrNome do pacote
codestrCódigo fonte Java descompilado (preguiçoso, cacheado)
smalistrDisassembly Smali (preguiçoso, cacheado)
methodslist[JavaMethod]Métodos desta classe
fieldslist[JavaField]Campos desta classe
inner_classeslist[JavaClass]Classes internas/anônimas
declaring_classJavaClass | NoneClasse pai (se for interna)
top_classJavaClassClasse envolvente mais externa
dependencieslist[JavaClass]Classes das quais esta depende
is_innerboolSe é uma classe interna
javaJObjectEscape hatch para jadx.api.JavaClass
PropriedadeTipoDescrição
namestrNome do método
full_namestrTotalmente qualificado com classe
codestrCódigo fonte descompilado (preguiçoso, cacheado)
callerslist[JavaMethod]Métodos que chamam este (preguiçoso, cacheado)
calleeslist[JavaMethod]Métodos que este chama (preguiçoso, cacheado)
override_relatedlist[JavaMethod]Cadeia bidirecional de sobrescrita
declaring_classJavaClassClasse à qual este método pertence
javaJObjectEscape hatch para jadx.api.JavaMethod
PropriedadeTipoDescrição
namestrNome do campo
full_namestrTotalmente qualificado com classe
typestrTipo do campo como string
callerslist[JavaMethod]Métodos que referenciam este campo (preguiçoso, cacheado)
declaring_classJavaClassClasse à qual este campo pertence
javaJObjectEscape hatch para jadx.api.JavaField
PropriedadeTipoDescrição
namestrNome completo do pacote
classeslist[JavaClass]Classes neste pacote
sub_packageslist[JavaPackage]Subpacotes
javaJObjectEscape hatch para jadx.api.JavaPackage