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

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

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

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

工具目录

分类

查看所有分类
Loading categories
dexcalibur — [官方] Android逆向工程工具,专注于利用Frida进行动态插桩自动化。它能反汇编dex文件、进行静态分析、生成钩子、发现反射方法、存储拦截数据并利用这些数据实现新的功能。其目标是成为一款全能的Android逆向工程平台。 | Kitploit
工具/GitHubGitHub/reversenseorg/dexcalibur
Android安全静态分析动态分析 (沙盒)逆向工程调试器模糊测试移动安全二进制分析
GitHubreversenseorg/dexcalibur

dexcalibur

[官方] Android逆向工程工具,专注于利用Frida进行动态插桩自动化。它能反汇编dex文件、进行静态分析、生成钩子、发现反射方法、存储拦截数据并利用这些数据实现新的功能。其目标是成为一款全能的Android逆向工程平台。

查看仓库
1.2k1301个月前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

正在开发中:迁移到 Dexcalibur 2.0 | 代号:Reversense

npm dependencies npm npm Docker Automated build Build Status Twitter Follow PRs Welcome Maintainability

Dexcalibur banner

Dexcalibur

Dexcalibur 是一个专注于自动化插桩的 Android 逆向工程平台。其特殊之处在于利用动态分析来改进静态分析启发式方法。旨在自动化与动态插桩相关的繁琐任务,例如:

  • 在运行时反编译/反汇编拦截到的字节码
  • 编写钩子代码并管理大量钩子消息
  • 搜索感兴趣的模式/需要钩取的内容
  • 处理钩子收集的数据(dex 文件、被调用的方法、类加载器等)
  • 等等…… 不仅如此,Dexcalibur 拥有自己的静态分析引擎,并且能够执行 smali 的片段。

想分享一些内容或需要帮助?加入我们的官方聊天群:

Telegram —— 获取回复最快的方式

https://discord.gg/Pfw7Kc3dS

官方文档可在此处获取:网站(正在建设中)

在此查看最新动态:http://docs.dexcalibur.org/News.html

观看 Dexcalibur 演示视频:演示:不到 1 分钟钩取 61 个方法?没问题。(youtube)

如何支持 Dexcalibur?

贡献力量!

不要犹豫!有几种方式可以贡献力量:

  • 提交与修复或新功能相关的拉取请求
  • 创建 issue 以帮助我修补/改进工具
  • 帮助我开发 UI
  • 发送邮件反馈意见
  • 等等……

A. 安装

A.1 全新安装

前往 安装文档

替代方案:使用 Docker

  • 在你的主机上安装 adb(以及合适的 Android 模拟器)
  • docker-compose build android-dexcalibur
  • docker run --rm -it --net=host -v /tmp/dexcalibur:/shared -p 8000:8000 dexcalibur:2023.01 /bin/bash

A.2 启动 Dexcalibur

对于 Linux 和 MacOS

NPM 安装:如果 Dexcalibur 已通过 NPM(-g 选项)全局安装,则在终端运行 $ dexcalibur 即可启动;否则,可在终端中运行 $ node $(node root -g dexcalibur)/dexcalibur/dexcalibur.js。

从源码安装:在 dexcalibur 文件夹中,运行 $ dexcalibur 或 $ node dexcalibur.js。

对于 Windows

NPM 安装:即使 Dexcalibur 已通过 NPM(-g 选项)全局安装,也必须在终端中运行以下命令来启动:node <NPM_ROOT>/dexcalibur/dexcalibur.js。

从源码安装:在 dexcalibur 文件夹中,在终端内运行命令 node dexcalibur.js。

A.3 更新

从版本 <= 0.6.x

你正在使用 Dexcalibur 的旧版本?

按照全新安装的步骤操作,当需要输入工作空间路径时,输入当前工作空间位置即可。

从版本 >= 0.7

只需执行:

root@kitploit:~
$ npm install -g dexcalibur

现有配置和工作空间将自动检测。

C. 截图

以下截图展示了运行时 xrefs 的自动更新。

Xref auto update

Features

D. 功能与限制

实际上,最大的限制是 Dexcalibur 无法生成针对本地函数(在 JNI 库中)的钩子源代码。不过,你可以通过编辑钩子手动声明一个 Frida 的 Interceptor。

鉴于 Dexcalibur 目前(暂时)不提供分析本地部分(如 JNI 库或 JNA)的功能,以下仅详细说明与 Java 部分相关的功能与限制。

分析精度取决于分析早期阶段所使用的 Android API 镜像的完整程度。这意味着,如果你使用从 Android SDK 的 android.jar 生成的 DEX 文件,某些对 Android Java API 内部方法、字段或类的引用可能会缺失。如果从实际运行目标 Android 版本的实体设备中提取的 "boot.oat" 文件开始分析,会获得更好的结果。

D.1 功能

D.1.A 静态分析器

TODO:编写文字

D.1.B 钩子管理器

TODO:编写文字

D.1.C Dexcalibur 的 smali 虚拟机

被跟踪的行为

