Dexcalibur:把 APK 逆向分析、Frida Hook 和日志串起来的 Android 工作台
原文作者:爱折腾的哈哈亭 原文链接:Dexcalibur:把 APK 逆向分析、Frida Hook 和日志串起来 项目地址:github.com/FrenchYeti/dexcalibur 当前版本:v0.7.10 | ⭐128 | 594 commits | Apache-2.0
解决的问题
Android 逆向做得多的同学一定熟悉这个场景:
一个窗口里看 jadx,一个终端里跑 Frida,一个文件夹里放脚本,旁边还要手记类名、方法名、权限和日志。复盘的时候线索全散在不同工具里,Hook 脚本改了又改,静态分析看到的可疑方法要手动去 Frida 里验证……
Dexcalibur 的定位就是解决这个”线索太散、Hook 不是一次性动作、静态和动态结果需要互相补“的问题。
它不是要替代 jadx 或 Frida,而是把这两者之间那段”整理和串联”的工作接起来。
核心能力
工作台模式
与 jadx(打开一个文件)不同,Dexcalibur 是围绕项目组织的:
创建项目 → 导入 APK / 连接设备 →
静态分析(类/方法/Manifest/权限)
→ Hook 生成(自动或手动)
→ 运行时数据记录
→ 结果整理(在同一个工作台)
创建项目时可以从 APK 导入,也可以围绕已连接设备里的应用做分析——更贴近实际工作流。
动态分析增强静态分析
Dexcalibur 最有特色的设计是用动态分析来增强静态分析的启发式效果:
- 运行时反编译/反汇编被拦截的字节码
- 在方法被实际调用时自动记录入参、出参
- 通过运行时信息验证静态分析阶段的推断
这与工具链中其他工具的分工关系:
| 工具 | 定位 | 适合做什么 |
|---|---|---|
| jadx | 静态阅读 | 看 Java/Kotlin 反编译结果、类关系、代码逻辑 |
| Frida | 运行时验证 | Hook 方法、改参数、看返回值、验证猜想 |
| Dexcalibur | 项目化分析 | 把 APK、设备、Hook、日志、方法搜索和分析结果放在一个工作台 |
Smali VM(独特亮点)
Dexcalibur 内置了一个 Smali VM —— 可以执行部分 Smali 字节码片段,生成 Dexcalibur IR(中间表示)。支持两级简化:
- 第1级:保留完整的 CFG(控制流图)
- 第2级:移除 opaque predicate、无用 goto、解析
Method.invoke()等
这意味着你可以在分析中直接运行一小段 Smali 来验证行为,而不用每次都启动 Frida。
Hook 管理器
- 自动化 Hook 生成 —— 搜索到可疑方法后一键生成 Hook
- Hook 消息管理 —— 所有运行时数据统一视图
- 支持反复验证同一批方法 —— 项目不会丢失之前的配置
安装与启动
基础安装
npm install -g dexcalibur
# 启动
dexcalibur
启动后默认访问 http://127.0.0.1:8000。
环境要求
| 依赖 | 版本要求 |
|---|---|
| Node.js | 12.x+ |
| Java | 8+ |
| Frida | 12.x+ |
| ADB | 可识别真机/模拟器 |
首次配置时会自动下载 Android platform tools、APKtool 等内容。
Docker 方式
docker-compose build android-dexcalibur
docker run --rm -it --net=host \
-v /tmp/dexcalibur:/shared \
-p 8000:8000 \
dexcalibur:2023.01 /bin/bash
实际使用体验
Dexcalibur 的核心价值在于把一次分析沉淀成项目。
对比一下流程:
传统方式:
jadx 分析 → 记下可疑类和方法
→ 手写 Frida 脚本
→ 终端跑脚本看日志
→ 发现新线索 → 回 jadx 重新翻
→ 改了脚本再跑
→ 复盘时:记在本子上的东西在哪?
Dexcalibur 方式:
创建项目 → 导入 APK
→ 静态分析自动展开类和方法关系
→ 搜索可疑方法 → 自动生成 Hook
→ 运行时数据自动记录到项目
→ 同一界面完成静态→动态→回查
→ 下次打开项目继续
Hook 控制页面把运行时操作和日志放在一起,适合反复验证同一批方法。
局限
选择工具需要了解它的边界:
| 局限 | 说明 |
|---|---|
| 不支持 Native Hook | 不能为 JNI 库中的 Native 函数生成 Hook 源码,需手动用 Frida Interceptor |
| 分析精度依赖 API 镜像 | 使用 SDK Android.jar 会遗漏内部 API,从真实设备提取 boot.oat 效果更好 |
| 项目停滞 | 最后提交 2021 年,正在迁移至 Dexcalibur 2.0(代号 Reversense)但进展未知 |
| 无身份认证 | 同网络下任何人都可发请求,生产环境需注意 |
| 单设备插桩 | 不能同时为多个设备生成插桩 |
适合谁用
- ✅ 中度以上 Android 逆向工程师 —— 如果你经常需要反复分析同一个 App,Dexcalibur 的项目化能力会大幅提升效率
- ✅ 需要团队协作的场景 —— 基于 Web,多人可共享分析结果
- ⚠️ 初学者 —— 建议先掌握 jadx + Frida 的基础操作,再引入 Dexcalibur 作为项目管理工具
- ❌ 只做临时逆向 —— 如果只是查一个方法就完事,用 jadx 加手写 Frida 脚本更直接
相关工具链
| 项目 | 说明 | 地址 |
|---|---|---|
| Objection | 基于 Frida 的移动探索工具(运行时) | github.com/sensepost/objection |
| r2frida | radare2 + Frida 集成 | github.com/nowsecure/r2frida |
| Androguard | Python 逆向分析工具集 | github.com/androguard/androguard |
| awesome-frida | Frida 资源汇总 | github.com/dweinstein/awesome-frida |
参考来源:
- Dexcalibur — FrenchYeti
- Dexcalibur:把 APK 逆向分析、Frida Hook 和日志串起来 — 爱折腾的哈哈亭,2026-06-18
文档信息
- 本文作者:zhupite
- 本文链接:https://zhupite.com/sec/dexcalibur-android-re-workbench.html
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)