Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
pyjadx — JADX 的 Python 绑定。 | Kitploit
工具/GitHubGitHub/amruth-sn/pyjadx
Android安全静态分析代码分析逆向工程移动安全二进制分析
GitHubamruth-sn/pyjadx

pyjadx

JADX 的 Python 绑定。

查看仓库
625个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

pyjadx

Python 绑定,通过 JPype 连接 JADX。在 Python 中反编译 Android APK 和 DEX 文件为 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 通过 JPype 将 JADX 集成到 Python 中,无需子进程开销:JADX 在进程中运行。

安装

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), "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} called by: {[c.name for c in method.callers]}")

    # 包导航
    for pkg in jadx.packages:
        print(pkg.name, len(pkg.classes), "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()    # 将 JADX JAR 添加到现有 JVM — 无冲突

配置

自定义 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是否为内部类
javaJObjectjadx.api.JavaClass 的逃生出口
属性类型描述
namestr方法名
full_namestr完全限定名(含类名)
codestr反编译的源代码(惰性,已缓存)
callerslist[JavaMethod]调用此方法的方法(惰性,已缓存)
calleeslist[JavaMethod]此方法调用的方法(惰性,已缓存)
override_relatedlist[JavaMethod]双向重写链
declaring_classJavaClass该方法所属的类
javaJObjectjadx.api.JavaMethod 的逃生出口
属性类型描述
namestr字段名
full_namestr完全限定名(含类名)
typestr字段类型(字符串形式)
callerslist[JavaMethod]引用该字段的方法(惰性,已缓存)
declaring_classJavaClass该字段所属的类
javaJObjectjadx.api.JavaField 的逃生出口
属性类型描述
namestr完整包名
classeslist[JavaClass]该包中的类
sub_packageslist[JavaPackage]子包
javaJObjectjadx.api.JavaPackage 的逃生出口