Dexcalibur:把 APK 逆向分析、Frida Hook 和日志串起来的 Android 工作台

2026/06/19 sec android · frida · reverse-engineering · dexcalibur · hook 2330 字 · 约 7 分钟 阅读 ...

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.js12.x+
Java8+
Frida12.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
r2fridaradare2 + Frida 集成github.com/nowsecure/r2frida
AndroguardPython 逆向分析工具集github.com/androguard/androguard
awesome-fridaFrida 资源汇总github.com/dweinstein/awesome-frida

参考来源:

  1. Dexcalibur — FrenchYeti
  2. Dexcalibur:把 APK 逆向分析、Frida Hook 和日志串起来 — 爱折腾的哈哈亭,2026-06-18

文档信息