Quarkslab动态二进制仪器(QBDI)是一个模块化,跨平台和跨架构DBI框架。它旨在支持Linux,MacOS,Android,iOS和Windows操作系统,在X86,X86-64,ARM和AARCH64架构上运行。除C/C ++ API外,脚本QBDI还可以使用Python和JS/Frida绑定。有关什么是DBI框架以及QBDI工作方式的信息可以在文档介绍中找到。
QBDI模块化意味着它不包含首选注射方法,并且设计用于与外部注射工具一起使用。 QBDI包括用于动态可执行文件(qbdipreload)的微小(基于LD_PRELOAD )的Linux和MacOS喷油器。 QBDI还与参考动态仪器工具包Frida完全集成在一起,使任何人都可以使用其合并功能。
当前的限制是QBDI不处理信号,多线程(不处理新线程创建)和C ++异常机制。但是,这些与系统相关的功能可能不是核心库(KISS)的一部分,并且应该集成为新层(待确定)。
| 中央处理器 | 操作系统 | 执行 | 内存访问信息 |
|---|---|---|---|
| X86-64 | Android,Linux,MacOS,Windows | 支持 | 支持 |
| x86 | Android,Linux,MacOS,Windows | 支持 | 支持 |
| 手臂 | Android,Linux | 支持(*) | 支持(*) |
| aarch64 | Android,Linux,MacOS | 支持(*) | 支持(*) |
* ARM和AARCH64指令集得到了支持,但在早期支持中得到了支持。
稳定的



开发



每个新的QBDI版本均已编译并在GitHub发行页面上提供。
PYQBDI可通过PYPI获得。可以使用以下命令下载或安装轮套件:
PIP安装pyqbdi
PYQBDI软件包具有独立的独立于C/C ++软件包。
QBDI项目没有严格的开发时间表或计划发布计划。所有新功能和修复程序都合并到dev-next分支上。 Devel软件包可以在:
为了构建此项目,您的系统需要以下依赖关系:
LLVM的本地版本是在QBDI中静态构建的,因为QBDI使用了未经常规LLVM安装导出的私有API,并且因为我们的代码仅与这些API的特定版本兼容。
QBDI构建系统依赖于CMAKE,需要传递构建配置标志。为了帮助此步骤,我们为遵循命名模式config-OS-ARCH.sh常见构建配置提供了Shell脚本。如果要在调试模式或交叉编译QBDI中进行编译,则需要修改这些脚本。
在源树的根部创建一个新目录,并执行Linux配置脚本:
mkdir构建 CD构建 ../cmake/config/config-linux-x86_64.sh 忍者
您可以按照与X86-64相同的说明进行操作,但是请使用config-linux-X86.sh配置脚本。
在MacOS上编译QBDI需要几件事:
xcode-select --install )port install cmake wget ninja )满足要求后,在源树的根部创建一个新目录,并执行MacOS配置脚本:
mkdir构建 CD构建 ../cmake/config/config-macos-x86_64.sh 忍者
在Windows上建立纯窗户需要纯Windows安装Python 3 (从官方包装中,这是强制性的),以建立我们的依赖性(我们真的希望将来能改善这一点)。它还需要最新的Cmake和Ninja。
首先,必须设置Visual Studio环境。这可以通过以下命令来完成:
“ C: Program Files(X86) Microsoft Visual Studio 2019 Community VC Auxiliary build build vcvarsall.bat” x64
然后,必须运行以下命令:
mkdir构建 CD构建 Python ../cmake/config/config-win-x86_64.py 忍者
Android的交叉编译需要在工作站上安装NDK(或SDK)。目前,它仅在Linux下进行了测试。如果尚未安装,您可以通过官方网站下载最新的Android NDK软件包并提取它。之后,需要自定义config-android-*.sh配置脚本以匹配您的NDK安装目录和目标平台。
#配置和编译QBDI x86_64与ndk mkdir build && cd build ndk_path = <your_ndk_path> ../cmake/config/config-android-x86_64.sh 忍者 #与SDK配置和编译QBDI X86 mkdir build && cd build android_sdk_root = <your_sdk_path> ../cmake/config/config-android-x86.sh 忍者
可以通过仅将'-DQBDI_TOOLS_PYQBDI = ON'选项构建到CMAKE构建系统来构建Pyqdbi库(除了轮毂套件外)。
但是,如果要构建轮套,可以运行以下命令:
Python -M PIP安装 - 升级PIP Python -M PIP安装setuptools轮构建 Python -M构建-W
对于X86体系结构,必须使用32位版本的Python,而X86-64体系结构则需要64位。