Динамическая бинарная инструментация Quarkslab (QBDI) представляет собой модульную, кроссплатформенную и перекрестную каркас DBI. Он направлен на поддержку операционных систем Linux, MacOS, Android, iOS и Windows, работающих на x86, X86-64, ARM и AARCH64. В дополнение к API C/C ++, привязки Python и JS/Frida доступны для сценария QBDI. Информация о том, что является структурой DBI и о том, как QBDI можно найти во введении документации.
Модульность QBDI означает, что он не содержит предпочтительного метода впрыска и предназначен для использования в сочетании с инструментом внешнего впрыска. QBDI включает в себя крошечный (на основе LD_PRELOAD ) Linux и MacOS инжектор для динамических исполнителей (QBDipReload). QBDI также полностью интегрирован с FRIDA, эталонным инструментом Dynamic Instrumentation, позволяющий любому использовать свои комбинированные способности.
Текущее ограничение состоит в том, что 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 . Девеловые пакеты могут быть загружены в артефактах:
Чтобы создать этот проект, в вашей системе необходимы следующие зависимости:
Локальная версия LLVM статически построена в QBDI, потому что QBDI использует частные API, не экспортируемые обычными установками LLVM, и потому что наш код совместим только с определенной версией этих API.
Система сборки QBDI полагается на CMAKE и требует прохождения флагов конфигурации сборки. Чтобы помочь с этим шагом, мы предоставляем сценарии оболочки для общих конфигураций сборки, которые следуют за схемой именования конфигурации config-OS-ARCH.sh . Модификация этих сценариев необходимо, если вы хотите компилировать в режиме отладки или перекрестной компиляции QBDI.
Создайте новый каталог в корне дерева источника и выполните скрипт конфигурации Linux:
Mkdir Build CD Build ../cmake/config/config-linux-x86_64.sh ниндзя
Вы можете следовать тем же инструкциям, что и для x86-64, но вместо этого используйте скрипт конфигурации config-linux-X86.sh .
Компиляция QBDI на macOS требует нескольких вещей:
xcode-select --install )port install cmake wget ninja )Как только требования будут выполнены, создайте новый каталог в корне дерева источника и выполните скрипт конфигурации macOS:
Mkdir Build CD Build ../cmake/config/config-macos-x86_64.sh ниндзя
Для создания Windows требуется установка Pure Windows Python 3 (из официальных пакетов, это обязательно), чтобы построить наши зависимости (мы действительно надеемся улучшить это в будущем). Это также требует актуального Cmake и Ninja.
Прежде всего, должна быть настроена среда Visual Studio. Это можно сделать с помощью команды, такой как:
"C: Program Files (x86) Microsoft Visual Studio 2019 Community VC Auxiliary build vcvarsall.bat" x64
Затем должны быть выполнены следующие команды:
Mkdir Build CD Build python ../cmake/config/config-win-x86_64.py ниндзя
Поперечивание для Android требует установки NDK (или SDK) на вашей рабочей станции. На данный момент он был протестирован только под Linux. Если еще не установлено, вы можете скачать последний пакет Android NDK через официальный веб -сайт и извлечь его. После этого сценарий конфигурации config-android-*.sh
# Настроить и компилировать QBDI X86_64 с помощью NDK Mkdir Build && CD Build Ndk_path = <your_ndk_path> ../cmake/config/config-android-x86_64.sh ниндзя # Настроить и компилировать QBDI X86 с SDK Mkdir Build && CD Build Android_SDK_ROOT = <YOUR_SDK_PATH> ../cmake/config/config-android-x86.sh ниндзя
Библиотека Pyqdbi (кроме колесного пакета) может быть построена исключительно передавая опцию «-dqbdi_tools_pyqbdi = on '» в систему сборки Cmake.
Однако, если вы хотите построить пакет колеса, вы можете запустить эти команды:
Python -M PIP установка -обновление PIP Python -M PIP установить сборку колес Setuptools python -m build -w
32-разрядная версия Python является обязательной для архитектуры X86, тогда как для архитектуры x86-64 требуется 64-битная архитектура.