graph LR
PyQBDI["PyQBDI"]
QBDIPreload["QBDIPreload"]
Frida_Integration["Frida Integration"]
Core_Instrumentation_Engine["Core Instrumentation Engine"]
PyQBDI -- "uses" --> Core_Instrumentation_Engine
QBDIPreload -- "uses" --> Core_Instrumentation_Engine
Frida_Integration -- "uses" --> Core_Instrumentation_Engine
PyQBDI -- "interacts with" --> QBDIPreload
One paragraph explaining the functionality which is represented by this graph. What the main flow is and what is its purpose.
PyQBDI serves as the official Python binding for the QBDI core engine. It translates QBDI's C++ API into a Pythonic interface, allowing developers and security researchers to leverage QBDI's instruction-level instrumentation, memory analysis, and callback mechanisms directly within Python scripts. This enables rapid prototyping, scripting of complex analysis workflows, and seamless integration with the vast Python ecosystem of security tools.
Related Classes/Methods:
VM.cppCallback.cppInstAnalysis.cppMemory.cppErrors.cppLogs.cppRange.cppState.cppOptions.cpppyqbdi_module.cpppyqbdipreload.py
QBDIPreload is a utility designed to inject the QBDI library into a target process at startup. It achieves this by leveraging dynamic library preloading mechanisms specific to different operating systems (e.g., LD_PRELOAD on Linux, DYLD_INSERT_LIBRARIES on macOS, or DLL injection on Windows). This eliminates the need to modify the target application's source code or attach a debugger, simplifying the process of instrumenting black-box binaries for dynamic analysis, fuzzing, or malware research.
Related Classes/Methods:
linux_X86_64.cosx_AARCH64.cwin_preload.cQBDIPreload.hlinux_AARCH64.cosx_AARCH64.clinux_ARM.clinux_X86.cosx_X86.clinux_X86_64.cosx_X86_64.c
This component provides a JavaScript-based integration with the Frida dynamic instrumentation toolkit. It allows users to combine Frida's high-level hooking and introspection capabilities with QBDI's fine-grained, instruction-level instrumentation. This synergy enables more sophisticated and flexible dynamic analysis scenarios, leveraging the strengths of both frameworks for tasks like API monitoring, function hooking, and deep code analysis.
Related Classes/Methods:
frida-qbdi.js
The Core Instrumentation Engine represents the fundamental C++ functionalities of QBDI, including the Virtual Machine (QBDI::VM), callback mechanisms (QBDI::Callback), and platform-specific functionalities (QBDI::Platform). It provides the low-level instruction-level instrumentation capabilities that other components leverage.
Related Classes/Methods:
VM.cppVM_C.cppEngine.cppEngine.hInstAnalysis.cppSystem_generic.cppVM.hCallback.hPlatform.h