参与“运行 smali (VM)”操作的静态分析器能够发现并接受,但会跟踪以下行为:

  • 目标寄存器越界(寄存器超出 v0 - v255 范围)
  • 源寄存器越界(寄存器超出 v0 - v65535 范围)
  • 检测会隐式抛出内部异常的错误指令
  • 检测不兼容 Android 规范的有效字节码片段
  • 计算未定义数组的长度
  • 填充未定义的数组
  • 等等……

实际上,目前不支持此类无效指令的处理程序/监听器,但会跟踪并呈现事件。

Dexcalibur IR

该虚拟机产生一种自定义的简化中间表示(IR),仅用于帮助分析人员进行分析。

根据调用栈深度和配置的值,IR 可以包含或不包含被调用函数中执行的指令。如果执行进入 try 块并继续返回,但从未执行 catch,则不会呈现 catch 块。实际上,Dexcalibur IR 的目的是仅呈现 VM 上下文中“已执行的内容”或“根据某些符号的值可能被执行的内容”。

Dexcalibur IR 通过移除无用的 goto 和不透明谓词,帮助读取清理后的字节码版本。Dexcalibur IR 可以通过虚拟机在 2 个简化级别生成:

第一级 IR,如果你不信任第二级 IR,可以使用它:

  • 无 CFG 简化:呈现条件跳转和无条件跳转。
  • 呈现对寄存器的每次移动。

第二级:

  • 如果寄存器在使用前未被未知值修改,则隐藏赋值。
  • 移除始终为 TRUE/FALSE 的谓词。
  • 在某些条件下移除无条件跳转(如 goto):目标基本块的前驱唯一等。
  • 如果可能,解析并替换 Method.invoke() 调用为被调用的方法。
  • 如果在抛出异常之前进入 try 块,则不呈现 try 块中的指令。
  • 等等……

Android API 模拟

TODO

详细说明

Smali 虚拟机遵循以下步骤:

  1. 初始化虚拟机:栈内存、堆、类加载器、方法区等。
  2. 虚拟机加载声明该方法的类。
  3. (可选)如果该类有静态块,执行 clinit()。这有助于解决存储在静态属性中的具体值。
  4. 加载方法元数据。
  5. 执行方法的指令,如果启用了 PseudoCodeMaker,则生成 Dexcalibur IR。

虚拟机如何处理 invoke-* 指令?

  1. 发生 invoke-* 时,保存局部符号表,并加载被调用的方法。
  2. 如果声明被调用方法的类尚未加载,则加载该类。
  3. 如果该方法尚未加载,则加载该方法(通过 MethodArea),并通过从调用者的符号表导入参数符号初始化其局部符号表。
  4. 将被调用的方法推入调用栈(StackMemory)。
  5. 执行方法指令。
  6. 返回值被推入栈内存。
  7. 调用者重新获得控制流。

D.1.D 应用拓扑分析器

清单分析(有限)

在首次运行之前,会解析应用程序的 Android 清单。实际上,在此阶段会检测到清单中的异常,例如不安全的配置。

Android 清单解析的唯一目的是为其他类型的分析器提供数据。

权限分析

从清单中提取的每个权限都会被列出、识别,并与目标 Android API 版本的 Android 规范进行比较。

Dexcalibur 仅在部分情况下提供权限用途描述、最低 Android API 版本等信息。

Activity 分析

Provider 分析

Service 分析

Receiver 分析

D.1.E 运行时监控(未实现)

网络监控

Intent 监控

文件访问监控

D.1.F 协作功能

找不到多用户菜单?没问题,虽然没有菜单,但可以实现最基本的协作工作。

Dexcalibur 运行一个 Web 服务器。因此,如果多个人位于此 Web 服务器的同一网络,并且主机防火墙配置正确,你们就可以多人同时处理同一个 Dexcalibur 实例。

当前限制包括:

  • 无认证: 网络中的任何人都可以向 Dexcalibur 实例发送请求,并通过搜索引擎对主机进行远程代码执行(RCE)。
  • 无身份标识: 修改不会被跟踪,因此如果有人重命名了一个符号,你将无法知道是谁重命名的。类似情况:你无法知道是谁创建了特定的钩子。
  • 单设备插桩: 如果多个设备连接到 Dexcalibur 主机,即使你可以选择要插桩的设备,插桩和钩子消息也会关联到最后选择的设备。因此,你无法同时为多个设备生成插桩。

E. Github 贡献者

特别感谢贡献者:

  • ubamrein
  • jhscheer
  • eybisi
  • monperrus
  • cryptax

F. 故障排除

F.1 Dexcalibur 继续以“安装模式”启动

深入排查之前:

  • 确保你已连接到互联网:安装期间会下载 Apktool 和目标平台
  • 你是否尝试过通过执行 dexcalibur --reinstall 命令重新安装?如果没有,请尝试。

首先,检查全局设置是否已保存到 <用户目录>/.dexcalibur/

root@kitploit:~
$ ls -la ~/.dexcalibur      

total 8
drwxr-xr-x   3 test_user  staff    96 29 avr 11:41 .
drwxr-xr-x+ 87 test_user  staff  2784 29 avr 11:47 ..
-rw-r--r--   1 test_user  staff   204 29 avr 11:41 config.json


