工具
DexKit 混淆 DEX 代码检索库
以 C++ 实现的 DEX 解析库,提供 Kotlin 与 Java API,可加载 APK、DEX 字节数据或应用的类加载器,并按特征而非混淆后的名称查找类、方法和字段。匹配条件可组合包名范围、修饰符与原始访问标志、字段类型、参数类型和返回类型、注解、方法使用的字符串与数值常量以及其调用的方法;批量查询可依据字符串一次定位多个目标,查询结果还提供操作码、调用者、被调用方法和所用字段。其文档以让 Xposed Hook 点在混淆后的不同应用版本间保持可用为主要场景,同样的查询也可用来快速、可编程地检索应用字节码。
使用条件与局限
- 审阅时最新版本为 2.3.0,发布于 2026-09-22,未附带文件;该版本新增读取数值字面量和匹配原始 DEX 访问标志的功能,并优化了缓存与字符串查询。所审阅的 master 提交(2026-10-10)比该标签多两个核心修复。软件包以 org.luckypray:dexkit 发布在 Maven Central;自 2.0 起构件 ID 由 DexKit 改为 dexkit。
- Android 项目需要 JDK 11+、Kotlin 1.5+、AGP 4.2+ 和 minSdkVersion 21+,建议 23+,因为在较低设置下 libdexkit.so 可能因 APK 中的库被压缩而无法加载。自 1.1.0 起也可在 Windows、Linux 和 macOS 桌面上基于源码运行,需用 gcc 或 clang、CMake 以及 Ninja 或 Make 构建,Windows 上使用 MSYS2;CI 会在这三个平台上构建原生库。要查询的 APK、DEX 数据或类加载器由使用者提供;仓库中唯一的应用是项目自己的演示应用。
- 文档将 DexKit 定位为面向 Xposed 模块开发者的工具,README 示例也运行在 Xposed Hook 中;本记录关注的是它对 DEX 代码的查询与检查功能。匹配结果取决于使用者编写的条件,因此只能找出候选的类和成员,而不能恢复原始名称。仓库包含使用 smali 测试样本的单元测试,但所审阅的工作流只构建原生库和软件包;本次审阅未构建或运行任何内容。
- Core/ 以外的部分采用 Apache-2.0,Core/ 中的原生代码采用 LGPL-3.0,但 README 的许可证徽章只链接到 LGPL。README 列出 AOSP 的 slicer、ThreadPool 和 parallel-hashmap 作为第三方来源。用它分析的应用仍受各自条款约束,所审来源未确立与 REA 的关联。
关于此条目
- 类型
- 工具
- 类别
- Android 工具
- 关联
- 基础工具
- 目标
- 应用
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · LuckyPray/DexKit · 修订 f86a036
- doc-source/src/en/guide/home.md GitHub · LuckyPray/DexKit · 修订 f86a036
- doc-source/src/en/guide/quick-start.md GitHub · LuckyPray/DexKit · 修订 f86a036
- doc-source/src/en/guide/run-on-desktop.md GitHub · LuckyPray/DexKit · 修订 f86a036
- dexkit/src/main/java/org/luckypray/dexkit/DexKitBridge.kt GitHub · LuckyPray/DexKit · 修订 f86a036
- .github/workflows/build-native.yml GitHub · LuckyPray/DexKit · 修订 f86a036
- dexkit/src/test GitHub · LuckyPray/DexKit · 修订 f86a036
- LICENSE GitHub · LuckyPray/DexKit · 修订 f86a036
- Core/LICENSE GitHub · LuckyPray/DexKit · 修订 f86a036
- https://github.com/LuckyPray/DexKit/releases/tag/2.3.0