Quarkslab Dynamic Binary Instrumentation (QBDI)은 모듈 식, 크로스 플랫폼 및 교차 아키텍처 DBI 프레임 워크입니다. Linux, MacOS, Android, iOS 및 Windows 운영 체제를 X86, X86-64, ARM 및 Aarch64 아키텍처에서 지원하는 것을 목표로합니다. C/C ++ API 외에도 Python 및 JS/Frida 바인딩을 스크립트 QBDI에 사용할 수 있습니다. DBI 프레임 워크와 QBDI의 작동 방식에 대한 정보는 문서 소개에서 찾을 수 있습니다.
QBDI 모듈성은 선호되는 주입 방법을 포함하지 않으며 외부 주입 도구와 함께 사용하도록 설계되었습니다. QBDI에는 동적 실행 파이브 (QBDIPRELOAD)를위한 작은 ( LD_PRELOAD 기반) LINUX 및 MACOS 인젝터가 포함되어 있습니다. QBDI는 또한 참조 동적 계측 툴킷 인 Frida와 완전히 통합되어 누구나 자신의 결합 된 전력을 사용할 수 있습니다.
현재 제한 사항은 QBDI가 신호, 멀티 스레딩 (새로운 스레드 생성을 다루지 않음) 및 C ++ 예외 메커니즘을 처리하지 않는다는 것입니다. 그러나 이러한 시스템 의존적 기능은 아마도 핵심 라이브러리 (KISS)의 일부가 아니며 새로운 계층으로 통합되어야합니다 (방법).
| CPU | 운영 체제 | 실행 | 메모리 액세스 정보 |
|---|---|---|---|
| x86-64 | Android, Linux, MacOS, Windows | 지원 | 지원 |
| x86 | Android, Linux, MacOS, Windows | 지원 | 지원 |
| 팔 | 안드로이드, 리눅스 | 지원 (*) | 지원 (*) |
| Aarch64 | Android, Linux, MacOS | 지원 (*) | 지원 (*) |
* ARM 및 AARCH64 명령 세트는 지원되지만 조기 지원됩니다.
안정적인



데브



모든 새로운 QBDI 버전은 편집되어 GitHub 릴리스 페이지에서 사용할 수 있습니다.
PYQBDI는 PYPI를 통해 제공됩니다. 휠 패키지는 다음 명령으로 다운로드하거나 설치할 수 있습니다.
PIP 설치 PYQBDI
PYQBDI 패키지는 C/C ++ 패키지와 완전히 독립적으로 자체 포함됩니다.
QBDI 프로젝트에 대한 엄격한 개발 타임 라인 또는 예약 릴리스 계획은 없습니다. 모든 새로운 기능과 수정 사항은 dev-next 브랜치에 병합됩니다. Devel 패키지는 다음의 인공물에서 다운로드 할 수 있습니다.
이 프로젝트를 구축하려면 시스템에 다음과 같은 종속성이 필요합니다.
LLVM의 로컬 버전은 QBDI가 일반 LLVM 설치로 내보내지 않은 개인 API를 사용하고 코드가 해당 API의 특정 버전과 호환되기 때문에 QBDI 내에 정적으로 구축됩니다.
QBDI 빌드 시스템은 CMAKE에 의존하며 빌드 구성 플래그를 통과해야합니다. 이 단계를 돕기 위해 이름 지정 패턴 config-OS-ARCH.sh 따르는 공통 빌드 구성에 대한 쉘 스크립트를 제공합니다. 디버그 모드에서 컴파일하거나 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를 구축하려면 Python 3 의 순수한 Windows 설치가 필요합니다 (공식 패키지에서는 필수). 또한 최신 CMAKE 및 NINJA가 필요합니다.
우선, 비주얼 스튜디오 환경을 설정해야합니다. 이것은 다음과 같은 명령으로 수행 할 수 있습니다.
"C : Program Files (x86) Microsoft Visual Studio 2019 Community VC auxiliary build vcvarsall.bat"x64
그런 다음 다음 명령을 실행해야합니다.
mkdir 빌드 CD 빌드 Python ../cmake/config/config-win-x86_64.py 닌자
안드로이드를위한 크로스 컴파일은 워크 스테이션에 NDK (또는 SDK)를 설치해야합니다. 현재로서는 Linux에서만 테스트되었습니다. 아직 설치되지 않은 경우 공식 웹 사이트를 통해 최신 Android NDK 패키지를 다운로드하여 추출 할 수 있습니다. 그 후 NDK 설치 디렉토리와 대상 플랫폼과 일치하도록 config-android-*.sh 구성 스크립트를 사용자 정의해야합니다. :
# NDK로 QBDI X86_64를 구성하고 컴파일하십시오 mkdir 빌드 && CD 빌드 ndk_path = <your_ndk_path> ../cmake/config/config-droid-x86_64.sh 닌자 # SDK로 QBDI X86을 구성하고 컴파일합니다 mkdir 빌드 && CD 빌드 android_sdk_root = <your_sdk_path> ../cmake/config/config-droid-x86.sh 닌자
PYQDBI 라이브러리 (휠 패키지 제외)는 '-dqbdi_tools_pyqbdi = on' 옵션을 CMAKE 빌드 시스템에 전달하여 구축 할 수 있습니다.
그러나 휠 패키지를 작성하려면 다음과 같은 명령을 실행할 수 있습니다.
Python -M Pip 설치 -업그레이드 핍 Python -M Pip 설치 SetUptools 휠 빌드 Python -m 빌드 -w
X86 아키텍처에는 32 비트 버전의 Python이 필수적이며 X86-64 아키텍처에는 64 비트가 필요합니다.