$ cat ~/.dexcalibur/config.json 

{
    "workspace":"/Users/test_user/dexcaliburWS3",
    "registry":"https://github.com/FrenchYeti/dexcalibur-registry/raw/master/",
    "registryAPI":"https://api.github.com/repos/FrenchYeti/dexcalibur-registry/contents/"
}

接下来,检查 Dexcalibur 工作空间的结构是否如下(/api 文件夹的内容可能有所不同)。

root@kitploit:~
$ ls -la ~/dexcaliburWS/.dxc/*
/Users/test_user/dexcaliburWS/.dxc/api:
total 0
drwxr-xr-x  3 test_user  staff   96 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..
drwxr-xr-x  8 test_user  staff  256 29 avr 11:41 sdk_androidapi_29_google

/Users/test_user/dexcaliburWS/.dxc/bin:
total 34824
drwxr-xr-x   4 test_user  staff       128 29 avr 11:41 .
drwxr-xr-x   7 test_user  staff       224 29 avr 11:41 ..
-rwxr-xr-x   1 test_user  staff  17661172 29 avr 11:41 apktool.jar
drwxr-xr-x  18 test_user  staff       576 29 avr 11:41 platform-tools

/Users/test_user/dexcaliburWS/.dxc/cfg:
total 8
drwxr-xr-x  3 test_user  staff   96 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..
-rw-r--r--  1 test_user  staff  314 29 avr 11:41 config.json

/Users/test_user/dexcaliburWS/.dxc/dev:
total 0
drwxr-xr-x  2 test_user  staff   64 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..

/Users/test_user/dexcaliburWS/.dxc/tmp:
total 0
drwxr-xr-x  2 test_user  staff   64 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..

G. 常见问题

我的设备未出现在设备列表中

如果你使用通过 USB 连接的物理设备,请确保已启用开发者模式和USB 调试。

如果你使用虚拟设备,请前往 /splash.html,选择 Device Manager,点击 Connect over TCP ... 并按照说明操作。如果你不知道设备的 IP 地址,请勾选 automatic configuration 复选框,让 Dexcalibur 自动检测。

USB 调试已启用,但我的设备未出现在设备列表中

  • 插拔 USB 并确保你的计算机已获得授权。
  • 选择文件传输模式。

为什么要注册新设备?

你需要先注册目标设备,才能使用它。 注册过程中,Dexcalibur 会收集设备元数据并推送兼容版本的 Frida 服务器。

这些元数据用于选择合适的 frida-server 和 frida-gadget 目标。

我的设备已列在 Device Manager 中,但无法注册

如果设备列表中某行出现红色感叹号 !,则表示你的桌面未获得设备授权。你可能需要确认授权。

如果你的设备已列在 DeviceManager 中,并且 online 列已勾选,则点击 enroll。

G.1 我的设备已列在 Device Manager 中

如果你的设备已列在 DeviceManager 中,并且 online 列已勾选,则点击 enroll。

如何使用模拟器代替物理设备?

版本 < v0.7 的 Dexcalibur 由于 ADB 输出解析不完整,无法自动检测并使用模拟设备。

从版本 >= v0.7 开始,一旦你的虚拟设备运行起来,请前往 /splash.html 或点击导航栏中的 DEXCALIBUR。 点击左侧菜单中的 Device Manager 按钮,然后点击表格顶部的 Refresh 按钮。

你应该会看到一行以你的虚拟设备 ADB ID 开头的行。

如何通过 TCP 使用设备?

首先,与任何目标设备一样,你应该注册它。

点击 Connect over TCP ... 添加新的 TCP 设备,或通过 TCP 连接已注册的设备。

如果设备从未注册过,则通过 TCP 进行注册。 在某些情况下,通过 TCP 连接比通过 USB 慢。因此注册可能需要额外时间。

如果设备已通过 USB 注册,则该设备的新首选传输类型变为 TCP。

如何为 Dexcalibur 做贡献?

在此仓库创建拉取请求或创建 issue。

如何为文档做贡献?

在 dexcalibur-doc 仓库创建拉取请求。

文档可在此处(文档网站)和此处(Wiki)获取。

H. 赞助商

https://www.jetbrains.com/?from=dexcalibur
他们提供了 All Products 许可证 <3

I. 资源

目前关于 Dexcalibur 的文档和培训资源很少。如果你成功使用 Dexcalibur 赢得了 CTF 挑战或发现了漏洞,我强烈鼓励你分享经验。

  • THCon 2020
  • SSTIC 2020
  • Pass the SALT 2019 幻灯片 (PDF)
  • Youtube:演示
  • CLI 用户指南
  • 用户指南
  • 故障排除
  • 截图

J. 关于 Dexcalibur 的相关文章

  • Awesome Frida
  • Awesome OpenSource Security
  • n0secure.org - PassTheSalt2019 J2
  • rootshell.be - PassTheSalt2019 Wrap Up
  • PentesterLand - the 5 hacking newsletter 61
  • Technology Knowledge Database
  • Xuanwu Lab Security
  • Mobile Gitbook
  • 274 - AppsSec Ezine
  • ysh329 / Android Reverse Engineering
下载工具