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位。