工具

QBDI 动态二进制插桩框架

Quarkslab 开发的模块化动态二进制插桩(DBI)框架:在目标进程内部按基本块对程序进行 JIT 重编译,使插桩工具可以在指令执行前后、内存读写以及虚拟机事件上注册回调。引擎以库的形式提供,可在进程中任意位置启动插桩执行,并可通过 C、C++、Python(PyQBDI)或 Frida JavaScript 编写脚本。它不绑定特定注入方式:自带基于 LD_PRELOAD 的 QBDIPreload,用于 Linux 和 macOS 动态可执行文件,并已与 Frida 集成。

使用条件与局限

  • README 的状态表显示,x86-64 和 x86 在 Android、Linux、macOS 和 Windows 上,ARM 在 Android 和 Linux 上,AArch64 在 Android、Linux、macOS 和 iOS 上均支持执行与内存访问信息;iOS 支持被描述为不稳定,且需要越狱设备。审阅时最新版本为 v0.12.1,发布于 2026-01-07,提供 Android、iOS、macOS 和 Windows 软件包;Linux 软件包最后见于 v0.12.0(2025-10-14)。PyPI 上的 PyQBDI 0.12.1 需要 Python 3.8+。
  • 所审阅的 dev-next 提交领先 v0.12.1 共 12 个提交;README 说明所有新功能都合并到该分支,且没有固定的发布计划。从源码构建需要 CMake 3.12+、Ninja 或 Make 以及 C++17 工具链,并会静态构建自带的 LLVM,因为 QBDI 使用特定版本 LLVM 的私有 API;各平台的配置脚本涵盖 Linux、macOS、Windows(需原生 Python 3 和 Visual Studio)以及基于 Android NDK 的交叉编译。
  • README 说明 QBDI 不处理信号、新线程创建和 C++ 异常。其文档还指出,插桩工具与目标程序共用堆和库,因此堆分配器等不可重入代码应交给插桩范围之外的执行代理处理,且操作系统加载器本身无法插桩。用户需自备目标程序和注入途径。
  • LICENSE.txt 说明 QBDI 采用 Apache-2.0 许可,并列出静态链接的组件:LLVM(Apache-2.0 附 LLVM 例外)、spdlog、fmtlib、Catch2、pybind11,以及采用 GPLv3/Apache-2.0 的 SHA-256 实现;GitHub 无法识别这份合并许可文件。本条目未对任何程序进行插桩。

关于此条目

类型
工具
类别
调试与动态分析
关联
基础工具
目标
应用 · 二进制

来源复核于

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

一手来源

  1. README.rst GitHub · QBDI/QBDI · 修订 3318580
  2. README.rst#L18-L52 GitHub · QBDI/QBDI · 修订 3318580
  3. docs/source/intro.rst GitHub · QBDI/QBDI · 修订 3318580
  4. docs/source/api_description.rst GitHub · QBDI/QBDI · 修订 3318580
  5. docs/source/changelog.rst GitHub · QBDI/QBDI · 修订 3318580
  6. LICENSE.txt GitHub · QBDI/QBDI · 修订 3318580
  7. https://github.com/QBDI/QBDI/releases/tag/v0.12.1
  8. https://pypi.org/project/PyQBDI/0.12.1/