Quarkslab Dynamic Binary Instrumentation (QBDI) เป็นเฟรมเวิร์ก DBI แบบแยกส่วนข้ามและข้ามสถาปัตยกรรม มันมีจุดมุ่งหมายเพื่อรองรับ Linux, MacOS, Android, iOS และระบบปฏิบัติการ Windows ที่ทำงานบนสถาปัตยกรรม X86, X86-64, ARM และ ARCH64 นอกจากนี้การผูก C/C ++ API, Python และ JS/Frida ยังมีอยู่ในสคริปต์ QBDI ข้อมูลเกี่ยวกับกรอบ DBI คืออะไรและวิธีการทำงานของ QBDI สามารถพบได้ในการแนะนำเอกสาร
QBDI modularity หมายความว่ามันไม่มีวิธีการฉีดที่ต้องการและได้รับการออกแบบให้ใช้ร่วมกับเครื่องมือฉีดภายนอก QBDI มี Linux และ Linux ขนาดเล็ก ( LD_PRELOAD ) และหัวฉีด MacOS สำหรับการทำงานแบบไดนามิก (QBDIPRELOAD) QBDI ยังรวมเข้ากับ Frida ซึ่งเป็นชุดเครื่องมือเครื่องมือวัดแบบไดนามิกอ้างอิงช่วยให้ทุกคนสามารถใช้พลังรวมของพวกเขา
ข้อ จำกัด ในปัจจุบันคือ QBDI ไม่ได้จัดการกับสัญญาณมัลติเธรด (ไม่เกี่ยวข้องกับการสร้างเธรดใหม่) และกลไกข้อยกเว้น C ++ อย่างไรก็ตามคุณสมบัติที่ขึ้นอยู่กับระบบเหล่านั้นอาจไม่ได้เป็นส่วนหนึ่งของห้องสมุดหลัก (KISS) และควรรวมเป็นเลเยอร์ใหม่ (เพื่อกำหนดวิธีการ)
| ซีพียู | ระบบปฏิบัติการ | การประหารชีวิต | ข้อมูลการเข้าถึงหน่วยความจำ |
|---|---|---|---|
| x86-64 | Android, Linux, MacOS, Windows | ที่ได้รับการสนับสนุน | ที่ได้รับการสนับสนุน |
| x86 | Android, Linux, MacOS, Windows | ที่ได้รับการสนับสนุน | ที่ได้รับการสนับสนุน |
| แขน | Android, Linux | รองรับ (*) | รองรับ (*) |
| Aarch64 | Android, Linux, MacOS | รองรับ (*) | รองรับ (*) |
* รองรับชุดคำสั่ง ARCH และ AARCH64 แต่อยู่ในการสนับสนุนก่อน
มั่นคง



คนกิน



ทุกรุ่น QBDI ใหม่จะถูกรวบรวมและให้บริการในหน้า GitHub Release
PYQBDI มีให้บริการผ่าน PYPI แพ็คเกจล้อสามารถดาวน์โหลดหรือติดตั้งได้ด้วยคำสั่งต่อไปนี้:
PIP ติดตั้ง pyqbdi
แพ็คเกจ PYQBDI นั้นมีอยู่ในตัวเองอย่างสมบูรณ์อิสระจากแพ็คเกจ C/C ++
ไม่มีระยะเวลาการพัฒนาที่เข้มงวดหรือแผนการวางจำหน่ายที่กำหนดไว้สำหรับโครงการ QBDI คุณสมบัติและการแก้ไขใหม่ทั้งหมดจะถูกรวมเข้ากับสาขา dev-next สามารถดาวน์โหลดแพ็คเกจได้ในสิ่งประดิษฐ์ของ:
ในการสร้างโครงการนี้จำเป็นต้องมีการพึ่งพาต่อไปนี้ในระบบของคุณ:
LLVM เวอร์ชันท้องถิ่นถูกสร้างขึ้นอย่างคงที่ภายใน QBDI เนื่องจาก QBDI ใช้ API ส่วนตัวที่ไม่ได้ส่งออกโดยการติดตั้ง LLVM ปกติและเนื่องจากรหัสของเราเข้ากันได้กับ API รุ่นเฉพาะเท่านั้น
QBDI Build System ขึ้นอยู่กับ CMAKE และต้องผ่านการสร้างสถานะการกำหนดค่า เพื่อช่วยในขั้นตอนนี้เรามีสคริปต์เชลล์สำหรับการกำหนดค่าการสร้างทั่วไปซึ่งเป็นไปตามรูปแบบการตั้งชื่อ config-OS-ARCH.sh การปรับเปลี่ยนสคริปต์เหล่านี้เป็นสิ่งจำเป็นหากคุณต้องการรวบรวมในโหมดดีบักหรือ QBDI ข้ามคอมไพล์
สร้างไดเรกทอรีใหม่ที่รูทของแผนผังต้นทางและเรียกใช้สคริปต์การกำหนดค่า Linux:
mkdir 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 บิลด์ซีดี ../cmake/config/config-macos-x86_64.sh นินจา
การสร้างบน Windows ต้องใช้การติดตั้ง Windows บริสุทธิ์ของ Python 3 (จากแพ็คเกจอย่างเป็นทางการสิ่งนี้เป็นข้อบังคับ) เพื่อสร้างการพึ่งพาของเรา (เราหวังว่าจะปรับปรุงสิ่งนี้ในอนาคต) นอกจากนี้ยังต้องใช้ CMake และนินจาที่ทันสมัย
ก่อนอื่นต้องตั้งค่าสภาพแวดล้อม Visual Studio สามารถทำได้ด้วยคำสั่งเช่น:
"C: Program Files (x86) Microsoft Visual Studio 2019 Community VC Auxiliary Build vcvarsall.bat" x64
จากนั้นต้องเรียกใช้คำสั่งต่อไปนี้:
mkdir build บิลด์ซีดี 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 นินจา # กำหนดค่าและรวบรวม 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 build
อย่างไรก็ตามหากคุณต้องการสร้างแพ็คเกจล้อคุณสามารถเรียกใช้คำสั่งเหล่านี้:
Python -m Pip Install -U -Upgrade Pip Python -m Pip Install Setuptools Wheel Build Python -m build -w
Python เวอร์ชัน 32 บิตนั้นจำเป็นสำหรับสถาปัตยกรรม x86 ในขณะที่ต้องใช้ 64 บิตสำหรับสถาปัตยกรรม x86-64